Преглед на файлове

Merge branch 'master' of http://111.75.220.136:10030/13246659623/jxyh

13246659623 преди 6 месеца
родител
ревизия
055d629faf
променени са 45 файла, в които са добавени 2760 реда и са изтрити 11179 реда
  1. 0 1301
      src/main/java/fi/cas/formplugin/ApBillListPlugin.java
  2. 0 1301
      src/main/java/fi/cas/formplugin/ArBillListPlugin.java
  3. 54 135
      src/main/java/fi/cas/opplugin/PaymentProcessOpPlugin.java
  4. 46 2
      src/main/java/fi/em/formPlugin/BusinessProcessingConvertPlugIn.java
  5. 53 1
      src/main/java/fi/em/formPlugin/BusinessProcessingEditPlugin.java
  6. 29 0
      src/main/java/fi/em/formPlugin/BusinessProcessingPushSplitPlugin.java
  7. 45 0
      src/main/java/fi/em/formPlugin/BusinessProcessingSplitPlugin.java
  8. 64 7
      src/main/java/fi/em/formPlugin/BusinessProcessingUnAuditEditPlugin.java
  9. 23 0
      src/main/java/fi/em/formPlugin/CostAllocationEditPlugin.java
  10. 7 1
      src/main/java/fi/em/formPlugin/SalaryDistributeEditPlugin.java
  11. 196 59
      src/main/java/fi/em/formPlugin/SubAndAudFormPlugin.java
  12. 49 0
      src/main/java/fi/em/formPlugin/TravelChargePrepaidLoanEditPlugin.java
  13. 178 20
      src/main/java/fi/em/formPlugin/YwclF7ListtenerFromPlugin.java
  14. 26 2
      src/main/java/fi/em/opplugin/AmountOpPlugin.java
  15. 46 0
      src/main/java/fi/em/opplugin/BusinessProcessingSplitOpPlugin.java
  16. 41 0
      src/main/java/fi/em/opplugin/ExpenseAccountFileOpPlugin.java
  17. 4 1
      src/main/java/fi/er/opplugin/FinapbillBeforeF7SelectSample.java
  18. 192 68
      src/main/java/fi/er/opplugin/PublicreimburOpPlugin.java
  19. 137 0
      src/main/java/fi/fa/formPlugin/EcardListPlugin.java
  20. 1011 1011
      src/main/java/fi/fa/formPlugin/FaInventoryTaskListNew.java
  21. 43 6
      src/main/java/fi/fa/opplugin/BusProcessBillOpPlugin.java
  22. 2 0
      src/main/java/fi/fa/opplugin/RealCardBillOpPlugin.java
  23. 1 0
      src/main/java/fi/fa/opplugin/RealCardF7OpPlugin.java
  24. 72 41
      src/main/java/fi/fa/opplugin/utils/ChangeDataUtils.java
  25. 6 6
      src/main/java/kd/bos/login/thirdauth/app/ZSBGAuthtication.java
  26. 17 10
      src/main/java/kd/bos/newdevportal/table/TableListPlugin.java
  27. 0 266
      src/main/java/kd/imc/rim/ApiHttpUtils.java
  28. 0 205
      src/main/java/kd/imc/rim/AwsRecognitionServiceEx.java
  29. 0 3226
      src/main/java/kd/imc/rim/FpzsMainPluginEx.java
  30. 0 129
      src/main/java/kd/imc/rim/InvoiceCollectPluginEx.java
  31. 0 1182
      src/main/java/kd/imc/rim/RecognitionCheckHelperEx.java
  32. 0 727
      src/main/java/kd/imc/rim/RecognitionCheckServiceEx.java
  33. 0 501
      src/main/java/kd/imc/rim/RecognitionCheckTaskEx.java
  34. 0 267
      src/main/java/kd/imc/rim/ScannerServiceEx.java
  35. 0 207
      src/main/java/kd/imc/rim/common/invoice/collector/InvoiceCollectTaskNew.java
  36. 0 310
      src/main/java/kd/imc/rim/utils/CodecUtil.java
  37. 0 118
      src/main/java/kd/imc/rim/utils/FileOutputStreamExample.java
  38. 2 4
      src/main/java/sys/sc/formplugin/CreatDatPlugin.java
  39. 8 18
      src/main/java/sys/sc/formplugin/TestPlugin.java
  40. 1 1
      src/main/java/sys/sc/opplugin/utils/InterFaceImgUtils.java
  41. 3 3
      src/main/java/sys/sc/task/CreatDatDailyTask.java
  42. 1 1
      src/main/java/sys/sc/task/UpdateBankDailyTask.java
  43. 37 41
      src/main/java/sys/sc/task/UpdateDataDailyTask.java
  44. 1 1
      src/main/java/sys/sc/task/UpdateImpairmentDailyTask.java
  45. 365 0
      src/main/java/tmc/bei/task/synTransdetailTask.java

+ 0 - 1301
src/main/java/fi/cas/formplugin/ApBillListPlugin.java

@@ -1,1301 +0,0 @@
-//package fi.cas.formplugin;
-//
-//import com.alibaba.fastjson.JSON;
-//import kd.bos.bill.BillOperationStatus;
-//import kd.bos.bill.BillShowParameter;
-//import kd.bos.bill.OperationStatus;
-//import kd.bos.dataentity.OperateOption;
-//import kd.bos.dataentity.RefObject;
-//import kd.bos.dataentity.entity.DynamicObject;
-//import kd.bos.dataentity.entity.DynamicObjectCollection;
-//import kd.bos.dataentity.resource.ResManager;
-//import kd.bos.dataentity.serialization.SerializationUtils;
-//import kd.bos.dataentity.utils.StringUtils;
-//import kd.bos.entity.EntityMetadataCache;
-//import kd.bos.entity.datamodel.ListSelectedRow;
-//import kd.bos.entity.datamodel.ListSelectedRowCollection;
-//import kd.bos.entity.operate.IEntityOperate;
-//import kd.bos.entity.operate.result.OperationResult;
-//import kd.bos.exception.KDBizException;
-//import kd.bos.filter.FilterColumn;
-//import kd.bos.form.*;
-//import kd.bos.form.control.events.BeforeItemClickEvent;
-//import kd.bos.form.control.events.ItemClickEvent;
-//import kd.bos.form.events.*;
-//import kd.bos.form.operate.AbstractOperate;
-//import kd.bos.form.operate.FormOperate;
-//import kd.bos.form.operate.SignOperateCallback;
-//import kd.bos.list.BillList;
-//import kd.bos.list.ListShowParameter;
-//import kd.bos.list.events.BeforeShowBillFormEvent;
-//import kd.bos.logging.Log;
-//import kd.bos.logging.LogFactory;
-//import kd.bos.mvc.list.ListView;
-//import kd.bos.orm.query.QFilter;
-//import kd.bos.orm.util.CollectionUtils;
-//import kd.bos.servicehelper.BusinessDataServiceHelper;
-//import kd.bos.servicehelper.DispatchServiceHelper;
-//import kd.bos.servicehelper.QueryServiceHelper;
-//import kd.bos.servicehelper.botp.BFTrackerServiceHelper;
-//import kd.bos.servicehelper.operation.OperationServiceHelper;
-//import kd.bos.servicehelper.operation.SaveServiceHelper;
-//import kd.fi.cas.business.errorcode.PaymentErrorCode;
-//import kd.fi.cas.business.helper.PayBillHepler;
-//import kd.fi.cas.business.opservice.impl.PaymentPayImpl;
-//import kd.fi.cas.consts.BillTypeConstants;
-//import kd.fi.cas.enums.*;
-//import kd.fi.cas.formplugin.common.AbstractCasBillListPlugin;
-//import kd.fi.cas.formplugin.helper.InitCheckPluginHelper;
-//import kd.fi.cas.helper.*;
-//import kd.fi.cas.util.EmptyUtil;
-//import org.apache.commons.lang3.tuple.Pair;
-//
-//import java.util.*;
-//import java.util.stream.Collectors;
-//import java.util.stream.Stream;
-//
-///**
-// * 应付销账单列表件
-// * 2024-08-15 wangj
-// * 主要功能:应付销账单标准列表插件改
-// */
-//public class ApBillListPlugin extends AbstractCasBillListPlugin implements SignCallbackLisenter {
-//    private static final String KEY_CHANGECHG_CALLBACK = "KEY_CHANGECHG_CALLBACK";
-//    private static final String BAR_VIEWDIAGRAM = "barviewdiagram";
-//    private static final String KEY_CALLBACK_CHARGEBACK = "CALLBACK_CHARGEBACK";
-//    private static final String KEY_CANCELLATION = "cancellation";
-//    private static final String CONFIRM_DEL_CALLBACK = "CONFIRM_DEL_CALLBACK";
-//    private static final String KEY_DIFFPAY_CALLBACK = "KEY_DIFFPAY_CALLBACK";
-//    private static final String KEY_CLOSECALLBACK_CHARGEBACK = "CALLBACK_SELECTDRAFT";
-//    private static final String BAR_BATCH_INPUT = "batchinput";
-//    private FilterContainerInitArgs initArgs;
-//    private static Log logger = LogFactory.getLog(kd.fi.cas.formplugin.PaymentBillList.class);
-//    private List<String> settleTypes;
-//
-//    public ApBillListPlugin() {
-//        this.settleTypes = Arrays.asList(SettleMentTypeEnum.PROMISSORY.getValue(), SettleMentTypeEnum.CHECK.getValue(), SettleMentTypeEnum.DRAFT.getValue(), SettleMentTypeEnum.BUSINESS.getValue(), SettleMentTypeEnum.BANK.getValue());
-//    }
-//
-//    public boolean isFromControlCenter() {
-//        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
-//        Object isUnTreated = formShowParameter.getCustomParam("isUnTreated");
-//        return EmptyUtil.isEmpty(isUnTreated) ? false : (Boolean)isUnTreated;
-//    }
-//
-//    public boolean isTrack() {
-//        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
-//        Object isTrack = formShowParameter.getCustomParam("isTrack");
-//        return EmptyUtil.isEmpty(isTrack) ? false : (Boolean)isTrack;
-//    }
-//
-//    public void setFilter(SetFilterEvent e) {
-//        super.setFilter(e);
-//        ListShowParameter listShowParameter = (ListShowParameter)this.getView().getFormShowParameter();
-//        String parentFormId = listShowParameter.getParentFormId();
-//        Object isFromTrack = listShowParameter.getCustomParams().getOrDefault("isFromTrack", (Object)null);
-//        PaymentQueryHelper.enhanceNumFilterToIdFilter(e.getQFilters());
-//        logger.info("付款单-调度中心 parentFormId :" + parentFormId + "; === " + this.isFromControlCenter());
-//        if (this.isFromControlCenter() && "fca_control_index".equals(parentFormId)) {
-//            if (e.getMainOrgQFilter() != null) {
-//                e.getMainOrgQFilter().clearNests();
-//            }
-//
-//            Object authOrgIds = listShowParameter.getCustomParam("authOrgIds");
-//            Long p = 0L;
-//            if (authOrgIds instanceof Integer) {
-//                p = ((Integer)authOrgIds).longValue();
-//            } else if (authOrgIds instanceof Long) {
-//                p = (Long)authOrgIds;
-//            } else if (authOrgIds instanceof String) {
-//                p = Long.valueOf(authOrgIds.toString());
-//            }
-//
-//            e.getQFilters().add(PayBillListPlugnHelper.getFcaFilter((String)listShowParameter.getCustomParam("status"), p));
-//        } else if (("cas_apphome_grid".equals(parentFormId) || "fca_apphome".equals(parentFormId) || "fs_apphome".equals(parentFormId)) && (null == isFromTrack || isFromTrack.toString().trim().equals(""))) {
-//            e.getQFilters().add(PayBillListPlugnHelper.getListFilter(listShowParameter.getBillFormId(), (String)listShowParameter.getCustomParam("appid")));
-//        }
-//
-//    }
-//
-//    public void afterBindData(EventObject e) {
-//        super.afterBindData(e);
-//        if (this.isFromControlCenter()) {
-//            String status = (String)this.getView().getFormShowParameter().getCustomParam("status");
-//            if (BillStatusEnum.SAVE.getValue().equals(status)) {
-//                this.getView().setVisible(false, new String[]{"tblnew", "tblcheck", "tblcopy", "tblpay", "barinfochg", "baritemap2", "tblprint"});
-//            } else if (BillStatusEnum.SUBMIT.getValue().equals(status)) {
-//                this.getView().setVisible(false, new String[]{"tblnew", "tblsubmit", "tblcopy", "tblpay", "barinfochg", "baritemap2", "tblprint"});
-//            } else {
-//                this.getView().setVisible(false, new String[]{"tblnew", "tblsubmit", "tblcopy", "tblcheck", "barinfochg", "baritemap2", "tblprint"});
-//            }
-//        }
-//
-//    }
-//
-//    public void beforeItemClick(BeforeItemClickEvent evt) {
-//        String opKey = evt.getOperationKey();
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectRows = billList.getSelectedRows();
-//        Set selectRowsPks;
-//        QFilter[] delFilters;
-//        DynamicObject[] paybills;
-//        if ("delete".equals(opKey) && selectRows.size() > 0) {
-////            selectRowsPks = (Set)selectRows.parallelStream().map((row) -> {
-////                return row.getPrimaryKeyValue();
-////            }).collect(Collectors.toSet());
-////            delFilters = new QFilter[]{new QFilter("id", "in", selectRowsPks), new QFilter("hotaccount", "!=", "2"), new QFilter("sourcebilltype", "=", "cas_recbill")};
-////            paybills = BusinessDataServiceHelper.load("nckd_cas_apbill_xz", "billno", delFilters);
-////            if (EmptyUtil.isNoEmpty(paybills)) {
-////                evt.setCancel(true);
-////                String billnoStr = (String)((Stream)Arrays.stream(paybills).parallel()).map((d) -> {
-////                    return d.getString("billno");
-////                }).collect(Collectors.joining("、"));
-////                this.getView().showConfirm(String.format(ResManager.loadKDString("%s付款单由内部收付协同业务自动生成,是否确认删除?", "PaymentBillEdit_23", "fi-cas-formplugin", new Object[0]), billnoStr), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_DEL_CALLBACK", this));
-////            }
-//        } else if ("pay".equals(opKey) && selectRows.size() > 0) {
-//            selectRowsPks = (Set)selectRows.parallelStream().map((row) -> {
-//                return row.getPrimaryKeyValue();
-//            }).collect(Collectors.toSet());
-//            delFilters = new QFilter[]{new QFilter("id", "in", selectRowsPks)};
-//            paybills = BusinessDataServiceHelper.load("nckd_cas_apbill_xz", "billno,org,settletype", delFilters);
-//            if (EmptyUtil.isNoEmpty(paybills)) {
-//                boolean hasErrorData = false;
-//                DynamicObject[] var9 = paybills;
-//                int var10 = paybills.length;
-//
-//                for(int var11 = 0; var11 < var10; ++var11) {
-//                    DynamicObject dataEntity = var9[var11];
-//                    long orgId = dataEntity.getDynamicObject("org").getLong("id");
-//                    boolean selectDraftFlag = SystemParameterHelper.getParameterBoolean(orgId, "cs122");
-//                    String settleTypeKey = DraftHelper.getKey(dataEntity.get("settletype"));
-//                    logger.info("selectDraftFlag is:" + selectDraftFlag + ",key:" + settleTypeKey);
-//                    boolean isdraft = SystemParameterHelper.getCdmParameterBoolean(orgId, "isdraft");
-//                    boolean ischeck = SystemParameterHelper.getCdmParameterBoolean(orgId, "ischeck");
-//                    boolean ispromissorynote = SystemParameterHelper.getCdmParameterBoolean(orgId, "ispromissorynote");
-//                    if (!CasHelper.isEmpty(settleTypeKey)) {
-//                        String typeName;
-//                        switch (settleTypeKey) {
-//                            case "isdraft":
-//                                if (isdraft && !selectDraftFlag) {
-//                                    typeName = ResManager.loadKDString("汇票", "DraftHelper_4", "fi-cas-common", new Object[0]);
-//                                    this.cancelAndWarn(evt, dataEntity, typeName);
-//                                }
-//                                break;
-//                            case "ischeck":
-//                                if (ischeck && !selectDraftFlag) {
-//                                    typeName = ResManager.loadKDString("支票", "DraftHelper_5", "fi-cas-common", new Object[0]);
-//                                    this.cancelAndWarn(evt, dataEntity, typeName);
-//                                }
-//                                break;
-//                            case "ispromissorynote":
-//                                if (ispromissorynote && !selectDraftFlag) {
-//                                    typeName = ResManager.loadKDString("本票", "DraftHelper_6", "fi-cas-common", new Object[0]);
-//                                    this.cancelAndWarn(evt, dataEntity, typeName);
-//                                }
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//
-//        if ("commitbe".equals(opKey) && selectRows.size() > 0) {
-//            OperateOption op = OperateOption.create();
-//            op.setVariableValue("ishasright", "true");
-//            Object[] selectedRowPks = this.getSelectedRows().getPrimaryKeyValues();
-//            OperationResult operationResult = OperationServiceHelper.executeOperate("beforecommitbe", "nckd_cas_apbill_xz", selectedRowPks, op);
-//            if (!operationResult.isSuccess() && operationResult.isNeedSign()) {
-//                SignOperateCallback signOperate = new SignOperateCallback(this.getView(), this, op, ClientCallback.SignClientType.Secondry, "signbeforecommitbe");
-//                OperationResult ops = signOperate.sign(operationResult);
-//                evt.setCancel(true);
-//                if (!ops.isSuccess()) {
-//                    logger.info(" beforecommitbe sign error ");
-//                    if (ops.isShowMessage() && EmptyUtil.isNoEmpty(ops.getMessage())) {
-//                        this.getView().showTipNotification(ops.getMessage());
-//                    }
-//                }
-//            }
-//        }
-//
-//    }
-//
-//    private void cancelAndWarn(BeforeItemClickEvent evt, DynamicObject dataEntity, String typeName) {
-//        String msg = String.format(ResManager.loadKDString("%1$s :结算方式类别为%2$s的付款单不支持确认付款", "DraftHelper_7_1", "fi-cas-common", new Object[0]), dataEntity.getString("billno"), typeName);
-//        evt.setCancel(true);
-//        this.getView().showTipNotification(msg);
-//    }
-//
-//    public void itemClick(ItemClickEvent evt) {
-//        super.itemClick(evt);
-//        String key = evt.getItemKey();
-//        switch (key.toLowerCase(Locale.ENGLISH)) {
-//            case "tblnew4ap":
-//                this.addNew(PaymentTypeEnum.AP, "nckd_cas_apbill_xz");
-//                break;
-//            case "tblnew4er":
-//                this.addNew(PaymentTypeEnum.ER, "nckd_cas_apbill_xz");
-//                break;
-//            case "tblnew4otr":
-//                this.addNew(PaymentTypeEnum.OTR, "nckd_cas_apbill_xz");
-//                break;
-//            case "tblnew4syn":
-//                this.addNew(PaymentTypeEnum.SYN, "nckd_cas_apbill_xz_synonym");
-//                break;
-//            case "tblnew4cash":
-//                this.addNew(PaymentTypeEnum.CASH, "nckd_cas_apbill_xz_cash");
-//            case "tbloffset":
-//            default:
-//                break;
-//            case "tblbeforesubmit":
-//                this.beforeSubmit();
-//                break;
-//            case "barviewdiagram":
-//                this.viewDiagram();
-//                break;
-//            case "viewsettle":
-//                this.viewSettle();
-//                break;
-//            case "tblcancelpay":
-//                this.cancelPay();
-//                break;
-//            case "viewdrafbill":
-//                this.viewDrafBill();
-//                break;
-//            case "tblnewspan":
-//                this.addNew(PaymentTypeEnum.SPAN, "nckd_cas_apbill_xz_spanmainpart");
-//                break;
-//            case "batchinput":
-//                this.viewBatchInput();
-//        }
-//
-//    }
-//
-//    private void openEditView(String opName) {
-//        BillList billList = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Object[] selectedRowPks = selectedRows.getPrimaryKeyValues();
-//        if (selectedRowPks.length != 1) {
-//            this.getView().showErrorNotification(ResManager.loadKDString("请选中一行再进行操作", "PaymentBillList_22", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            ListSelectedRow currentSelectedRowInfo = selectedRows.get(0);
-//            String billStatus = currentSelectedRowInfo.getBillStatus();
-//            if (!BillStatusEnum.RENOTE.getValue().equals(billStatus) && !BillStatusEnum.CHARGEBANK.getValue().equals(billStatus) && !BillStatusEnum.REFUND.getValue().equals(billStatus) && !BillStatusEnum.DEAD.getValue().equals(billStatus) && !BillStatusEnum.SAVE.getValue().equals(billStatus)) {
-//                Object primaryKeyValue = currentSelectedRowInfo.getPrimaryKeyValue();
-//                DynamicObject paybillDO = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_cas_apbill_xz", "paymenttype");
-//                DynamicObject paymenttype = paybillDO.getDynamicObject("paymenttype");
-//                boolean ispartpayment = paymenttype.getBoolean("ispartpayment");
-//                if (!ispartpayment) {
-//                    this.getView().showErrorNotification(ResManager.loadKDString("此单据付款类型没有参与应付结算,不能进行此操作", "PaymentBillList_24", "fi-cas-formplugin", new Object[0]));
-//                } else {
-//                    BillShowParameter showParameter = new BillShowParameter();
-//                    showParameter.setCustomParam("op_supplecontract", opName);
-//                    showParameter.setPkId(primaryKeyValue);
-//                    showParameter.setCaption(ResManager.loadKDString("付款单", "PaymentBillList_25", "fi-cas-formplugin", new Object[0]));
-//                    showParameter.setFormId("nckd_cas_apbill_xz_contract");
-//                    showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
-//                    this.getView().showForm(showParameter);
-//                }
-//            } else {
-//                this.getView().showErrorNotification(ResManager.loadKDString("单据状态不符合,不能进行此操作", "PaymentBillList_23", "fi-cas-formplugin", new Object[0]));
-//            }
-//        }
-//    }
-//
-//    private void openChangeChg(String sourceType, String sourceAction) {
-//        FormShowParameter showParameter = new FormShowParameter();
-//        BillList billList = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Long sourceId = (Long)selectedRows.get(0).getPrimaryKeyValue();
-//        StyleCss css = new StyleCss();
-//        css.setWidth("700");
-//        css.setHeight("400");
-//        showParameter.getOpenStyle().setInlineStyleCss(css);
-//        showParameter.setCustomParam("sourceId", sourceId);
-//        showParameter.setCustomParam("sourceType", sourceType);
-//        showParameter.setCustomParam("sourceAction", sourceAction);
-//        showParameter.setFormId("cas_changemodeselection");
-//        showParameter.getOpenStyle().setShowType(ShowType.Modal);
-//        showParameter.setStatus(OperationStatus.ADDNEW);
-//        showParameter.setCloseCallBack(new CloseCallBack(this, "KEY_CHANGECHG_CALLBACK"));
-//        this.getView().showForm(showParameter);
-//    }
-//
-//    private void addNew(PaymentTypeEnum paymentType, String formId) {
-//        this.getPageCache().put("paymentType", paymentType.name());
-//        this.getPageCache().put("formId", formId);
-//        this.getView().invokeOperation("new");
-//    }
-//
-//    public void closedCallBack(ClosedCallBackEvent e) {
-//        super.closedCallBack(e);
-//        PayBillListPlugnHelper.closeCallBack(e.getActionId(), this.getView(), e.getReturnData());
-//    }
-//
-//    private void beforeSubmit() {
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        if (selectedRows.size() <= 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_0", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            this.getView().invokeOperation("beforesubmit");
-//        }
-//
-//    }
-//
-//    private void viewDiagram() {
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Object[] selectedRowPks = selectedRows.getPrimaryKeyValues();
-//        if (selectedRowPks.length != 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_0", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            ListSelectedRow selectedRow = selectedRows.get(0);
-//            Long billId = (Long)selectedRow.getPrimaryKeyValue();
-//            FormShowParameter showParameter = new FormShowParameter();
-//            showParameter.setFormId("wf_viewflowchart");
-//            showParameter.setClientParam("billId", billId);
-//            showParameter.getOpenStyle().setShowType(ShowType.NewWindow);
-//            this.getView().showForm(showParameter);
-//        }
-//    }
-//
-//    private void viewSettle() {
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Object[] selectedRowPks = selectedRows.getPrimaryKeyValues();
-//        if (selectedRowPks.length == 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_3", "fi-cas-formplugin", new Object[0]));
-//        } else if (selectedRowPks.length > 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据联查!", "PaymentBillList_4", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            Object primaryKey = selectedRowPks[0];
-//            List<Long> mainSettleIds = SettleRecordQueryHelperForCas.getSettleIdsByMain("ap_settlerecord", "nckd_cas_apbill_xz", new Object[]{primaryKey});
-//            List<Long> asstSettleIds = SettleRecordQueryHelperForCas.getSettleIdsByAsst("ap_settlerecord", "nckd_cas_apbill_xz", new Object[]{primaryKey});
-//            Set<Long> settleRecordIds = new HashSet();
-//            settleRecordIds.addAll(mainSettleIds);
-//            settleRecordIds.addAll(asstSettleIds);
-//            if (settleRecordIds.size() > 0) {
-//                PayBillListPlugnHelper.viewSettle(settleRecordIds, this.getView());
-//            } else {
-//                this.getView().showTipNotification(ResManager.loadKDString("暂无结算记录。", "PaymentBillList_5", "fi-cas-formplugin", new Object[0]));
-//            }
-//        }
-//
-//    }
-//
-//    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
-//        super.beforeDoOperation(args);
-//        AbstractOperate op = (AbstractOperate)args.getSource();
-//        String key = op.getOperateKey();
-//        BillList list;
-//        ListSelectedRowCollection selectedRows;
-//        DynamicObject dbData;
-//        Object[] selectedRowPks;
-//        DynamicObject[] payBills;
-//        ListSelectedRowCollection lstCollection;
-//        DynamicObject payBill;
-//        int var45;
-//        if ("trackdown".equals(key)) {
-//            list = (BillList)this.getView().getControl("billlistap");
-//            selectedRows = list.getSelectedRows();
-//            lstCollection = list.getSelectedRows();
-//            payBill = BusinessDataServiceHelper.loadSingle(lstCollection.get(0).getPrimaryKeyValue(), "nckd_cas_apbill_xz", "id,settletype");
-//            dbData = payBill.getDynamicObject("settletype");
-//            if (dbData != null) {
-//                String settlementtype = dbData.getString("settlementtype");
-//                if (EmptyUtil.isNoEmpty(settlementtype) && this.settleTypes.contains(settlementtype)) {
-//                    op.getOption().setVariableValue("botp_track_edit_status", "true");
-//                }
-//            }
-//        } else {
-//            FormOperate operate;
-//            if ("chargeback".equals(key)) {
-//                operate = (FormOperate)args.getSource();
-//                operate.getOption().setVariableValue("strictvalidation", String.valueOf(true));
-//            } else if ("invalid".equals(key)) {
-//                boolean result = op.getOption().tryGetVariableValue("cancellation", new RefObject());
-//                if (!result) {
-//                    list = (BillList)this.getView().getControl("billlistap");
-//                    lstCollection = list.getSelectedRows();
-//                    args.cancel = true;
-//                    if (CasHelper.getSelectedRowSize(lstCollection) > 1) {
-//                        this.getView().showTipNotification(ResManager.loadKDString("作废仅支持对单张单据处理,请修改选择范围。", "PaymentBillList_8", "fi-cas-formplugin", new Object[0]));
-//                        return;
-//                    }
-//
-//                    this.getView().showConfirm(ResManager.loadKDString("作废选中记录后,将无法恢复,确认要作废该记录吗?", "PaymentBillList_9", "fi-cas-formplugin", new Object[0]), MessageBoxOptions.OKCancel, new ConfirmCallBackListener("cancellation", this));
-//                }
-//            } else {
-//                DynamicObject settletype;
-//                String payConfirm;
-//                if ("endorse".equals(key)) {
-//                    list = (BillList)this.getView().getControl("billlistap");
-//                    selectedRows = list.getSelectedRows();
-//                    if (CasHelper.getSelectedRowSize(selectedRows) > 1) {
-//                        this.getView().showTipNotification(ResManager.loadKDString("背书仅支持对单张单据处理,请修改选择范围。", "PaymentBillList_20", "fi-cas-formplugin", new Object[0]));
-//                        args.cancel = true;
-//                        return;
-//                    }
-//
-//                    if (selectedRows.size() == 1) {
-//                        DynamicObject info = BusinessDataServiceHelper.loadSingle(selectedRows.get(0).getPrimaryKeyValue(), "nckd_cas_apbill_xz");
-//                        payBill = info.getDynamicObject("payeracctbank");
-//                        payConfirm = info.getString("billstatus");
-//                        if (!BillStatusEnum.AUDIT.getValue().equals(payConfirm)) {
-//                            this.getView().showTipNotification(ResManager.loadKDString("只有已审核状态的单据允许背书。", "PaymentBillDraftEditPlugin_2", "fi-cas-formplugin", new Object[0]));
-//                            args.cancel = true;
-//                            return;
-//                        }
-//
-//                        if (PriorityEnum.DEFER.getValue().equals(info.getString("priority"))) {
-//                            this.getView().showTipNotification(ResManager.loadKDString("单据已冻结,不支持该操作。", "PaymentBillFreezeValidator_0", "fi-cas-opplugin", new Object[0]));
-//                            args.cancel = true;
-//                            return;
-//                        }
-//
-//                        if (!InitCheckPluginHelper.checkInitForPlugin(this.getView(), info.getDynamicObject("org"), new String[0])) {
-//                            args.setCancel(true);
-//                            return;
-//                        }
-//
-//                        if (PaymentBillPluginHelper.checkPayeeTypeFreeze(Collections.singletonList(info))) {
-//                            this.getView().showTipNotification((new PaymentErrorCode()).CANOTDOTHISOP_WHENSUPPLIERFREEZE().getMessage());
-//                            args.setCancel(true);
-//                            return;
-//                        }
-//
-//                        settletype = info.getDynamicObject("settletype");
-//                        DynamicObjectCollection draftbills = info.getDynamicObjectCollection("draftbill");
-//                        if (settletype == null || draftbills == null || !settletype.getString("settlementtype").equals("5") && !settletype.getString("settlementtype").equals("6") || draftbills.size() == 0) {
-//                            this.getView().showTipNotification(ResManager.loadKDString("背书仅适应结算方式类型是承兑汇票、支票或本票且结算号选择了库存票据的付款单,你所选单据不支持背书", "PaymentBillDraftEditPlugin_3", "fi-cas-formplugin", new Object[0]));
-//                            args.cancel = true;
-//                            return;
-//                        }
-//
-//                        if (!DraftHelper.isHasRecDrafBill(draftbills)) {
-//                            args.setCancel(true);
-//                            this.getView().showTipNotification(ResManager.loadKDString("背书仅适用选择了库存应收票据的付款单,你所选单据不支持背书", "PaymentBillDraftEditPlugin_10", "fi-cas-formplugin", new Object[0]));
-//                            return;
-//                        }
-//
-//                        if (DraftHelper.isHasPayDrafBill(draftbills)) {
-//                            args.setCancel(true);
-//                            this.getView().showTipNotification(ResManager.loadKDString("存在应付票据不能确认背书,请在确认付款环节选择需要关联付款的应付票据和已背书的应收票据", "PaymentBillDraftEditPlugin_10_1", "fi-cas-formplugin", new Object[0]));
-//                            return;
-//                        }
-//
-//                        if (!DraftHelper.isParameterDraftOn((Long)selectedRows.get(0).getPrimaryKeyValue(), "nckd_cas_apbill_xz")) {
-//                            args.setCancel(true);
-//                            this.getView().showTipNotification(ResManager.loadKDString("该组织没有启用相应的系统参数,请配置相应的系统参数!", "PaymentBillDraftEditPlugin_4", "fi-cas-formplugin", new Object[0]));
-//                            return;
-//                        }
-//
-//                        if (payBill != null && PayBillCrossHelper.isIfmBankAcc(payBill)) {
-//                            throw new KDBizException(ResManager.loadKDString("内部账户请选择内部结算付款。", "PaymentErrorCode_48", "fi-cas-business", new Object[0]));
-//                        }
-//
-//                        if (settletype != null && draftbills != null && draftbills.size() > 0 && Arrays.asList("5", "6").contains(settletype.getString("settlementtype"))) {
-//                            Pair<String, List<String>> result = (Pair) DispatchServiceHelper.invokeBizService("tmc", "cdm", "EBDraftAllocationService", "doDraftAllocationService", new Object[]{info});
-//                            if (result != null) {
-//                                if ("ING".equals(result.getLeft())) {
-//                                    args.cancel = true;
-//                                    info.set("billstatus", BillStatusEnum.DRAFTING.getValue());
-//                                    SaveServiceHelper.save(new DynamicObject[]{info});
-//                                    this.getView().showSuccessNotification(BillStatusEnum.DRAFTING.getName());
-//                                    this.getView().invokeOperation("refresh");
-//                                } else if (!"S".equals(result.getLeft())) {
-//                                    args.cancel = true;
-//                                    this.getView().showErrorNotification(String.join("\n", (Iterable)result.getRight()));
-//                                }
-//                            }
-//                        }
-//                    }
-//                } else {
-//                    DynamicObject[] payableBills;
-//                    DynamicObject accountBank;
-//                    DynamicObject payableBill;
-//                    if ("recbook".equals(key)) {
-//                        list = (BillList)this.getControl("billlistap");
-//                        selectedRows = list.getSelectedRows();
-//                        if (CasHelper.getSelectedRowSize(selectedRows) > 1) {
-//                            args.setCancel(true);
-//                            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据!", "ReceivingBillList_10", "fi-cas-formplugin", new Object[0]));
-//                        } else {
-//                            Long primaryKeyValue = (Long)selectedRows.get(0).getPrimaryKeyValue();
-//                            payBill = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_cas_apbill_xz");
-//                            if (!BillStatusEnum.AUDIT.getValue().equals(payBill.getString("billstatus"))) {
-//                                args.setCancel(true);
-//                                this.getView().showTipNotification(ResManager.loadKDString("只有已审核状态的单据允许开票登记。", "PaymentBillDraftEditPlugin_5", "fi-cas-formplugin", new Object[0]));
-//                            } else if (PriorityEnum.DEFER.getValue().equals(payBill.getString("priority"))) {
-//                                args.setCancel(true);
-//                                this.getView().showTipNotification(ResManager.loadKDString("单据已冻结,不支持该操作。", "PaymentBillFreezeValidator_0", "fi-cas-opplugin", new Object[0]));
-//                            } else {
-//                                if (!InitCheckPluginHelper.checkInitForPlugin(this.getView(), payBill.getDynamicObject("org"), new String[0])) {
-//                                    args.setCancel(true);
-//                                    return;
-//                                }
-//
-//                                if (PaymentBillPluginHelper.checkPayeeTypeFreeze(Collections.singletonList(payBill))) {
-//                                    this.getView().showTipNotification((new PaymentErrorCode()).CANOTDOTHISOP_WHENSUPPLIERFREEZE().getMessage());
-//                                    args.setCancel(true);
-//                                    return;
-//                                }
-//
-//                                if (!DraftHelper.isDraftBill(primaryKeyValue, "nckd_cas_apbill_xz")) {
-//                                    args.setCancel(true);
-//                                    this.getView().showTipNotification(ResManager.loadKDString("开票登记仅适用结算方式类型是承兑汇票、支票或本票的付款单,你所选单据不支持开票登记!", "PaymentBillDraftEditPlugin_6", "fi-cas-formplugin", new Object[0]));
-//                                } else if (this.isDraftBill(payBill)) {
-//                                    args.setCancel(true);
-//                                    if (DraftHelper.isHasRecDrafBill((DynamicObjectCollection)payBill.get("draftbill"))) {
-//                                        this.getView().showTipNotification(ResManager.loadKDString("付款单已选择相关应收票据,请进行背书处理!", "PaymentBillDraftEditPlugin_7", "fi-cas-formplugin", new Object[0]));
-//                                    } else {
-//                                        this.getView().showTipNotification(ResManager.loadKDString("付款单已选择相关应付票据,请进行确认付款处理!", "PaymentBillDraftEditPlugin_11", "fi-cas-formplugin", new Object[0]));
-//                                    }
-//                                } else if (!DraftHelper.isParameterDraftOn(primaryKeyValue, "nckd_cas_apbill_xz")) {
-//                                    args.setCancel(true);
-//                                    this.getView().showTipNotification(ResManager.loadKDString("该组织没有启用相应的系统参数,请配置相应的系统参数!", "PaymentBillDraftEditPlugin_4", "fi-cas-formplugin", new Object[0]));
-//                                } else {
-//                                    Map<String, HashSet<Long>> botpMap = BFTrackerServiceHelper.findTargetBills("nckd_cas_apbill_xz", new Long[]{primaryKeyValue});
-//                                    HashSet<Long> pkValues = (HashSet)botpMap.get("cdm_payablebill");
-//                                    boolean isExistNotDeadFlag = false;
-//                                    if (null != pkValues && pkValues.size() > 0) {
-//                                        payableBills = BusinessDataServiceHelper.load("cdm_payablebill", "id,billstatus", new QFilter[]{new QFilter("id", "in", pkValues.toArray())});
-//                                        DynamicObject[] var58 = payableBills;
-//                                        int var60 = payableBills.length;
-//
-//                                        for(int var62 = 0; var62 < var60; ++var62) {
-//                                            payableBill = var58[var62];
-//                                            if (!BillStatusEnum.DEAD.getValue().equals(payableBill.getString("billstatus"))) {
-//                                                isExistNotDeadFlag = true;
-//                                            }
-//                                        }
-//                                    }
-//
-//                                    if (isExistNotDeadFlag) {
-//                                        args.setCancel(true);
-//                                        this.getView().showTipNotification(ResManager.loadKDString("付款单已进行开票登记!", "PaymentBillDraftEditPlugin_8", "fi-cas-formplugin", new Object[0]));
-//                                    }
-//
-//                                    accountBank = payBill.getDynamicObject("payeracctbank");
-//                                    if (null != accountBank && AccountBankHelper.isClosed(accountBank.getLong("id"))) {
-//                                        throw new KDBizException(String.format(ResManager.loadKDString("账户%s当前状态为已销户,暂无法进行业务处理。", "PaymentErrorCode_47", "fi-cas-business", new Object[0]), accountBank.getString("number")));
-//                                    }
-//
-//                                    if (accountBank != null && PayBillCrossHelper.isIfmBankAcc(accountBank)) {
-//                                        throw new KDBizException(ResManager.loadKDString("内部账户请选择内部结算付款。", "PaymentErrorCode_48", "fi-cas-business", new Object[0]));
-//                                    }
-//                                }
-//                            }
-//                        }
-//                    } else if ("submit".equals(key)) {
-//                        list = (BillList)this.getControl("billlistap");
-//                        selectedRowPks = list.getSelectedRows().getPrimaryKeyValues();
-//                        if (selectedRowPks != null && selectedRowPks.length > 0) {
-//                            payBills = BusinessDataServiceHelper.load(selectedRowPks, EntityMetadataCache.getDataEntityType("nckd_cas_apbill_xz"));
-//                            List<DynamicObject> updateBills = new ArrayList(payBills.length);
-//                            DynamicObject[] var42 = payBills;
-//                            var45 = payBills.length;
-//
-//                            for(int var50 = 0; var50 < var45; ++var50) {
-//                                accountBank = var42[var50];
-//                                boolean isRemove = false;
-//                                DynamicObjectCollection collection = accountBank.getDynamicObjectCollection("entry");
-//                                Iterator<DynamicObject> iterator = collection.iterator();
-//
-//                                while(iterator.hasNext()) {
-//                                    payableBill = (DynamicObject)iterator.next();
-//                                    if (CasHelper.isEmpty(payableBill.get("e_payableamt"))) {
-//                                        iterator.remove();
-//                                        isRemove = true;
-//                                    }
-//                                }
-//
-//                                if (isRemove) {
-//                                    updateBills.add(accountBank);
-//                                }
-//                            }
-//
-//                            if (updateBills.size() > 0) {
-//                                SaveServiceHelper.save((DynamicObject[])updateBills.toArray(new DynamicObject[0]));
-//                            }
-//                        }
-//                    } else if ("payschback".equals(key)) {
-//                        operate = (FormOperate)args.getSource();
-//                        operate.getOption().setVariableValue("strictvalidation", String.valueOf(true));
-//                    } else if ("pay".equals(key)) {
-//                        list = (BillList)this.getView().getControl("billlistap");
-//                        selectedRows = list.getSelectedRows();
-//                        Set<Object> selectRowsPks = new HashSet();
-//                        selectedRows.forEach((listSelectedRow) -> {
-//                            selectRowsPks.add(listSelectedRow.getPrimaryKeyValue());
-//                        });
-//                        String draftIds = op.getOption().getVariableValue("draftids", "");
-//                        if (selectRowsPks.size() == 1 && StringUtils.isEmpty(draftIds)) {
-//                            dbData = BusinessDataServiceHelper.loadSingle(selectedRows.get(0).getPrimaryKeyValue(), EntityMetadataCache.getDataEntityType("nckd_cas_apbill_xz"));
-//                            settletype = (DynamicObject)dbData.get("org");
-//                            Long pkValue = (Long)settletype.getPkValue();
-//                            boolean selectDraftFlag = SystemParameterHelper.getParameterBoolean(pkValue, "cs122");
-//                            if (selectDraftFlag && PaymentBillPluginHelper.needSelectedDraft(dbData) && BillStatusEnum.AUDIT.getValue().equals(dbData.getString("billstatus"))) {
-//                                PayBillListPlugnHelper.showSelectDraftForm(new CloseCallBack(this, "CALLBACK_SELECTDRAFT"), this.getView(), selectedRows.get(0).getPrimaryKeyValue());
-//                                args.setCancel(true);
-//                                return;
-//                            }
-//                        }
-//
-//                        if (StringUtils.isEmpty(draftIds)) {
-//                            payConfirm = op.getOption().getVariableValue("payConfirm", "");
-//                            if (StringUtils.isEmpty(payConfirm)) {
-//                                if (selectedRows.size() <= 0) {
-//                                    throw new KDBizException(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_0", "fi-cas-formplugin", new Object[0]));
-//                                }
-//
-//                                Object[] pkArray = selectRowsPks.toArray(new Object[0]);
-//                                QFilter pkFilter = new QFilter("id", "in", pkArray);
-//                                payableBills = BusinessDataServiceHelper.load("nckd_cas_apbill_xz", "org,dpcurrency,basecurrency,isdiffcur", new QFilter[]{pkFilter});
-//                                Set<Long> orgIds = new HashSet(10);
-//                                boolean isSameCurrency = true;
-//                                boolean isSameDpCurrency = true;
-//                                boolean isForeignCurrency = false;
-//                                boolean isSameParam = true;
-//                                Long preDpCurrencyId = 0L;
-//                                Long preBasecurrencyId = 0L;
-//                                String param = null;
-//                                Map<Long, Set<String>> cs1047Params = new HashMap(10);
-//                                if (payableBills != null && payableBills.length > 0) {
-//                                    DynamicObject[] var21 = payableBills;
-//                                    int var22 = payableBills.length;
-//
-//                                    for(int var23 = 0; var23 < var22; ++var23) {
-//                                        payBill = var21[var23];
-//                                        long orgId = (Long)payBill.getDynamicObject("org").getPkValue();
-//                                        new HashSet(1);
-//                                        Set cs1046;
-//                                        if (!orgIds.contains(orgId)) {
-//                                            cs1046 = SystemParameterHelper.getParameterComboxs(orgId, "cs1046");
-//                                            String setParamToString = PayBillListPlugnHelper.setParamToString(cs1046);
-//                                            if (param == null) {
-//                                                param = setParamToString;
-//                                            } else if (!param.equals(setParamToString)) {
-//                                                isSameParam = false;
-//                                            }
-//
-//                                            cs1047Params.put(orgId, cs1046);
-//                                        } else {
-//                                            cs1046 = (Set)cs1047Params.get(orgId);
-//                                        }
-//
-//                                        orgIds.add(orgId);
-//                                        if (payBill.getBoolean("isdiffcur") && cs1046.contains(SysParamCs1046Enum.DIFF.getValue()) && selectRowsPks.size() > 1) {
-//                                            throw new KDBizException(ResManager.loadKDString("存在异币别需要确认付款的单据,不能批量确认付款。", "PaymentBillList_26", "fi-cas-formplugin", new Object[0]));
-//                                        }
-//
-//                                        Long dpcurrencyId = payBill.getDynamicObject("dpcurrency").getLong("id");
-//                                        if (preDpCurrencyId == 0L) {
-//                                            preDpCurrencyId = dpcurrencyId;
-//                                        } else if (!preDpCurrencyId.equals(dpcurrencyId)) {
-//                                            isSameDpCurrency = false;
-//                                        }
-//
-//                                        Long basecurrencyId = payBill.getDynamicObject("basecurrency").getLong("id");
-//                                        if (preBasecurrencyId == 0L) {
-//                                            preBasecurrencyId = basecurrencyId;
-//                                        } else if (!preBasecurrencyId.equals(basecurrencyId)) {
-//                                            isSameCurrency = false;
-//                                        }
-//
-//                                        if (!basecurrencyId.equals(dpcurrencyId)) {
-//                                            isForeignCurrency = true;
-//                                        }
-//                                    }
-//                                }
-//
-//                                if (!isSameParam) {
-//                                    throw new KDBizException(ResManager.loadKDString("所选单据存在多个付款资金组织系统参数“允许确认付款环节更新/补充信息”选项不一致,不能批量确认付款,请重新选择。", "PaymentBillList_34", "fi-cas-formplugin", new Object[0]));
-//                                }
-//
-//                                Set<String> cs1047 = (Set)cs1047Params.get(orgIds.iterator().next());
-//                                if (cs1047.contains(SysParamCs1046Enum.FOREIGN.getValue()) && (!isSameDpCurrency || !isSameCurrency)) {
-//                                    throw new KDBizException(ResManager.loadKDString("开启了系统参数确认付款环节更新外币业务的付款汇率,但所选存在付款币别、业务主币别不一致的单据,不能批量确认付款,请重新选择。", "PaymentBillList_35", "fi-cas-formplugin", new Object[0]));
-//                                }
-//
-//                                Object pk;
-//                                if (selectRowsPks.size() > 1) {
-//                                    if (isForeignCurrency && cs1047.contains(SysParamCs1046Enum.FOREIGN.getValue())) {
-//                                        pk = selectedRows.get(0).getPrimaryKeyValue();
-//                                        payBill = BusinessDataServiceHelper.loadSingle(pk, "nckd_cas_apbill_xz");
-//                                        PayBillListPlugnHelper.showDiffPayRateForm(new CloseCallBack(this, "KEY_DIFFPAY_CALLBACK"), this.getView(), payBill);
-//                                        args.setCancel(true);
-//                                    } else if (cs1047.contains(SysParamCs1046Enum.PAYDATE.getValue())) {
-//                                        PayBillListPlugnHelper.showDiffPayDateForm(new CloseCallBack(this, "KEY_DIFFPAY_CALLBACK"), this.getView());
-//                                        args.setCancel(true);
-//                                    }
-//                                } else {
-//                                    pk = selectedRows.get(0).getPrimaryKeyValue();
-//                                    payBill = BusinessDataServiceHelper.loadSingle(pk, "nckd_cas_apbill_xz");
-//                                    if (PaymentBillPluginHelper.isShowPayConfirm(payBill, cs1047)) {
-//                                        if (!DraftHelper.isAllPayDrafBill(payBill.getDynamicObjectCollection("draftbill")) && !payBill.getBoolean("feepay")) {
-//                                            (new PaymentPayImpl()).validate(payBill);
-//                                            PayBillListPlugnHelper.showDiffPayForm(new CloseCallBack(this, "KEY_DIFFPAY_CALLBACK"), this.getView(), payBill);
-//                                            args.setCancel(true);
-//                                        }
-//                                    } else {
-//                                        (new PaymentPayImpl()).validate(payBill);
-//                                    }
-//                                }
-//                            }
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//
-//        if (Arrays.asList("unaudit", "chargeback", "invalid", "delete", "pay").contains(key) && (!"invalid".equals(key) || "invalid".equals(key) && op.getOption().tryGetVariableValue("cancellation", new RefObject()))) {
-//            list = (BillList)this.getControl("billlistap");
-//            selectedRowPks = list.getSelectedRows().getPrimaryKeyValues();
-//            if (selectedRowPks != null && selectedRowPks.length > 0) {
-//                payBills = BusinessDataServiceHelper.load(selectedRowPks, EntityMetadataCache.getDataEntityType("nckd_cas_apbill_xz"));
-//                DynamicObject[] var41 = payBills;
-//                int var46 = payBills.length;
-//
-//                for(var45 = 0; var45 < var46; ++var45) {
-//                    payBill = var41[var45];
-//                    if (PayBillHepler.getViewSettle(payBill).size() > 0) {
-//                        this.getView().showErrorNotification(String.format(ResManager.loadKDString("%s已存在结算记录,导致操作失败。如需继续执行操作,请先反结算。", "PaymentBillList_36", "fi-cas-formplugin", new Object[0]), String.join(payBill.getString("billno"), "【", "】")));
-//                        args.setCancel(true);
-//                        return;
-//                    }
-//                }
-//            }
-//        }
-//
-//    }
-//
-//    private Boolean isDraftBill(DynamicObject payBill) {
-//        return !CasHelper.isEmpty(payBill.get("draftbill")) && ((DynamicObjectCollection)payBill.get("draftbill")).size() != 0 ? Boolean.TRUE : Boolean.FALSE;
-//    }
-//
-//    private boolean payInfoChgvaild(String chgtype) {
-//        BillList list = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = list.getSelectedRows();
-//        if (CasHelper.getSelectedRowSize(selectedRows) > 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据进行支付信息变更!", "PaymentBillList_10", "fi-cas-formplugin", new Object[0]));
-//            return false;
-//        } else {
-//            DynamicObjectCollection query = QueryServiceHelper.query("nckd_cas_apbill_xz", "billstatus,matchflag", new QFilter[]{new QFilter("id", "=", selectedRows.get(0).getPrimaryKeyValue())});
-//            if (query.size() < 1) {
-//                this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据进行支付信息变更!", "PaymentBillList_10", "fi-cas-formplugin", new Object[0]));
-//                this.getView().invokeOperation("refresh");
-//                return false;
-//            } else {
-//                Object newStatus = ((DynamicObject)query.get(0)).getString("billstatus");
-//                if (!newStatus.equals("C")) {
-//                    this.getView().showTipNotification(ResManager.loadKDString("只有已审核的单据才能进行支付信息变更。", "PaymentBillList_11", "fi-cas-formplugin", new Object[0]));
-//                    return false;
-//                } else {
-//                    String matchFlag = ((DynamicObject)query.get(0)).getString("matchflag");
-//                    if (!AutoMatchFlagEnum.NONE.getValue().equals(matchFlag)) {
-//                        this.getView().showTipNotification(ResManager.loadKDString("已匹配的单据不允许发起变更", "PaymentBillList_50", "fi-cas-formplugin", new Object[0]));
-//                        return false;
-//                    } else {
-//                        Object selectPk = selectedRows.get(0).getPrimaryKeyValue();
-//                        Boolean ischangepaych = QueryServiceHelper.exists("cas_paychgbill", new QFilter[]{new QFilter("sourcebillid", "=", selectPk), new QFilter("sourcetype", "=", "nckd_cas_apbill_xz"), new QFilter("chgtype", "=", chgtype), new QFilter("iscashconfirm", "!=", "1")});
-//                        if (ischangepaych) {
-//                            this.getView().showTipNotification(ResManager.loadKDString("该单据正在变更支付信息流程中,无法再次变更。", "PaymentBillList_12", "fi-cas-formplugin", new Object[0]));
-//                            return false;
-//                        } else {
-//                            DynamicObject casPayBill = BusinessDataServiceHelper.loadSingle("nckd_cas_apbill_xz", "id,entrustorg,applyorg", new QFilter[]{new QFilter("id", "=", selectPk)});
-//                            if (!CasHelper.isEmpty(casPayBill)) {
-//                                if (!CasHelper.isEmpty(casPayBill.get("entrustorg"))) {
-//                                    this.getView().showTipNotification(ResManager.loadKDString("委托付款业务不支持支付信息变更。", "PaymentBillList_20", "fi-cas-formplugin", new Object[0]));
-//                                    return false;
-//                                }
-//
-//                                if (!CasHelper.isEmpty(casPayBill.get("applyorg"))) {
-//                                    this.getView().showTipNotification(ResManager.loadKDString("申请付款组织业务不支持支付信息变更。", "PaymentBillList_21", "fi-cas-formplugin", new Object[0]));
-//                                    return false;
-//                                }
-//                            }
-//
-//                            return true;
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//    }
-//
-//    public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
-//        super.confirmCallBack(messageBoxClosedEvent);
-//        String id = messageBoxClosedEvent.getCallBackId();
-//        MessageBoxResult res = messageBoxClosedEvent.getResult();
-//        if (StringUtils.equals(id, "CONFIRM_CANCELPAY_CALLBACK") && MessageBoxResult.Yes.equals(res)) {
-//            BillList billList = (BillList)this.getView().getControl("billlistap");
-//            ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//            if (selectedRows.size() > 0) {
-//                List<Long> paymentBillPks = new LinkedList();
-//                Iterator var7 = selectedRows.iterator();
-//
-//                while(var7.hasNext()) {
-//                    ListSelectedRow selectedRow = (ListSelectedRow)var7.next();
-//                    paymentBillPks.add((Long)selectedRow.getPrimaryKeyValue());
-//                }
-//
-//                QFilter payPidFilter = new QFilter("id", "in", paymentBillPks);
-//                DynamicObject[] payobjs = BusinessDataServiceHelper.load("nckd_cas_apbill_xz", "id,billno", new QFilter[]{payPidFilter});
-//                if (!this.cancelPayCheckSettle(paymentBillPks, payobjs)) {
-//                    this.getView().invokeOperation("cancelpay");
-//                }
-//            }
-//        }
-//
-//        if (StringUtils.equals(id, "CONFIRM_CANCELPAY_SETTLE_CALLBACK") && MessageBoxResult.Yes.equals(res)) {
-//            this.getView().invokeOperation("cancelpay");
-//        }
-//
-//        OperateOption option;
-//        if (StringUtils.equals(id, "cancellation") && MessageBoxResult.Yes.equals(res)) {
-//            option = OperateOption.create();
-//            option.setVariableValue("cancellation", "yes");
-//            this.getView().invokeOperation("invalid", option);
-//        }
-//
-//        if (id.equals("CONFIRM_DEL_CALLBACK")) {
-//            option = OperateOption.create();
-//            if (MessageBoxResult.Yes.equals(res)) {
-//                option.setVariableValue("delrecpay", "1");
-//                this.getView().invokeOperation("delete", option);
-//            }
-//        }
-//
-//    }
-//
-//    public void afterDoOperation(AfterDoOperationEventArgs e) {
-//        super.afterDoOperation(e);
-//        AbstractOperate op = (AbstractOperate)e.getSource();
-//        String key = op.getOperateKey();
-//        OperationResult operationResult = e.getOperationResult();
-//        List successPkIds;
-//        if ((!"pay".equals(key) || !operationResult.isSuccess()) && (!"cancelpay".equals(key) || !operationResult.isSuccess())) {
-//            if ("unitecommitbe".equals(key) && operationResult.isSuccess()) {
-//                this.getView().showSuccessNotification(ResManager.loadKDString("合并提交银企成功!", "PaymentBillList_16", "fi-cas-formplugin", new Object[0]));
-//            } else if (("chargeback".equals(key) || "payschback".equals(key)) && operationResult.isSuccess()) {
-//                successPkIds = operationResult.getSuccessPkIds();
-//                if (!CollectionUtils.isEmpty(successPkIds)) {
-//                    this.chargeBack(successPkIds, key);
-//                }
-//            } else if ("trackdownchgbill".equals(key) && operationResult.isSuccess()) {
-//                this.trackdownChgBill();
-//            } else if ("chargebacknoreason".equals(key)) {
-//                String reason = ResManager.loadKDString("自动退单", "PaymentBillList_37", "fi-cas-formplugin", new Object[0]);
-//                successPkIds = operationResult.getSuccessPkIds();
-//                Map<String, Object> data = new HashMap(16);
-//                data.put("billid", successPkIds);
-//                data.put("reason", reason);
-//                data.put("operateKey", "chargeback");
-//                PayBillListPlugnHelper.closeCallBack("CALLBACK_CHARGEBACK", this.getView(), data);
-//            }
-//        }
-//
-//        boolean refreshFlg = !"refresh".equals(key) && !"exportbylist".equals(key) && !"paypushchg".equals(key) && !"recpushchg".equals(key) && !"modify".equals(key);
-//        if (refreshFlg) {
-//            ((ListView)this.getView()).refresh();
-//        }
-//
-//        if ("beforesubmit".equals(key)) {
-//            successPkIds = operationResult.getSuccessPkIds();
-//            if (successPkIds != null && successPkIds.size() > 0) {
-//                operationResult.setShowMessage(false);
-//                this.getView().invokeOperation("submit");
-//            }
-//        } else if ("chargebackwrite".equals(key) && operationResult.isSuccess()) {
-//            ((IEntityOperate)e.getSource()).setCancelRefresh(false);
-//        } else if ("supplecontract".equals(key) && operationResult.isSuccess()) {
-//            this.openEditView("supplecontract");
-//        } else {
-//            boolean flag;
-//            if ("paypushchg".equals(key) && operationResult.isSuccess()) {
-//                flag = this.payInfoChgvaild("paychg");
-//                if (flag) {
-//                    PayBillListPlugnHelper.payInfoChg("nckd_cas_apbill_xz", "payAction", "cas_paychgbill_paychg", (String)null, this.getView());
-//                }
-//            } else if ("recpushchg".equals(key) && operationResult.isSuccess()) {
-//                flag = this.payInfoChgvaild("recchg");
-//                if (flag) {
-//                    this.openChangeChg("nckd_cas_apbill_xz", "recAction");
-//                }
-//            } else if ("urgentpay".equals(key) && operationResult.isSuccess()) {
-//                successPkIds = operationResult.getSuccessPkIds();
-//                if (!CollectionUtils.isEmpty(successPkIds)) {
-//                    this.getView().showSuccessNotification(ResManager.loadKDString("加急成功", "PaymentBillList_38", "fi-cas-formplugin", new Object[0]));
-//                }
-//            } else if ("cancelurgentpay".equals(key) && operationResult.isSuccess()) {
-//                successPkIds = operationResult.getSuccessPkIds();
-//                if (!CollectionUtils.isEmpty(successPkIds)) {
-//                    this.getView().showSuccessNotification(ResManager.loadKDString("取消加急成功", "PaymentBillList_39", "fi-cas-formplugin", new Object[0]));
-//                }
-//            }
-//        }
-//
-//        if (Arrays.asList("pay", "cancelpay", "syncbankbillstatus").contains(key) && operationResult != null && operationResult.isSuccess()) {
-//            this.getView().invokeOperation("refresh");
-//        }
-//
-//    }
-//
-//    public void filterContainerInit(FilterContainerInitArgs args) {
-//        super.filterContainerInit(args);
-//        this.initArgs = args;
-//        ListShowParameter listShowParameter = (ListShowParameter)this.getView().getFormShowParameter();
-//        String status = (String)listShowParameter.getCustomParam("status");
-//        String parentFormId = listShowParameter.getParentFormId();
-//        Iterator var5;
-//        FilterColumn filterColumn;
-//        List defaultValues;
-//        if (null == this.getCachedOrgList()) {
-//            var5 = args.getCommonFilterColumns().iterator();
-//
-//            while(var5.hasNext()) {
-//                filterColumn = (FilterColumn)var5.next();
-//                if ("org.id".equals(filterColumn.getFieldName())) {
-//                    defaultValues = filterColumn.getDefaultValues();
-//                    if (null != defaultValues && defaultValues.size() > 0) {
-//                        List<Long> selectedOrgIdList = (List)defaultValues.stream().filter((t) -> {
-//                            return StringUtils.isNotEmpty(t.toString());
-//                        }).map((item) -> {
-//                            return Long.valueOf(item.toString());
-//                        }).collect(Collectors.toList());
-//                        this.cacheSelectedOrgIdList(selectedOrgIdList);
-//                    }
-//                }
-//            }
-//        }
-//
-//        if (this.isFromControlCenter() && "fca_control_index".equals(parentFormId) || this.isTrack()) {
-//            var5 = args.getCommonFilterColumns().iterator();
-//
-//            while(var5.hasNext()) {
-//                filterColumn = (FilterColumn)var5.next();
-//                if ("org.id".equals(filterColumn.getFieldName())) {
-//                    filterColumn.setDefaultValue("");
-//                }
-//
-//                if ("billstatus".equals(filterColumn.getFieldName())) {
-//                    if (EmptyUtil.isNoEmpty(status)) {
-//                        defaultValues = Arrays.asList(status.split(","));
-//                        filterColumn.setDefaultValues(defaultValues);
-//                    } else {
-//                        filterColumn.setDefaultValues(new Object[]{""});
-//                    }
-//                }
-//
-//                if ("bizdate".equals(filterColumn.getFieldName())) {
-//                    filterColumn.setDefaultValue("");
-//                }
-//            }
-//        }
-//
-//        this.fillToolBar();
-//    }
-//
-//    public void filterContainerSearchClick(FilterContainerSearchClickArgs args) {
-//        super.filterContainerSearchClick(args);
-//        List<Long> selectedOrgIdList = args.getSelectMainOrgIds();
-//        if (selectedOrgIdList.size() > 0) {
-//            List<Object> object = this.getCachedOrgList();
-//            if (null == object || !object.toString().equals(selectedOrgIdList.toString())) {
-//                this.cacheSelectedOrgIdList(selectedOrgIdList);
-//                this.filterContainerInit(this.initArgs);
-//            }
-//        }
-//
-//    }
-//
-//    private void cacheSelectedOrgIdList(List<Long> selectedOrgIdList) {
-//        if (selectedOrgIdList != null) {
-//            this.getPageCache().put("selectedOrgIdList", SerializationUtils.toJsonString(selectedOrgIdList));
-//        } else {
-//            this.getPageCache().put("selectedOrgIdList", (String)null);
-//        }
-//
-//    }
-//
-//    protected List<Object> getCachedOrgList() {
-//        return this.getPageCache().get("selectedOrgIdList") != null ? (List)SerializationUtils.fromJsonString(this.getPageCache().get("selectedOrgIdList"), List.class) : null;
-//    }
-//
-//    private void fillToolBar() {
-//        this.getView().setVisible(false, new String[]{"recbook", "endorse"});
-//        List<Object> object = this.getCachedOrgList();
-//        if (object != null && object.size() != 0) {
-//            List<Long> cachedOrgList = (List)this.getCachedOrgList().stream().map((item) -> {
-//                return Long.valueOf(item.toString());
-//            }).collect(Collectors.toList());
-//            Iterator var3 = cachedOrgList.iterator();
-//
-//            boolean isdraft;
-//            boolean ischeck;
-//            boolean ispromissorynote;
-//            do {
-//                if (!var3.hasNext()) {
-//                    return;
-//                }
-//
-//                Long orgId = (Long)var3.next();
-//                isdraft = SystemParameterHelper.getCdmParameterBoolean(orgId, "isdraft");
-//                ischeck = SystemParameterHelper.getCdmParameterBoolean(orgId, "ischeck");
-//                ispromissorynote = SystemParameterHelper.getCdmParameterBoolean(orgId, "ispromissorynote");
-//            } while(!isdraft && !ischeck && !ispromissorynote);
-//
-//            this.getView().setVisible(true, new String[]{"recbook", "endorse"});
-//        } else {
-//            this.getView().setVisible(true, new String[]{"recbook", "endorse"});
-//        }
-//    }
-//
-//    public void beforeShowBill(BeforeShowBillFormEvent e) {
-//        super.beforeShowBill(e);
-//        BillShowParameter showParameter = e.getParameter();
-//        Object billId = showParameter.getPkId();
-//        BillOperationStatus billStatus = showParameter.getBillStatus();
-//        OperationStatus operationStatus = showParameter.getStatus();
-//        String operateType;
-//        if (billId != null) {
-//            if (OperationStatus.ADDNEW.equals(operationStatus)) {
-//                operateType = this.getPageCache().get("operate");
-//                if (operateType != null) {
-//                    showParameter.getCustomParams().put("operate", operateType);
-//                } else {
-//                    showParameter.getCustomParams().put("operate", OperateTypeEnum.COPY);
-//                }
-//            } else {
-//                DynamicObject info = BusinessDataServiceHelper.loadSingle(billId, "nckd_cas_apbill_xz", "id, billtype");
-//                DynamicObject billtype = info.getDynamicObject("billtype");
-//                if (billtype != null && BillTypeConstants.PAYBILL_SYN.equals(billtype.getPkValue())) {
-//                    showParameter.setFormId("nckd_cas_apbill_xz_synonym");
-//                    showParameter.setCaption(ResManager.loadKDString("同名转账", "PaymentBillEdit_24", "fi-cas-formplugin", new Object[0]));
-//                } else if (billtype != null && BillTypeConstants.PAYBILL_SPAN.equals(billtype.getPkValue())) {
-//                    showParameter.setFormId("nckd_cas_apbill_xz_spanmainpart");
-//                    showParameter.setCaption(ResManager.loadKDString("跨主体调拨", "PaymentBillEdit_28", "fi-cas-formplugin", new Object[0]));
-//                } else if (billtype != null && BillTypeConstants.PAYBILL_CASH.equals(billtype.getPkValue())) {
-//                    showParameter.setFormId("nckd_cas_apbill_xz_cash");
-//                    showParameter.setCaption(ResManager.loadKDString("现金存取", "PaymentBillEdit_25", "fi-cas-formplugin", new Object[0]));
-//                }
-//
-//                showParameter.setCustomParam("showConer", true);
-//            }
-//        } else if (BillOperationStatus.ADDNEW == billStatus) {
-//            showParameter.getCustomParams().put("paymentType", this.getPageCache().get("paymentType"));
-//            operateType = this.getPageCache().get("formId");
-//            if (StringUtils.isNotBlank(operateType)) {
-//                showParameter.setFormId(operateType);
-//            }
-//
-//            this.getView().showForm(showParameter);
-//        }
-//
-//    }
-//
-//    private void trackdownChgBill() {
-//        BillList list = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = list.getSelectedRows();
-//        Object[] selectedIds = selectedRows.getPrimaryKeyValues();
-//        if (selectedIds.length != 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据进行操作!", "AgentPayBillList_20", "fi-cas-formplugin", new Object[0]));
-//        }
-//
-//        DynamicObject[] paychgbill = BusinessDataServiceHelper.load("cas_paychgbill", "id,chgtype", new QFilter[]{new QFilter("sourcebillid", "=", selectedIds[0])});
-//        if (EmptyUtil.isEmpty(paychgbill) || paychgbill.length == 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("此单无变更单", "AgentPayBillList_21", "fi-cas-formplugin", new Object[0]));
-//        }
-//
-//        if (paychgbill.length == 1) {
-//            String formId = "";
-//            if (ChgTypeEnum.RECCHG.getValue().equals(paychgbill[0].getString("chgtype"))) {
-//                formId = "cas_paychgbill_recchg";
-//            } else {
-//                formId = "cas_paychgbill_paychg";
-//            }
-//
-//            BillShowParameter showParameter = new BillShowParameter();
-//            showParameter.setFormId(formId);
-//            showParameter.setPkId(paychgbill[0].getPkValue());
-//            showParameter.getOpenStyle().setShowType(ShowType.NonModal);
-//            this.getView().showForm(showParameter);
-//        } else {
-//            ListShowParameter showParameter = new ListShowParameter();
-//            showParameter.setHasRight(true);
-//            showParameter.setIsolationOrg(false);
-//            showParameter.setBillFormId("cas_paychgbill");
-//            List<QFilter> qFilters = new ArrayList();
-//            Set<Object> pks = new HashSet(paychgbill.length);
-//            DynamicObject[] var8 = paychgbill;
-//            int var9 = paychgbill.length;
-//
-//            for(int var10 = 0; var10 < var9; ++var10) {
-//                DynamicObject targetBill = var8[var10];
-//                pks.add(targetBill.get("id"));
-//            }
-//
-//            qFilters.add(new QFilter("id", "in", pks));
-//            showParameter.getListFilterParameter().setQFilters(qFilters);
-//            showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
-//            showParameter.setStatus(OperationStatus.VIEW);
-//            showParameter.setShowFilter(false);
-//            showParameter.setShowQuickFilter(false);
-//            showParameter.setCustomParam("isshowtoolbarap", "no");
-//            showParameter.setCustomParam("istmctracebillop", "yes");
-//            this.getView().showForm(showParameter);
-//        }
-//
-//    }
-//
-//    private void cancelPay() {
-//        BillList billList = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        if (selectedRows.size() <= 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_0", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            List<Long> paymentBillPks = new LinkedList();
-//            Iterator var4 = selectedRows.iterator();
-//
-//            while(var4.hasNext()) {
-//                ListSelectedRow selectedRow = (ListSelectedRow)var4.next();
-//                paymentBillPks.add((Long)selectedRow.getPrimaryKeyValue());
-//            }
-//
-//            QFilter payPidFilter = new QFilter("id", "in", paymentBillPks);
-//            DynamicObject[] payobjs = BusinessDataServiceHelper.load("nckd_cas_apbill_xz", "id,billno,isvoucher,billstatus,org", new QFilter[]{payPidFilter});
-//            StringBuilder sb = new StringBuilder();
-//            int flag = 0;
-//            DynamicObject[] var8 = payobjs;
-//            int var9 = payobjs.length;
-//
-//            for(int var10 = 0; var10 < var9; ++var10) {
-//                DynamicObject obj = var8[var10];
-//                int CS114 = SystemParameterHelper.getParameterInteger(obj.getDynamicObject("org").getLong("id"), "cs116");
-//                if (3 == CS114 && VoucherBookHelper.checkVoucherExist(obj.getPkValue(), "nckd_cas_apbill_xz")) {
-//                    ++flag;
-//                    String billno = obj.getString("billno");
-//                    sb.append(String.format(ResManager.loadKDString("(%s)单据已经生成凭证\r\n", "PaymentBillList_17", "fi-cas-formplugin", new Object[0]), billno));
-//                }
-//            }
-//
-//            if (flag == 1) {
-//                this.getView().showConfirm(sb.substring(0, sb.length() - 1) + ResManager.loadKDString(",是否继续取消付款?", "PaymentBillList_18", "fi-cas-formplugin", new Object[0]), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_CALLBACK", this));
-//            } else if (flag > 0) {
-//                this.getView().showConfirm(String.format(ResManager.loadKDString("存在%d个已生成凭证的单据,是否继续取消付款?", "PaymentBillList_19", "fi-cas-formplugin", new Object[0]), flag), sb.toString(), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_CALLBACK", this));
-//            } else if (!this.cancelPayCheckSettle(paymentBillPks, payobjs)) {
-//                this.getView().invokeOperation("cancelpay");
-//            }
-//        }
-//
-//    }
-//
-//    private void chargeBack(List<Object> billid, String operateKey) {
-//        FormShowParameter showParameter = new FormShowParameter();
-//        showParameter.setFormId("cas_chargeback");
-//        showParameter.setCustomParam("billid", JSON.toJSONString(billid));
-//        showParameter.setCustomParam("operateKey", operateKey);
-//        showParameter.getOpenStyle().setShowType(ShowType.NonModal);
-//        showParameter.setCloseCallBack(new CloseCallBack(this, "CALLBACK_CHARGEBACK"));
-//        this.getView().showForm(showParameter);
-//    }
-//
-//    private Boolean cancelPayCheckSettle(List<Long> paymentBillPks, DynamicObject[] payobjs) {
-//        Boolean result = Boolean.FALSE;
-//        List<Long> mainBillIds = SettleRecordQueryHelperForCas.getBillIdsByMain("ap_settlerecord", "nckd_cas_apbill_xz", paymentBillPks.toArray(), (QFilter)null);
-//        List<Long> asstBillIds = SettleRecordQueryHelperForCas.getBillIdsByAsst("ap_settlerecord", "nckd_cas_apbill_xz", paymentBillPks.toArray(), (QFilter)null);
-//        Set<Long> settleRecordIds = new HashSet();
-//        settleRecordIds.addAll(mainBillIds);
-//        settleRecordIds.addAll(asstBillIds);
-//        if (settleRecordIds.size() > 0) {
-//            StringBuilder settleSb = new StringBuilder();
-//            int settleFlag = 0;
-//            DynamicObject[] var9 = payobjs;
-//            int var10 = payobjs.length;
-//
-//            for(int var11 = 0; var11 < var10; ++var11) {
-//                DynamicObject obj = var9[var11];
-//                if (settleRecordIds.contains(obj.getPkValue())) {
-//                    ++settleFlag;
-//                    String billno = obj.getString("billno");
-//                    settleSb.append(String.format(ResManager.loadKDString("(%s)单据已经完成结算\r\n", "PaymentBillList_28", "fi-cas-formplugin", new Object[0]), billno));
-//                }
-//            }
-//
-//            if (settleFlag == 1) {
-//                this.getView().showConfirm(settleSb.substring(0, settleSb.length() - 1) + ResManager.loadKDString(",如果继续操作将会自动反结算对应的结算记录,是否继续?", "PaymentBillList_29", "fi-cas-formplugin", new Object[0]), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_SETTLE_CALLBACK", this));
-//            } else if (settleFlag > 1) {
-//                this.getView().showConfirm(String.format(ResManager.loadKDString("存在%d个已经完成结算的单据,如果继续操作将会自动反结算对应的结算记录,是否继续?", "PaymentBillList_30", "fi-cas-formplugin", new Object[0]), settleFlag), settleSb.toString(), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_SETTLE_CALLBACK", this));
-//            }
-//
-//            result = Boolean.TRUE;
-//        }
-//
-//        return result;
-//    }
-//
-//    private void viewDrafBill() {
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Object[] selectedRowPks = selectedRows.getPrimaryKeyValues();
-//        if (selectedRowPks.length == 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_3", "fi-cas-formplugin", new Object[0]));
-//        } else if (selectedRowPks.length > 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据联查!", "PaymentBillList_4", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            Object primaryKey = selectedRowPks[0];
-//            DynamicObject paybill = BusinessDataServiceHelper.loadSingle(primaryKey, "nckd_cas_apbill_xz", "id,draftbill");
-//            DynamicObjectCollection draftBills = paybill.getDynamicObjectCollection("draftbill");
-//            if (draftBills == null || draftBills.size() <= 0) {
-//                this.getView().showTipNotification(ResManager.loadKDString("暂无关联的票据记录。", "PaymentBillDraftEditPlugin_9", "fi-cas-formplugin", new Object[0]));
-//                return;
-//            }
-//
-//            Set<Long> idSet = new HashSet();
-//            Iterator var8 = draftBills.iterator();
-//
-//            while(var8.hasNext()) {
-//                DynamicObject draftBill = (DynamicObject)var8.next();
-//                idSet.add(((DynamicObject)draftBill.get("fbasedataid")).getLong("id"));
-//            }
-//
-//            PayBillListPlugnHelper.viewDrafBill(idSet, this.getView());
-//        }
-//
-//    }
-//
-//    private void viewBatchInput() {
-//        FormShowParameter showPage = new FormShowParameter();
-//        showPage.setFormId("cas_batchpaybill");
-//        showPage.setAppId("cas");
-//        showPage.setStatus(OperationStatus.EDIT);
-//        showPage.getOpenStyle().setShowType(ShowType.Modal);
-//        this.getView().showForm(showPage);
-//    }
-//
-//    public void signCallback(SignCallbackEvent evt) {
-//        if (evt.getCallbackId().equals("signbeforecommitbe")) {
-//            ClientMethodResult ret = evt.getResult();
-//            if (ret.getSuccess()) {
-//                OperateOption operateOption = OperateOption.create();
-//                operateOption.setVariableValue("ishasright", "true");
-//                operateOption.setVariableValue("signCallbackFlag", "true");
-//                operateOption.setVariableValue("signFirstSave", "false");
-//                operateOption.setVariableValue("signResult", SerializationUtils.toJsonString(evt.getResult().getResult()));
-//                operateOption.setVariableValue("clearResult", evt.getClearText());
-//                OperationResult operationResult = this.getView().invokeOperation("beforecommitbe", operateOption);
-//                if (operationResult.isSuccess()) {
-//                    this.getView().invokeOperation("commitbe");
-//                } else {
-//                    logger.info(" signcallback fail ");
-//                    if (EmptyUtil.isNoEmpty(operationResult.getMessage())) {
-//                        evt.getView().showTipNotification(operationResult.getMessage());
-//                    }
-//                }
-//            } else {
-//                logger.info(" signbeforecommitbe SignCallbackEvent fail ");
-//            }
-//        }
-//
-//    }
-//}

+ 0 - 1301
src/main/java/fi/cas/formplugin/ArBillListPlugin.java

@@ -1,1301 +0,0 @@
-//package fi.cas.formplugin;
-//
-//import com.alibaba.fastjson.JSON;
-//import kd.bos.bill.BillOperationStatus;
-//import kd.bos.bill.BillShowParameter;
-//import kd.bos.bill.OperationStatus;
-//import kd.bos.dataentity.OperateOption;
-//import kd.bos.dataentity.RefObject;
-//import kd.bos.dataentity.entity.DynamicObject;
-//import kd.bos.dataentity.entity.DynamicObjectCollection;
-//import kd.bos.dataentity.resource.ResManager;
-//import kd.bos.dataentity.serialization.SerializationUtils;
-//import kd.bos.dataentity.utils.StringUtils;
-//import kd.bos.entity.EntityMetadataCache;
-//import kd.bos.entity.datamodel.ListSelectedRow;
-//import kd.bos.entity.datamodel.ListSelectedRowCollection;
-//import kd.bos.entity.operate.IEntityOperate;
-//import kd.bos.entity.operate.result.OperationResult;
-//import kd.bos.exception.KDBizException;
-//import kd.bos.filter.FilterColumn;
-//import kd.bos.form.*;
-//import kd.bos.form.control.events.BeforeItemClickEvent;
-//import kd.bos.form.control.events.ItemClickEvent;
-//import kd.bos.form.events.*;
-//import kd.bos.form.operate.AbstractOperate;
-//import kd.bos.form.operate.FormOperate;
-//import kd.bos.form.operate.SignOperateCallback;
-//import kd.bos.list.BillList;
-//import kd.bos.list.ListShowParameter;
-//import kd.bos.list.events.BeforeShowBillFormEvent;
-//import kd.bos.logging.Log;
-//import kd.bos.logging.LogFactory;
-//import kd.bos.mvc.list.ListView;
-//import kd.bos.orm.query.QFilter;
-//import kd.bos.orm.util.CollectionUtils;
-//import kd.bos.servicehelper.BusinessDataServiceHelper;
-//import kd.bos.servicehelper.DispatchServiceHelper;
-//import kd.bos.servicehelper.QueryServiceHelper;
-//import kd.bos.servicehelper.botp.BFTrackerServiceHelper;
-//import kd.bos.servicehelper.operation.OperationServiceHelper;
-//import kd.bos.servicehelper.operation.SaveServiceHelper;
-//import kd.fi.cas.business.errorcode.PaymentErrorCode;
-//import kd.fi.cas.business.helper.PayBillHepler;
-//import kd.fi.cas.business.opservice.impl.PaymentPayImpl;
-//import kd.fi.cas.consts.BillTypeConstants;
-//import kd.fi.cas.enums.*;
-//import kd.fi.cas.formplugin.common.AbstractCasBillListPlugin;
-//import kd.fi.cas.formplugin.helper.InitCheckPluginHelper;
-//import kd.fi.cas.helper.*;
-//import kd.fi.cas.util.EmptyUtil;
-//import org.apache.commons.lang3.tuple.Pair;
-//
-//import java.util.*;
-//import java.util.stream.Collectors;
-//import java.util.stream.Stream;
-//
-///**
-// * 应收挂账单列表插件
-// * 2024-07-24 wangj
-// * 主要功能:应收挂账单标准列表插件改
-// */
-//public class ArBillListPlugin extends AbstractCasBillListPlugin implements SignCallbackLisenter {
-//    private static final String KEY_CHANGECHG_CALLBACK = "KEY_CHANGECHG_CALLBACK";
-//    private static final String BAR_VIEWDIAGRAM = "barviewdiagram";
-//    private static final String KEY_CALLBACK_CHARGEBACK = "CALLBACK_CHARGEBACK";
-//    private static final String KEY_CANCELLATION = "cancellation";
-//    private static final String CONFIRM_DEL_CALLBACK = "CONFIRM_DEL_CALLBACK";
-//    private static final String KEY_DIFFPAY_CALLBACK = "KEY_DIFFPAY_CALLBACK";
-//    private static final String KEY_CLOSECALLBACK_CHARGEBACK = "CALLBACK_SELECTDRAFT";
-//    private static final String BAR_BATCH_INPUT = "batchinput";
-//    private FilterContainerInitArgs initArgs;
-//    private static Log logger = LogFactory.getLog(kd.fi.cas.formplugin.PaymentBillList.class);
-//    private List<String> settleTypes;
-//
-//    public ArBillListPlugin() {
-//        this.settleTypes = Arrays.asList(SettleMentTypeEnum.PROMISSORY.getValue(), SettleMentTypeEnum.CHECK.getValue(), SettleMentTypeEnum.DRAFT.getValue(), SettleMentTypeEnum.BUSINESS.getValue(), SettleMentTypeEnum.BANK.getValue());
-//    }
-//
-//    public boolean isFromControlCenter() {
-//        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
-//        Object isUnTreated = formShowParameter.getCustomParam("isUnTreated");
-//        return EmptyUtil.isEmpty(isUnTreated) ? false : (Boolean)isUnTreated;
-//    }
-//
-//    public boolean isTrack() {
-//        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
-//        Object isTrack = formShowParameter.getCustomParam("isTrack");
-//        return EmptyUtil.isEmpty(isTrack) ? false : (Boolean)isTrack;
-//    }
-//
-//    public void setFilter(SetFilterEvent e) {
-//        super.setFilter(e);
-//        ListShowParameter listShowParameter = (ListShowParameter)this.getView().getFormShowParameter();
-//        String parentFormId = listShowParameter.getParentFormId();
-//        Object isFromTrack = listShowParameter.getCustomParams().getOrDefault("isFromTrack", (Object)null);
-//        PaymentQueryHelper.enhanceNumFilterToIdFilter(e.getQFilters());
-//        logger.info("付款单-调度中心 parentFormId :" + parentFormId + "; === " + this.isFromControlCenter());
-//        if (this.isFromControlCenter() && "fca_control_index".equals(parentFormId)) {
-//            if (e.getMainOrgQFilter() != null) {
-//                e.getMainOrgQFilter().clearNests();
-//            }
-//
-//            Object authOrgIds = listShowParameter.getCustomParam("authOrgIds");
-//            Long p = 0L;
-//            if (authOrgIds instanceof Integer) {
-//                p = ((Integer)authOrgIds).longValue();
-//            } else if (authOrgIds instanceof Long) {
-//                p = (Long)authOrgIds;
-//            } else if (authOrgIds instanceof String) {
-//                p = Long.valueOf(authOrgIds.toString());
-//            }
-//
-//            e.getQFilters().add(PayBillListPlugnHelper.getFcaFilter((String)listShowParameter.getCustomParam("status"), p));
-//        } else if (("cas_apphome_grid".equals(parentFormId) || "fca_apphome".equals(parentFormId) || "fs_apphome".equals(parentFormId)) && (null == isFromTrack || isFromTrack.toString().trim().equals(""))) {
-//            e.getQFilters().add(PayBillListPlugnHelper.getListFilter(listShowParameter.getBillFormId(), (String)listShowParameter.getCustomParam("appid")));
-//        }
-//
-//    }
-//
-//    public void afterBindData(EventObject e) {
-//        super.afterBindData(e);
-//        if (this.isFromControlCenter()) {
-//            String status = (String)this.getView().getFormShowParameter().getCustomParam("status");
-//            if (BillStatusEnum.SAVE.getValue().equals(status)) {
-//                this.getView().setVisible(false, new String[]{"tblnew", "tblcheck", "tblcopy", "tblpay", "barinfochg", "baritemap2", "tblprint"});
-//            } else if (BillStatusEnum.SUBMIT.getValue().equals(status)) {
-//                this.getView().setVisible(false, new String[]{"tblnew", "tblsubmit", "tblcopy", "tblpay", "barinfochg", "baritemap2", "tblprint"});
-//            } else {
-//                this.getView().setVisible(false, new String[]{"tblnew", "tblsubmit", "tblcopy", "tblcheck", "barinfochg", "baritemap2", "tblprint"});
-//            }
-//        }
-//
-//    }
-//
-//    public void beforeItemClick(BeforeItemClickEvent evt) {
-//        String opKey = evt.getOperationKey();
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectRows = billList.getSelectedRows();
-//        Set selectRowsPks;
-//        QFilter[] delFilters;
-//        DynamicObject[] paybills;
-//        if ("delete".equals(opKey) && selectRows.size() > 0) {
-////            selectRowsPks = (Set)selectRows.parallelStream().map((row) -> {
-////                return row.getPrimaryKeyValue();
-////            }).collect(Collectors.toSet());
-////            delFilters = new QFilter[]{new QFilter("id", "in", selectRowsPks), new QFilter("hotaccount", "!=", "2"), new QFilter("sourcebilltype", "=", "cas_recbill")};
-////            paybills = BusinessDataServiceHelper.load("nckd_cas_arbill", "billno", delFilters);
-////            if (EmptyUtil.isNoEmpty(paybills)) {
-////                evt.setCancel(true);
-////                String billnoStr = (String)((Stream)Arrays.stream(paybills).parallel()).map((d) -> {
-////                    return d.getString("billno");
-////                }).collect(Collectors.joining("、"));
-////                this.getView().showConfirm(String.format(ResManager.loadKDString("%s付款单由内部收付协同业务自动生成,是否确认删除?", "PaymentBillEdit_23", "fi-cas-formplugin", new Object[0]), billnoStr), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_DEL_CALLBACK", this));
-////            }
-//        } else if ("pay".equals(opKey) && selectRows.size() > 0) {
-//            selectRowsPks = (Set)selectRows.parallelStream().map((row) -> {
-//                return row.getPrimaryKeyValue();
-//            }).collect(Collectors.toSet());
-//            delFilters = new QFilter[]{new QFilter("id", "in", selectRowsPks)};
-//            paybills = BusinessDataServiceHelper.load("nckd_cas_arbill", "billno,org,settletype", delFilters);
-//            if (EmptyUtil.isNoEmpty(paybills)) {
-//                boolean hasErrorData = false;
-//                DynamicObject[] var9 = paybills;
-//                int var10 = paybills.length;
-//
-//                for(int var11 = 0; var11 < var10; ++var11) {
-//                    DynamicObject dataEntity = var9[var11];
-//                    long orgId = dataEntity.getDynamicObject("org").getLong("id");
-//                    boolean selectDraftFlag = SystemParameterHelper.getParameterBoolean(orgId, "cs122");
-//                    String settleTypeKey = DraftHelper.getKey(dataEntity.get("settletype"));
-//                    logger.info("selectDraftFlag is:" + selectDraftFlag + ",key:" + settleTypeKey);
-//                    boolean isdraft = SystemParameterHelper.getCdmParameterBoolean(orgId, "isdraft");
-//                    boolean ischeck = SystemParameterHelper.getCdmParameterBoolean(orgId, "ischeck");
-//                    boolean ispromissorynote = SystemParameterHelper.getCdmParameterBoolean(orgId, "ispromissorynote");
-//                    if (!CasHelper.isEmpty(settleTypeKey)) {
-//                        String typeName;
-//                        switch (settleTypeKey) {
-//                            case "isdraft":
-//                                if (isdraft && !selectDraftFlag) {
-//                                    typeName = ResManager.loadKDString("汇票", "DraftHelper_4", "fi-cas-common", new Object[0]);
-//                                    this.cancelAndWarn(evt, dataEntity, typeName);
-//                                }
-//                                break;
-//                            case "ischeck":
-//                                if (ischeck && !selectDraftFlag) {
-//                                    typeName = ResManager.loadKDString("支票", "DraftHelper_5", "fi-cas-common", new Object[0]);
-//                                    this.cancelAndWarn(evt, dataEntity, typeName);
-//                                }
-//                                break;
-//                            case "ispromissorynote":
-//                                if (ispromissorynote && !selectDraftFlag) {
-//                                    typeName = ResManager.loadKDString("本票", "DraftHelper_6", "fi-cas-common", new Object[0]);
-//                                    this.cancelAndWarn(evt, dataEntity, typeName);
-//                                }
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//
-//        if ("commitbe".equals(opKey) && selectRows.size() > 0) {
-//            OperateOption op = OperateOption.create();
-//            op.setVariableValue("ishasright", "true");
-//            Object[] selectedRowPks = this.getSelectedRows().getPrimaryKeyValues();
-//            OperationResult operationResult = OperationServiceHelper.executeOperate("beforecommitbe", "nckd_cas_arbill", selectedRowPks, op);
-//            if (!operationResult.isSuccess() && operationResult.isNeedSign()) {
-//                SignOperateCallback signOperate = new SignOperateCallback(this.getView(), this, op, ClientCallback.SignClientType.Secondry, "signbeforecommitbe");
-//                OperationResult ops = signOperate.sign(operationResult);
-//                evt.setCancel(true);
-//                if (!ops.isSuccess()) {
-//                    logger.info(" beforecommitbe sign error ");
-//                    if (ops.isShowMessage() && EmptyUtil.isNoEmpty(ops.getMessage())) {
-//                        this.getView().showTipNotification(ops.getMessage());
-//                    }
-//                }
-//            }
-//        }
-//
-//    }
-//
-//    private void cancelAndWarn(BeforeItemClickEvent evt, DynamicObject dataEntity, String typeName) {
-//        String msg = String.format(ResManager.loadKDString("%1$s :结算方式类别为%2$s的付款单不支持确认付款", "DraftHelper_7_1", "fi-cas-common", new Object[0]), dataEntity.getString("billno"), typeName);
-//        evt.setCancel(true);
-//        this.getView().showTipNotification(msg);
-//    }
-//
-//    public void itemClick(ItemClickEvent evt) {
-//        super.itemClick(evt);
-//        String key = evt.getItemKey();
-//        switch (key.toLowerCase(Locale.ENGLISH)) {
-//            case "tblnew4ap":
-//                this.addNew(PaymentTypeEnum.AP, "nckd_cas_arbill");
-//                break;
-//            case "tblnew4er":
-//                this.addNew(PaymentTypeEnum.ER, "nckd_cas_arbill");
-//                break;
-//            case "tblnew4otr":
-//                this.addNew(PaymentTypeEnum.OTR, "nckd_cas_arbill");
-//                break;
-//            case "tblnew4syn":
-//                this.addNew(PaymentTypeEnum.SYN, "nckd_cas_arbill_synonym");
-//                break;
-//            case "tblnew4cash":
-//                this.addNew(PaymentTypeEnum.CASH, "nckd_cas_arbill_cash");
-//            case "tbloffset":
-//            default:
-//                break;
-//            case "tblbeforesubmit":
-//                this.beforeSubmit();
-//                break;
-//            case "barviewdiagram":
-//                this.viewDiagram();
-//                break;
-//            case "viewsettle":
-//                this.viewSettle();
-//                break;
-//            case "tblcancelpay":
-//                this.cancelPay();
-//                break;
-//            case "viewdrafbill":
-//                this.viewDrafBill();
-//                break;
-//            case "tblnewspan":
-//                this.addNew(PaymentTypeEnum.SPAN, "nckd_cas_arbill_spanmainpart");
-//                break;
-//            case "batchinput":
-//                this.viewBatchInput();
-//        }
-//
-//    }
-//
-//    private void openEditView(String opName) {
-//        BillList billList = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Object[] selectedRowPks = selectedRows.getPrimaryKeyValues();
-//        if (selectedRowPks.length != 1) {
-//            this.getView().showErrorNotification(ResManager.loadKDString("请选中一行再进行操作", "PaymentBillList_22", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            ListSelectedRow currentSelectedRowInfo = selectedRows.get(0);
-//            String billStatus = currentSelectedRowInfo.getBillStatus();
-//            if (!BillStatusEnum.RENOTE.getValue().equals(billStatus) && !BillStatusEnum.CHARGEBANK.getValue().equals(billStatus) && !BillStatusEnum.REFUND.getValue().equals(billStatus) && !BillStatusEnum.DEAD.getValue().equals(billStatus) && !BillStatusEnum.SAVE.getValue().equals(billStatus)) {
-//                Object primaryKeyValue = currentSelectedRowInfo.getPrimaryKeyValue();
-//                DynamicObject paybillDO = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_cas_arbill", "paymenttype");
-//                DynamicObject paymenttype = paybillDO.getDynamicObject("paymenttype");
-//                boolean ispartpayment = paymenttype.getBoolean("ispartpayment");
-//                if (!ispartpayment) {
-//                    this.getView().showErrorNotification(ResManager.loadKDString("此单据付款类型没有参与应付结算,不能进行此操作", "PaymentBillList_24", "fi-cas-formplugin", new Object[0]));
-//                } else {
-//                    BillShowParameter showParameter = new BillShowParameter();
-//                    showParameter.setCustomParam("op_supplecontract", opName);
-//                    showParameter.setPkId(primaryKeyValue);
-//                    showParameter.setCaption(ResManager.loadKDString("付款单", "PaymentBillList_25", "fi-cas-formplugin", new Object[0]));
-//                    showParameter.setFormId("nckd_cas_arbill_contract");
-//                    showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
-//                    this.getView().showForm(showParameter);
-//                }
-//            } else {
-//                this.getView().showErrorNotification(ResManager.loadKDString("单据状态不符合,不能进行此操作", "PaymentBillList_23", "fi-cas-formplugin", new Object[0]));
-//            }
-//        }
-//    }
-//
-//    private void openChangeChg(String sourceType, String sourceAction) {
-//        FormShowParameter showParameter = new FormShowParameter();
-//        BillList billList = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Long sourceId = (Long)selectedRows.get(0).getPrimaryKeyValue();
-//        StyleCss css = new StyleCss();
-//        css.setWidth("700");
-//        css.setHeight("400");
-//        showParameter.getOpenStyle().setInlineStyleCss(css);
-//        showParameter.setCustomParam("sourceId", sourceId);
-//        showParameter.setCustomParam("sourceType", sourceType);
-//        showParameter.setCustomParam("sourceAction", sourceAction);
-//        showParameter.setFormId("cas_changemodeselection");
-//        showParameter.getOpenStyle().setShowType(ShowType.Modal);
-//        showParameter.setStatus(OperationStatus.ADDNEW);
-//        showParameter.setCloseCallBack(new CloseCallBack(this, "KEY_CHANGECHG_CALLBACK"));
-//        this.getView().showForm(showParameter);
-//    }
-//
-//    private void addNew(PaymentTypeEnum paymentType, String formId) {
-//        this.getPageCache().put("paymentType", paymentType.name());
-//        this.getPageCache().put("formId", formId);
-//        this.getView().invokeOperation("new");
-//    }
-//
-//    public void closedCallBack(ClosedCallBackEvent e) {
-//        super.closedCallBack(e);
-//        PayBillListPlugnHelper.closeCallBack(e.getActionId(), this.getView(), e.getReturnData());
-//    }
-//
-//    private void beforeSubmit() {
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        if (selectedRows.size() <= 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_0", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            this.getView().invokeOperation("beforesubmit");
-//        }
-//
-//    }
-//
-//    private void viewDiagram() {
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Object[] selectedRowPks = selectedRows.getPrimaryKeyValues();
-//        if (selectedRowPks.length != 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_0", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            ListSelectedRow selectedRow = selectedRows.get(0);
-//            Long billId = (Long)selectedRow.getPrimaryKeyValue();
-//            FormShowParameter showParameter = new FormShowParameter();
-//            showParameter.setFormId("wf_viewflowchart");
-//            showParameter.setClientParam("billId", billId);
-//            showParameter.getOpenStyle().setShowType(ShowType.NewWindow);
-//            this.getView().showForm(showParameter);
-//        }
-//    }
-//
-//    private void viewSettle() {
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Object[] selectedRowPks = selectedRows.getPrimaryKeyValues();
-//        if (selectedRowPks.length == 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_3", "fi-cas-formplugin", new Object[0]));
-//        } else if (selectedRowPks.length > 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据联查!", "PaymentBillList_4", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            Object primaryKey = selectedRowPks[0];
-//            List<Long> mainSettleIds = SettleRecordQueryHelperForCas.getSettleIdsByMain("ap_settlerecord", "nckd_cas_arbill", new Object[]{primaryKey});
-//            List<Long> asstSettleIds = SettleRecordQueryHelperForCas.getSettleIdsByAsst("ap_settlerecord", "nckd_cas_arbill", new Object[]{primaryKey});
-//            Set<Long> settleRecordIds = new HashSet();
-//            settleRecordIds.addAll(mainSettleIds);
-//            settleRecordIds.addAll(asstSettleIds);
-//            if (settleRecordIds.size() > 0) {
-//                PayBillListPlugnHelper.viewSettle(settleRecordIds, this.getView());
-//            } else {
-//                this.getView().showTipNotification(ResManager.loadKDString("暂无结算记录。", "PaymentBillList_5", "fi-cas-formplugin", new Object[0]));
-//            }
-//        }
-//
-//    }
-//
-//    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
-//        super.beforeDoOperation(args);
-//        AbstractOperate op = (AbstractOperate)args.getSource();
-//        String key = op.getOperateKey();
-//        BillList list;
-//        ListSelectedRowCollection selectedRows;
-//        DynamicObject dbData;
-//        Object[] selectedRowPks;
-//        DynamicObject[] payBills;
-//        ListSelectedRowCollection lstCollection;
-//        DynamicObject payBill;
-//        int var45;
-//        if ("trackdown".equals(key)) {
-//            list = (BillList)this.getView().getControl("billlistap");
-//            selectedRows = list.getSelectedRows();
-//            lstCollection = list.getSelectedRows();
-//            payBill = BusinessDataServiceHelper.loadSingle(lstCollection.get(0).getPrimaryKeyValue(), "nckd_cas_arbill", "id,settletype");
-//            dbData = payBill.getDynamicObject("settletype");
-//            if (dbData != null) {
-//                String settlementtype = dbData.getString("settlementtype");
-//                if (EmptyUtil.isNoEmpty(settlementtype) && this.settleTypes.contains(settlementtype)) {
-//                    op.getOption().setVariableValue("botp_track_edit_status", "true");
-//                }
-//            }
-//        } else {
-//            FormOperate operate;
-//            if ("chargeback".equals(key)) {
-//                operate = (FormOperate)args.getSource();
-//                operate.getOption().setVariableValue("strictvalidation", String.valueOf(true));
-//            } else if ("invalid".equals(key)) {
-//                boolean result = op.getOption().tryGetVariableValue("cancellation", new RefObject());
-//                if (!result) {
-//                    list = (BillList)this.getView().getControl("billlistap");
-//                    lstCollection = list.getSelectedRows();
-//                    args.cancel = true;
-//                    if (CasHelper.getSelectedRowSize(lstCollection) > 1) {
-//                        this.getView().showTipNotification(ResManager.loadKDString("作废仅支持对单张单据处理,请修改选择范围。", "PaymentBillList_8", "fi-cas-formplugin", new Object[0]));
-//                        return;
-//                    }
-//
-//                    this.getView().showConfirm(ResManager.loadKDString("作废选中记录后,将无法恢复,确认要作废该记录吗?", "PaymentBillList_9", "fi-cas-formplugin", new Object[0]), MessageBoxOptions.OKCancel, new ConfirmCallBackListener("cancellation", this));
-//                }
-//            } else {
-//                DynamicObject settletype;
-//                String payConfirm;
-//                if ("endorse".equals(key)) {
-//                    list = (BillList)this.getView().getControl("billlistap");
-//                    selectedRows = list.getSelectedRows();
-//                    if (CasHelper.getSelectedRowSize(selectedRows) > 1) {
-//                        this.getView().showTipNotification(ResManager.loadKDString("背书仅支持对单张单据处理,请修改选择范围。", "PaymentBillList_20", "fi-cas-formplugin", new Object[0]));
-//                        args.cancel = true;
-//                        return;
-//                    }
-//
-//                    if (selectedRows.size() == 1) {
-//                        DynamicObject info = BusinessDataServiceHelper.loadSingle(selectedRows.get(0).getPrimaryKeyValue(), "nckd_cas_arbill");
-//                        payBill = info.getDynamicObject("payeracctbank");
-//                        payConfirm = info.getString("billstatus");
-//                        if (!BillStatusEnum.AUDIT.getValue().equals(payConfirm)) {
-//                            this.getView().showTipNotification(ResManager.loadKDString("只有已审核状态的单据允许背书。", "PaymentBillDraftEditPlugin_2", "fi-cas-formplugin", new Object[0]));
-//                            args.cancel = true;
-//                            return;
-//                        }
-//
-//                        if (PriorityEnum.DEFER.getValue().equals(info.getString("priority"))) {
-//                            this.getView().showTipNotification(ResManager.loadKDString("单据已冻结,不支持该操作。", "PaymentBillFreezeValidator_0", "fi-cas-opplugin", new Object[0]));
-//                            args.cancel = true;
-//                            return;
-//                        }
-//
-//                        if (!InitCheckPluginHelper.checkInitForPlugin(this.getView(), info.getDynamicObject("org"), new String[0])) {
-//                            args.setCancel(true);
-//                            return;
-//                        }
-//
-//                        if (PaymentBillPluginHelper.checkPayeeTypeFreeze(Collections.singletonList(info))) {
-//                            this.getView().showTipNotification((new PaymentErrorCode()).CANOTDOTHISOP_WHENSUPPLIERFREEZE().getMessage());
-//                            args.setCancel(true);
-//                            return;
-//                        }
-//
-//                        settletype = info.getDynamicObject("settletype");
-//                        DynamicObjectCollection draftbills = info.getDynamicObjectCollection("draftbill");
-//                        if (settletype == null || draftbills == null || !settletype.getString("settlementtype").equals("5") && !settletype.getString("settlementtype").equals("6") || draftbills.size() == 0) {
-//                            this.getView().showTipNotification(ResManager.loadKDString("背书仅适应结算方式类型是承兑汇票、支票或本票且结算号选择了库存票据的付款单,你所选单据不支持背书", "PaymentBillDraftEditPlugin_3", "fi-cas-formplugin", new Object[0]));
-//                            args.cancel = true;
-//                            return;
-//                        }
-//
-//                        if (!DraftHelper.isHasRecDrafBill(draftbills)) {
-//                            args.setCancel(true);
-//                            this.getView().showTipNotification(ResManager.loadKDString("背书仅适用选择了库存应收票据的付款单,你所选单据不支持背书", "PaymentBillDraftEditPlugin_10", "fi-cas-formplugin", new Object[0]));
-//                            return;
-//                        }
-//
-//                        if (DraftHelper.isHasPayDrafBill(draftbills)) {
-//                            args.setCancel(true);
-//                            this.getView().showTipNotification(ResManager.loadKDString("存在应付票据不能确认背书,请在确认付款环节选择需要关联付款的应付票据和已背书的应收票据", "PaymentBillDraftEditPlugin_10_1", "fi-cas-formplugin", new Object[0]));
-//                            return;
-//                        }
-//
-//                        if (!DraftHelper.isParameterDraftOn((Long)selectedRows.get(0).getPrimaryKeyValue(), "nckd_cas_arbill")) {
-//                            args.setCancel(true);
-//                            this.getView().showTipNotification(ResManager.loadKDString("该组织没有启用相应的系统参数,请配置相应的系统参数!", "PaymentBillDraftEditPlugin_4", "fi-cas-formplugin", new Object[0]));
-//                            return;
-//                        }
-//
-//                        if (payBill != null && PayBillCrossHelper.isIfmBankAcc(payBill)) {
-//                            throw new KDBizException(ResManager.loadKDString("内部账户请选择内部结算付款。", "PaymentErrorCode_48", "fi-cas-business", new Object[0]));
-//                        }
-//
-//                        if (settletype != null && draftbills != null && draftbills.size() > 0 && Arrays.asList("5", "6").contains(settletype.getString("settlementtype"))) {
-//                            Pair<String, List<String>> result = (Pair) DispatchServiceHelper.invokeBizService("tmc", "cdm", "EBDraftAllocationService", "doDraftAllocationService", new Object[]{info});
-//                            if (result != null) {
-//                                if ("ING".equals(result.getLeft())) {
-//                                    args.cancel = true;
-//                                    info.set("billstatus", BillStatusEnum.DRAFTING.getValue());
-//                                    SaveServiceHelper.save(new DynamicObject[]{info});
-//                                    this.getView().showSuccessNotification(BillStatusEnum.DRAFTING.getName());
-//                                    this.getView().invokeOperation("refresh");
-//                                } else if (!"S".equals(result.getLeft())) {
-//                                    args.cancel = true;
-//                                    this.getView().showErrorNotification(String.join("\n", (Iterable)result.getRight()));
-//                                }
-//                            }
-//                        }
-//                    }
-//                } else {
-//                    DynamicObject[] payableBills;
-//                    DynamicObject accountBank;
-//                    DynamicObject payableBill;
-//                    if ("recbook".equals(key)) {
-//                        list = (BillList)this.getControl("billlistap");
-//                        selectedRows = list.getSelectedRows();
-//                        if (CasHelper.getSelectedRowSize(selectedRows) > 1) {
-//                            args.setCancel(true);
-//                            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据!", "ReceivingBillList_10", "fi-cas-formplugin", new Object[0]));
-//                        } else {
-//                            Long primaryKeyValue = (Long)selectedRows.get(0).getPrimaryKeyValue();
-//                            payBill = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_cas_arbill");
-//                            if (!BillStatusEnum.AUDIT.getValue().equals(payBill.getString("billstatus"))) {
-//                                args.setCancel(true);
-//                                this.getView().showTipNotification(ResManager.loadKDString("只有已审核状态的单据允许开票登记。", "PaymentBillDraftEditPlugin_5", "fi-cas-formplugin", new Object[0]));
-//                            } else if (PriorityEnum.DEFER.getValue().equals(payBill.getString("priority"))) {
-//                                args.setCancel(true);
-//                                this.getView().showTipNotification(ResManager.loadKDString("单据已冻结,不支持该操作。", "PaymentBillFreezeValidator_0", "fi-cas-opplugin", new Object[0]));
-//                            } else {
-//                                if (!InitCheckPluginHelper.checkInitForPlugin(this.getView(), payBill.getDynamicObject("org"), new String[0])) {
-//                                    args.setCancel(true);
-//                                    return;
-//                                }
-//
-//                                if (PaymentBillPluginHelper.checkPayeeTypeFreeze(Collections.singletonList(payBill))) {
-//                                    this.getView().showTipNotification((new PaymentErrorCode()).CANOTDOTHISOP_WHENSUPPLIERFREEZE().getMessage());
-//                                    args.setCancel(true);
-//                                    return;
-//                                }
-//
-//                                if (!DraftHelper.isDraftBill(primaryKeyValue, "nckd_cas_arbill")) {
-//                                    args.setCancel(true);
-//                                    this.getView().showTipNotification(ResManager.loadKDString("开票登记仅适用结算方式类型是承兑汇票、支票或本票的付款单,你所选单据不支持开票登记!", "PaymentBillDraftEditPlugin_6", "fi-cas-formplugin", new Object[0]));
-//                                } else if (this.isDraftBill(payBill)) {
-//                                    args.setCancel(true);
-//                                    if (DraftHelper.isHasRecDrafBill((DynamicObjectCollection)payBill.get("draftbill"))) {
-//                                        this.getView().showTipNotification(ResManager.loadKDString("付款单已选择相关应收票据,请进行背书处理!", "PaymentBillDraftEditPlugin_7", "fi-cas-formplugin", new Object[0]));
-//                                    } else {
-//                                        this.getView().showTipNotification(ResManager.loadKDString("付款单已选择相关应付票据,请进行确认付款处理!", "PaymentBillDraftEditPlugin_11", "fi-cas-formplugin", new Object[0]));
-//                                    }
-//                                } else if (!DraftHelper.isParameterDraftOn(primaryKeyValue, "nckd_cas_arbill")) {
-//                                    args.setCancel(true);
-//                                    this.getView().showTipNotification(ResManager.loadKDString("该组织没有启用相应的系统参数,请配置相应的系统参数!", "PaymentBillDraftEditPlugin_4", "fi-cas-formplugin", new Object[0]));
-//                                } else {
-//                                    Map<String, HashSet<Long>> botpMap = BFTrackerServiceHelper.findTargetBills("nckd_cas_arbill", new Long[]{primaryKeyValue});
-//                                    HashSet<Long> pkValues = (HashSet)botpMap.get("cdm_payablebill");
-//                                    boolean isExistNotDeadFlag = false;
-//                                    if (null != pkValues && pkValues.size() > 0) {
-//                                        payableBills = BusinessDataServiceHelper.load("cdm_payablebill", "id,billstatus", new QFilter[]{new QFilter("id", "in", pkValues.toArray())});
-//                                        DynamicObject[] var58 = payableBills;
-//                                        int var60 = payableBills.length;
-//
-//                                        for(int var62 = 0; var62 < var60; ++var62) {
-//                                            payableBill = var58[var62];
-//                                            if (!BillStatusEnum.DEAD.getValue().equals(payableBill.getString("billstatus"))) {
-//                                                isExistNotDeadFlag = true;
-//                                            }
-//                                        }
-//                                    }
-//
-//                                    if (isExistNotDeadFlag) {
-//                                        args.setCancel(true);
-//                                        this.getView().showTipNotification(ResManager.loadKDString("付款单已进行开票登记!", "PaymentBillDraftEditPlugin_8", "fi-cas-formplugin", new Object[0]));
-//                                    }
-//
-//                                    accountBank = payBill.getDynamicObject("payeracctbank");
-//                                    if (null != accountBank && AccountBankHelper.isClosed(accountBank.getLong("id"))) {
-//                                        throw new KDBizException(String.format(ResManager.loadKDString("账户%s当前状态为已销户,暂无法进行业务处理。", "PaymentErrorCode_47", "fi-cas-business", new Object[0]), accountBank.getString("number")));
-//                                    }
-//
-//                                    if (accountBank != null && PayBillCrossHelper.isIfmBankAcc(accountBank)) {
-//                                        throw new KDBizException(ResManager.loadKDString("内部账户请选择内部结算付款。", "PaymentErrorCode_48", "fi-cas-business", new Object[0]));
-//                                    }
-//                                }
-//                            }
-//                        }
-//                    } else if ("submit".equals(key)) {
-//                        list = (BillList)this.getControl("billlistap");
-//                        selectedRowPks = list.getSelectedRows().getPrimaryKeyValues();
-//                        if (selectedRowPks != null && selectedRowPks.length > 0) {
-//                            payBills = BusinessDataServiceHelper.load(selectedRowPks, EntityMetadataCache.getDataEntityType("nckd_cas_arbill"));
-//                            List<DynamicObject> updateBills = new ArrayList(payBills.length);
-//                            DynamicObject[] var42 = payBills;
-//                            var45 = payBills.length;
-//
-//                            for(int var50 = 0; var50 < var45; ++var50) {
-//                                accountBank = var42[var50];
-//                                boolean isRemove = false;
-//                                DynamicObjectCollection collection = accountBank.getDynamicObjectCollection("entry");
-//                                Iterator<DynamicObject> iterator = collection.iterator();
-//
-//                                while(iterator.hasNext()) {
-//                                    payableBill = (DynamicObject)iterator.next();
-//                                    if (CasHelper.isEmpty(payableBill.get("e_payableamt"))) {
-//                                        iterator.remove();
-//                                        isRemove = true;
-//                                    }
-//                                }
-//
-//                                if (isRemove) {
-//                                    updateBills.add(accountBank);
-//                                }
-//                            }
-//
-//                            if (updateBills.size() > 0) {
-//                                SaveServiceHelper.save((DynamicObject[])updateBills.toArray(new DynamicObject[0]));
-//                            }
-//                        }
-//                    } else if ("payschback".equals(key)) {
-//                        operate = (FormOperate)args.getSource();
-//                        operate.getOption().setVariableValue("strictvalidation", String.valueOf(true));
-//                    } else if ("pay".equals(key)) {
-//                        list = (BillList)this.getView().getControl("billlistap");
-//                        selectedRows = list.getSelectedRows();
-//                        Set<Object> selectRowsPks = new HashSet();
-//                        selectedRows.forEach((listSelectedRow) -> {
-//                            selectRowsPks.add(listSelectedRow.getPrimaryKeyValue());
-//                        });
-//                        String draftIds = op.getOption().getVariableValue("draftids", "");
-//                        if (selectRowsPks.size() == 1 && StringUtils.isEmpty(draftIds)) {
-//                            dbData = BusinessDataServiceHelper.loadSingle(selectedRows.get(0).getPrimaryKeyValue(), EntityMetadataCache.getDataEntityType("nckd_cas_arbill"));
-//                            settletype = (DynamicObject)dbData.get("org");
-//                            Long pkValue = (Long)settletype.getPkValue();
-//                            boolean selectDraftFlag = SystemParameterHelper.getParameterBoolean(pkValue, "cs122");
-//                            if (selectDraftFlag && PaymentBillPluginHelper.needSelectedDraft(dbData) && BillStatusEnum.AUDIT.getValue().equals(dbData.getString("billstatus"))) {
-//                                PayBillListPlugnHelper.showSelectDraftForm(new CloseCallBack(this, "CALLBACK_SELECTDRAFT"), this.getView(), selectedRows.get(0).getPrimaryKeyValue());
-//                                args.setCancel(true);
-//                                return;
-//                            }
-//                        }
-//
-//                        if (StringUtils.isEmpty(draftIds)) {
-//                            payConfirm = op.getOption().getVariableValue("payConfirm", "");
-//                            if (StringUtils.isEmpty(payConfirm)) {
-//                                if (selectedRows.size() <= 0) {
-//                                    throw new KDBizException(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_0", "fi-cas-formplugin", new Object[0]));
-//                                }
-//
-//                                Object[] pkArray = selectRowsPks.toArray(new Object[0]);
-//                                QFilter pkFilter = new QFilter("id", "in", pkArray);
-//                                payableBills = BusinessDataServiceHelper.load("nckd_cas_arbill", "org,dpcurrency,basecurrency,isdiffcur", new QFilter[]{pkFilter});
-//                                Set<Long> orgIds = new HashSet(10);
-//                                boolean isSameCurrency = true;
-//                                boolean isSameDpCurrency = true;
-//                                boolean isForeignCurrency = false;
-//                                boolean isSameParam = true;
-//                                Long preDpCurrencyId = 0L;
-//                                Long preBasecurrencyId = 0L;
-//                                String param = null;
-//                                Map<Long, Set<String>> cs1047Params = new HashMap(10);
-//                                if (payableBills != null && payableBills.length > 0) {
-//                                    DynamicObject[] var21 = payableBills;
-//                                    int var22 = payableBills.length;
-//
-//                                    for(int var23 = 0; var23 < var22; ++var23) {
-//                                        payBill = var21[var23];
-//                                        long orgId = (Long)payBill.getDynamicObject("org").getPkValue();
-//                                        new HashSet(1);
-//                                        Set cs1046;
-//                                        if (!orgIds.contains(orgId)) {
-//                                            cs1046 = SystemParameterHelper.getParameterComboxs(orgId, "cs1046");
-//                                            String setParamToString = PayBillListPlugnHelper.setParamToString(cs1046);
-//                                            if (param == null) {
-//                                                param = setParamToString;
-//                                            } else if (!param.equals(setParamToString)) {
-//                                                isSameParam = false;
-//                                            }
-//
-//                                            cs1047Params.put(orgId, cs1046);
-//                                        } else {
-//                                            cs1046 = (Set)cs1047Params.get(orgId);
-//                                        }
-//
-//                                        orgIds.add(orgId);
-//                                        if (payBill.getBoolean("isdiffcur") && cs1046.contains(SysParamCs1046Enum.DIFF.getValue()) && selectRowsPks.size() > 1) {
-//                                            throw new KDBizException(ResManager.loadKDString("存在异币别需要确认付款的单据,不能批量确认付款。", "PaymentBillList_26", "fi-cas-formplugin", new Object[0]));
-//                                        }
-//
-//                                        Long dpcurrencyId = payBill.getDynamicObject("dpcurrency").getLong("id");
-//                                        if (preDpCurrencyId == 0L) {
-//                                            preDpCurrencyId = dpcurrencyId;
-//                                        } else if (!preDpCurrencyId.equals(dpcurrencyId)) {
-//                                            isSameDpCurrency = false;
-//                                        }
-//
-//                                        Long basecurrencyId = payBill.getDynamicObject("basecurrency").getLong("id");
-//                                        if (preBasecurrencyId == 0L) {
-//                                            preBasecurrencyId = basecurrencyId;
-//                                        } else if (!preBasecurrencyId.equals(basecurrencyId)) {
-//                                            isSameCurrency = false;
-//                                        }
-//
-//                                        if (!basecurrencyId.equals(dpcurrencyId)) {
-//                                            isForeignCurrency = true;
-//                                        }
-//                                    }
-//                                }
-//
-//                                if (!isSameParam) {
-//                                    throw new KDBizException(ResManager.loadKDString("所选单据存在多个付款资金组织系统参数“允许确认付款环节更新/补充信息”选项不一致,不能批量确认付款,请重新选择。", "PaymentBillList_34", "fi-cas-formplugin", new Object[0]));
-//                                }
-//
-//                                Set<String> cs1047 = (Set)cs1047Params.get(orgIds.iterator().next());
-//                                if (cs1047.contains(SysParamCs1046Enum.FOREIGN.getValue()) && (!isSameDpCurrency || !isSameCurrency)) {
-//                                    throw new KDBizException(ResManager.loadKDString("开启了系统参数确认付款环节更新外币业务的付款汇率,但所选存在付款币别、业务主币别不一致的单据,不能批量确认付款,请重新选择。", "PaymentBillList_35", "fi-cas-formplugin", new Object[0]));
-//                                }
-//
-//                                Object pk;
-//                                if (selectRowsPks.size() > 1) {
-//                                    if (isForeignCurrency && cs1047.contains(SysParamCs1046Enum.FOREIGN.getValue())) {
-//                                        pk = selectedRows.get(0).getPrimaryKeyValue();
-//                                        payBill = BusinessDataServiceHelper.loadSingle(pk, "nckd_cas_arbill");
-//                                        PayBillListPlugnHelper.showDiffPayRateForm(new CloseCallBack(this, "KEY_DIFFPAY_CALLBACK"), this.getView(), payBill);
-//                                        args.setCancel(true);
-//                                    } else if (cs1047.contains(SysParamCs1046Enum.PAYDATE.getValue())) {
-//                                        PayBillListPlugnHelper.showDiffPayDateForm(new CloseCallBack(this, "KEY_DIFFPAY_CALLBACK"), this.getView());
-//                                        args.setCancel(true);
-//                                    }
-//                                } else {
-//                                    pk = selectedRows.get(0).getPrimaryKeyValue();
-//                                    payBill = BusinessDataServiceHelper.loadSingle(pk, "nckd_cas_arbill");
-//                                    if (PaymentBillPluginHelper.isShowPayConfirm(payBill, cs1047)) {
-//                                        if (!DraftHelper.isAllPayDrafBill(payBill.getDynamicObjectCollection("draftbill")) && !payBill.getBoolean("feepay")) {
-//                                            (new PaymentPayImpl()).validate(payBill);
-//                                            PayBillListPlugnHelper.showDiffPayForm(new CloseCallBack(this, "KEY_DIFFPAY_CALLBACK"), this.getView(), payBill);
-//                                            args.setCancel(true);
-//                                        }
-//                                    } else {
-//                                        (new PaymentPayImpl()).validate(payBill);
-//                                    }
-//                                }
-//                            }
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//
-//        if (Arrays.asList("unaudit", "chargeback", "invalid", "delete", "pay").contains(key) && (!"invalid".equals(key) || "invalid".equals(key) && op.getOption().tryGetVariableValue("cancellation", new RefObject()))) {
-//            list = (BillList)this.getControl("billlistap");
-//            selectedRowPks = list.getSelectedRows().getPrimaryKeyValues();
-//            if (selectedRowPks != null && selectedRowPks.length > 0) {
-//                payBills = BusinessDataServiceHelper.load(selectedRowPks, EntityMetadataCache.getDataEntityType("nckd_cas_arbill"));
-//                DynamicObject[] var41 = payBills;
-//                int var46 = payBills.length;
-//
-//                for(var45 = 0; var45 < var46; ++var45) {
-//                    payBill = var41[var45];
-//                    if (PayBillHepler.getViewSettle(payBill).size() > 0) {
-//                        this.getView().showErrorNotification(String.format(ResManager.loadKDString("%s已存在结算记录,导致操作失败。如需继续执行操作,请先反结算。", "PaymentBillList_36", "fi-cas-formplugin", new Object[0]), String.join(payBill.getString("billno"), "【", "】")));
-//                        args.setCancel(true);
-//                        return;
-//                    }
-//                }
-//            }
-//        }
-//
-//    }
-//
-//    private Boolean isDraftBill(DynamicObject payBill) {
-//        return !CasHelper.isEmpty(payBill.get("draftbill")) && ((DynamicObjectCollection)payBill.get("draftbill")).size() != 0 ? Boolean.TRUE : Boolean.FALSE;
-//    }
-//
-//    private boolean payInfoChgvaild(String chgtype) {
-//        BillList list = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = list.getSelectedRows();
-//        if (CasHelper.getSelectedRowSize(selectedRows) > 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据进行支付信息变更!", "PaymentBillList_10", "fi-cas-formplugin", new Object[0]));
-//            return false;
-//        } else {
-//            DynamicObjectCollection query = QueryServiceHelper.query("nckd_cas_arbill", "billstatus,matchflag", new QFilter[]{new QFilter("id", "=", selectedRows.get(0).getPrimaryKeyValue())});
-//            if (query.size() < 1) {
-//                this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据进行支付信息变更!", "PaymentBillList_10", "fi-cas-formplugin", new Object[0]));
-//                this.getView().invokeOperation("refresh");
-//                return false;
-//            } else {
-//                Object newStatus = ((DynamicObject)query.get(0)).getString("billstatus");
-//                if (!newStatus.equals("C")) {
-//                    this.getView().showTipNotification(ResManager.loadKDString("只有已审核的单据才能进行支付信息变更。", "PaymentBillList_11", "fi-cas-formplugin", new Object[0]));
-//                    return false;
-//                } else {
-//                    String matchFlag = ((DynamicObject)query.get(0)).getString("matchflag");
-//                    if (!AutoMatchFlagEnum.NONE.getValue().equals(matchFlag)) {
-//                        this.getView().showTipNotification(ResManager.loadKDString("已匹配的单据不允许发起变更", "PaymentBillList_50", "fi-cas-formplugin", new Object[0]));
-//                        return false;
-//                    } else {
-//                        Object selectPk = selectedRows.get(0).getPrimaryKeyValue();
-//                        Boolean ischangepaych = QueryServiceHelper.exists("cas_paychgbill", new QFilter[]{new QFilter("sourcebillid", "=", selectPk), new QFilter("sourcetype", "=", "nckd_cas_arbill"), new QFilter("chgtype", "=", chgtype), new QFilter("iscashconfirm", "!=", "1")});
-//                        if (ischangepaych) {
-//                            this.getView().showTipNotification(ResManager.loadKDString("该单据正在变更支付信息流程中,无法再次变更。", "PaymentBillList_12", "fi-cas-formplugin", new Object[0]));
-//                            return false;
-//                        } else {
-//                            DynamicObject casPayBill = BusinessDataServiceHelper.loadSingle("nckd_cas_arbill", "id,entrustorg,applyorg", new QFilter[]{new QFilter("id", "=", selectPk)});
-//                            if (!CasHelper.isEmpty(casPayBill)) {
-//                                if (!CasHelper.isEmpty(casPayBill.get("entrustorg"))) {
-//                                    this.getView().showTipNotification(ResManager.loadKDString("委托付款业务不支持支付信息变更。", "PaymentBillList_20", "fi-cas-formplugin", new Object[0]));
-//                                    return false;
-//                                }
-//
-//                                if (!CasHelper.isEmpty(casPayBill.get("applyorg"))) {
-//                                    this.getView().showTipNotification(ResManager.loadKDString("申请付款组织业务不支持支付信息变更。", "PaymentBillList_21", "fi-cas-formplugin", new Object[0]));
-//                                    return false;
-//                                }
-//                            }
-//
-//                            return true;
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//    }
-//
-//    public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
-//        super.confirmCallBack(messageBoxClosedEvent);
-//        String id = messageBoxClosedEvent.getCallBackId();
-//        MessageBoxResult res = messageBoxClosedEvent.getResult();
-//        if (StringUtils.equals(id, "CONFIRM_CANCELPAY_CALLBACK") && MessageBoxResult.Yes.equals(res)) {
-//            BillList billList = (BillList)this.getView().getControl("billlistap");
-//            ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//            if (selectedRows.size() > 0) {
-//                List<Long> paymentBillPks = new LinkedList();
-//                Iterator var7 = selectedRows.iterator();
-//
-//                while(var7.hasNext()) {
-//                    ListSelectedRow selectedRow = (ListSelectedRow)var7.next();
-//                    paymentBillPks.add((Long)selectedRow.getPrimaryKeyValue());
-//                }
-//
-//                QFilter payPidFilter = new QFilter("id", "in", paymentBillPks);
-//                DynamicObject[] payobjs = BusinessDataServiceHelper.load("nckd_cas_arbill", "id,billno", new QFilter[]{payPidFilter});
-//                if (!this.cancelPayCheckSettle(paymentBillPks, payobjs)) {
-//                    this.getView().invokeOperation("cancelpay");
-//                }
-//            }
-//        }
-//
-//        if (StringUtils.equals(id, "CONFIRM_CANCELPAY_SETTLE_CALLBACK") && MessageBoxResult.Yes.equals(res)) {
-//            this.getView().invokeOperation("cancelpay");
-//        }
-//
-//        OperateOption option;
-//        if (StringUtils.equals(id, "cancellation") && MessageBoxResult.Yes.equals(res)) {
-//            option = OperateOption.create();
-//            option.setVariableValue("cancellation", "yes");
-//            this.getView().invokeOperation("invalid", option);
-//        }
-//
-//        if (id.equals("CONFIRM_DEL_CALLBACK")) {
-//            option = OperateOption.create();
-//            if (MessageBoxResult.Yes.equals(res)) {
-//                option.setVariableValue("delrecpay", "1");
-//                this.getView().invokeOperation("delete", option);
-//            }
-//        }
-//
-//    }
-//
-//    public void afterDoOperation(AfterDoOperationEventArgs e) {
-//        super.afterDoOperation(e);
-//        AbstractOperate op = (AbstractOperate)e.getSource();
-//        String key = op.getOperateKey();
-//        OperationResult operationResult = e.getOperationResult();
-//        List successPkIds;
-//        if ((!"pay".equals(key) || !operationResult.isSuccess()) && (!"cancelpay".equals(key) || !operationResult.isSuccess())) {
-//            if ("unitecommitbe".equals(key) && operationResult.isSuccess()) {
-//                this.getView().showSuccessNotification(ResManager.loadKDString("合并提交银企成功!", "PaymentBillList_16", "fi-cas-formplugin", new Object[0]));
-//            } else if (("chargeback".equals(key) || "payschback".equals(key)) && operationResult.isSuccess()) {
-//                successPkIds = operationResult.getSuccessPkIds();
-//                if (!CollectionUtils.isEmpty(successPkIds)) {
-//                    this.chargeBack(successPkIds, key);
-//                }
-//            } else if ("trackdownchgbill".equals(key) && operationResult.isSuccess()) {
-//                this.trackdownChgBill();
-//            } else if ("chargebacknoreason".equals(key)) {
-//                String reason = ResManager.loadKDString("自动退单", "PaymentBillList_37", "fi-cas-formplugin", new Object[0]);
-//                successPkIds = operationResult.getSuccessPkIds();
-//                Map<String, Object> data = new HashMap(16);
-//                data.put("billid", successPkIds);
-//                data.put("reason", reason);
-//                data.put("operateKey", "chargeback");
-//                PayBillListPlugnHelper.closeCallBack("CALLBACK_CHARGEBACK", this.getView(), data);
-//            }
-//        }
-//
-//        boolean refreshFlg = !"refresh".equals(key) && !"exportbylist".equals(key) && !"paypushchg".equals(key) && !"recpushchg".equals(key) && !"modify".equals(key);
-//        if (refreshFlg) {
-//            ((ListView)this.getView()).refresh();
-//        }
-//
-//        if ("beforesubmit".equals(key)) {
-//            successPkIds = operationResult.getSuccessPkIds();
-//            if (successPkIds != null && successPkIds.size() > 0) {
-//                operationResult.setShowMessage(false);
-//                this.getView().invokeOperation("submit");
-//            }
-//        } else if ("chargebackwrite".equals(key) && operationResult.isSuccess()) {
-//            ((IEntityOperate)e.getSource()).setCancelRefresh(false);
-//        } else if ("supplecontract".equals(key) && operationResult.isSuccess()) {
-//            this.openEditView("supplecontract");
-//        } else {
-//            boolean flag;
-//            if ("paypushchg".equals(key) && operationResult.isSuccess()) {
-//                flag = this.payInfoChgvaild("paychg");
-//                if (flag) {
-//                    PayBillListPlugnHelper.payInfoChg("nckd_cas_arbill", "payAction", "cas_paychgbill_paychg", (String)null, this.getView());
-//                }
-//            } else if ("recpushchg".equals(key) && operationResult.isSuccess()) {
-//                flag = this.payInfoChgvaild("recchg");
-//                if (flag) {
-//                    this.openChangeChg("nckd_cas_arbill", "recAction");
-//                }
-//            } else if ("urgentpay".equals(key) && operationResult.isSuccess()) {
-//                successPkIds = operationResult.getSuccessPkIds();
-//                if (!CollectionUtils.isEmpty(successPkIds)) {
-//                    this.getView().showSuccessNotification(ResManager.loadKDString("加急成功", "PaymentBillList_38", "fi-cas-formplugin", new Object[0]));
-//                }
-//            } else if ("cancelurgentpay".equals(key) && operationResult.isSuccess()) {
-//                successPkIds = operationResult.getSuccessPkIds();
-//                if (!CollectionUtils.isEmpty(successPkIds)) {
-//                    this.getView().showSuccessNotification(ResManager.loadKDString("取消加急成功", "PaymentBillList_39", "fi-cas-formplugin", new Object[0]));
-//                }
-//            }
-//        }
-//
-//        if (Arrays.asList("pay", "cancelpay", "syncbankbillstatus").contains(key) && operationResult != null && operationResult.isSuccess()) {
-//            this.getView().invokeOperation("refresh");
-//        }
-//
-//    }
-//
-//    public void filterContainerInit(FilterContainerInitArgs args) {
-//        super.filterContainerInit(args);
-//        this.initArgs = args;
-//        ListShowParameter listShowParameter = (ListShowParameter)this.getView().getFormShowParameter();
-//        String status = (String)listShowParameter.getCustomParam("status");
-//        String parentFormId = listShowParameter.getParentFormId();
-//        Iterator var5;
-//        FilterColumn filterColumn;
-//        List defaultValues;
-//        if (null == this.getCachedOrgList()) {
-//            var5 = args.getCommonFilterColumns().iterator();
-//
-//            while(var5.hasNext()) {
-//                filterColumn = (FilterColumn)var5.next();
-//                if ("org.id".equals(filterColumn.getFieldName())) {
-//                    defaultValues = filterColumn.getDefaultValues();
-//                    if (null != defaultValues && defaultValues.size() > 0) {
-//                        List<Long> selectedOrgIdList = (List)defaultValues.stream().filter((t) -> {
-//                            return StringUtils.isNotEmpty(t.toString());
-//                        }).map((item) -> {
-//                            return Long.valueOf(item.toString());
-//                        }).collect(Collectors.toList());
-//                        this.cacheSelectedOrgIdList(selectedOrgIdList);
-//                    }
-//                }
-//            }
-//        }
-//
-//        if (this.isFromControlCenter() && "fca_control_index".equals(parentFormId) || this.isTrack()) {
-//            var5 = args.getCommonFilterColumns().iterator();
-//
-//            while(var5.hasNext()) {
-//                filterColumn = (FilterColumn)var5.next();
-//                if ("org.id".equals(filterColumn.getFieldName())) {
-//                    filterColumn.setDefaultValue("");
-//                }
-//
-//                if ("billstatus".equals(filterColumn.getFieldName())) {
-//                    if (EmptyUtil.isNoEmpty(status)) {
-//                        defaultValues = Arrays.asList(status.split(","));
-//                        filterColumn.setDefaultValues(defaultValues);
-//                    } else {
-//                        filterColumn.setDefaultValues(new Object[]{""});
-//                    }
-//                }
-//
-//                if ("bizdate".equals(filterColumn.getFieldName())) {
-//                    filterColumn.setDefaultValue("");
-//                }
-//            }
-//        }
-//
-//        this.fillToolBar();
-//    }
-//
-//    public void filterContainerSearchClick(FilterContainerSearchClickArgs args) {
-//        super.filterContainerSearchClick(args);
-//        List<Long> selectedOrgIdList = args.getSelectMainOrgIds();
-//        if (selectedOrgIdList.size() > 0) {
-//            List<Object> object = this.getCachedOrgList();
-//            if (null == object || !object.toString().equals(selectedOrgIdList.toString())) {
-//                this.cacheSelectedOrgIdList(selectedOrgIdList);
-//                this.filterContainerInit(this.initArgs);
-//            }
-//        }
-//
-//    }
-//
-//    private void cacheSelectedOrgIdList(List<Long> selectedOrgIdList) {
-//        if (selectedOrgIdList != null) {
-//            this.getPageCache().put("selectedOrgIdList", SerializationUtils.toJsonString(selectedOrgIdList));
-//        } else {
-//            this.getPageCache().put("selectedOrgIdList", (String)null);
-//        }
-//
-//    }
-//
-//    protected List<Object> getCachedOrgList() {
-//        return this.getPageCache().get("selectedOrgIdList") != null ? (List)SerializationUtils.fromJsonString(this.getPageCache().get("selectedOrgIdList"), List.class) : null;
-//    }
-//
-//    private void fillToolBar() {
-//        this.getView().setVisible(false, new String[]{"recbook", "endorse"});
-//        List<Object> object = this.getCachedOrgList();
-//        if (object != null && object.size() != 0) {
-//            List<Long> cachedOrgList = (List)this.getCachedOrgList().stream().map((item) -> {
-//                return Long.valueOf(item.toString());
-//            }).collect(Collectors.toList());
-//            Iterator var3 = cachedOrgList.iterator();
-//
-//            boolean isdraft;
-//            boolean ischeck;
-//            boolean ispromissorynote;
-//            do {
-//                if (!var3.hasNext()) {
-//                    return;
-//                }
-//
-//                Long orgId = (Long)var3.next();
-//                isdraft = SystemParameterHelper.getCdmParameterBoolean(orgId, "isdraft");
-//                ischeck = SystemParameterHelper.getCdmParameterBoolean(orgId, "ischeck");
-//                ispromissorynote = SystemParameterHelper.getCdmParameterBoolean(orgId, "ispromissorynote");
-//            } while(!isdraft && !ischeck && !ispromissorynote);
-//
-//            this.getView().setVisible(true, new String[]{"recbook", "endorse"});
-//        } else {
-//            this.getView().setVisible(true, new String[]{"recbook", "endorse"});
-//        }
-//    }
-//
-//    public void beforeShowBill(BeforeShowBillFormEvent e) {
-//        super.beforeShowBill(e);
-//        BillShowParameter showParameter = e.getParameter();
-//        Object billId = showParameter.getPkId();
-//        BillOperationStatus billStatus = showParameter.getBillStatus();
-//        OperationStatus operationStatus = showParameter.getStatus();
-//        String operateType;
-//        if (billId != null) {
-//            if (OperationStatus.ADDNEW.equals(operationStatus)) {
-//                operateType = this.getPageCache().get("operate");
-//                if (operateType != null) {
-//                    showParameter.getCustomParams().put("operate", operateType);
-//                } else {
-//                    showParameter.getCustomParams().put("operate", OperateTypeEnum.COPY);
-//                }
-//            } else {
-//                DynamicObject info = BusinessDataServiceHelper.loadSingle(billId, "nckd_cas_arbill", "id, billtype");
-//                DynamicObject billtype = info.getDynamicObject("billtype");
-//                if (billtype != null && BillTypeConstants.PAYBILL_SYN.equals(billtype.getPkValue())) {
-//                    showParameter.setFormId("nckd_cas_arbill_synonym");
-//                    showParameter.setCaption(ResManager.loadKDString("同名转账", "PaymentBillEdit_24", "fi-cas-formplugin", new Object[0]));
-//                } else if (billtype != null && BillTypeConstants.PAYBILL_SPAN.equals(billtype.getPkValue())) {
-//                    showParameter.setFormId("nckd_cas_arbill_spanmainpart");
-//                    showParameter.setCaption(ResManager.loadKDString("跨主体调拨", "PaymentBillEdit_28", "fi-cas-formplugin", new Object[0]));
-//                } else if (billtype != null && BillTypeConstants.PAYBILL_CASH.equals(billtype.getPkValue())) {
-//                    showParameter.setFormId("nckd_cas_arbill_cash");
-//                    showParameter.setCaption(ResManager.loadKDString("现金存取", "PaymentBillEdit_25", "fi-cas-formplugin", new Object[0]));
-//                }
-//
-//                showParameter.setCustomParam("showConer", true);
-//            }
-//        } else if (BillOperationStatus.ADDNEW == billStatus) {
-//            showParameter.getCustomParams().put("paymentType", this.getPageCache().get("paymentType"));
-//            operateType = this.getPageCache().get("formId");
-//            if (StringUtils.isNotBlank(operateType)) {
-//                showParameter.setFormId(operateType);
-//            }
-//
-//            this.getView().showForm(showParameter);
-//        }
-//
-//    }
-//
-//    private void trackdownChgBill() {
-//        BillList list = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = list.getSelectedRows();
-//        Object[] selectedIds = selectedRows.getPrimaryKeyValues();
-//        if (selectedIds.length != 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据进行操作!", "AgentPayBillList_20", "fi-cas-formplugin", new Object[0]));
-//        }
-//
-//        DynamicObject[] paychgbill = BusinessDataServiceHelper.load("cas_paychgbill", "id,chgtype", new QFilter[]{new QFilter("sourcebillid", "=", selectedIds[0])});
-//        if (EmptyUtil.isEmpty(paychgbill) || paychgbill.length == 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("此单无变更单", "AgentPayBillList_21", "fi-cas-formplugin", new Object[0]));
-//        }
-//
-//        if (paychgbill.length == 1) {
-//            String formId = "";
-//            if (ChgTypeEnum.RECCHG.getValue().equals(paychgbill[0].getString("chgtype"))) {
-//                formId = "cas_paychgbill_recchg";
-//            } else {
-//                formId = "cas_paychgbill_paychg";
-//            }
-//
-//            BillShowParameter showParameter = new BillShowParameter();
-//            showParameter.setFormId(formId);
-//            showParameter.setPkId(paychgbill[0].getPkValue());
-//            showParameter.getOpenStyle().setShowType(ShowType.NonModal);
-//            this.getView().showForm(showParameter);
-//        } else {
-//            ListShowParameter showParameter = new ListShowParameter();
-//            showParameter.setHasRight(true);
-//            showParameter.setIsolationOrg(false);
-//            showParameter.setBillFormId("cas_paychgbill");
-//            List<QFilter> qFilters = new ArrayList();
-//            Set<Object> pks = new HashSet(paychgbill.length);
-//            DynamicObject[] var8 = paychgbill;
-//            int var9 = paychgbill.length;
-//
-//            for(int var10 = 0; var10 < var9; ++var10) {
-//                DynamicObject targetBill = var8[var10];
-//                pks.add(targetBill.get("id"));
-//            }
-//
-//            qFilters.add(new QFilter("id", "in", pks));
-//            showParameter.getListFilterParameter().setQFilters(qFilters);
-//            showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
-//            showParameter.setStatus(OperationStatus.VIEW);
-//            showParameter.setShowFilter(false);
-//            showParameter.setShowQuickFilter(false);
-//            showParameter.setCustomParam("isshowtoolbarap", "no");
-//            showParameter.setCustomParam("istmctracebillop", "yes");
-//            this.getView().showForm(showParameter);
-//        }
-//
-//    }
-//
-//    private void cancelPay() {
-//        BillList billList = (BillList)this.getView().getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        if (selectedRows.size() <= 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_0", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            List<Long> paymentBillPks = new LinkedList();
-//            Iterator var4 = selectedRows.iterator();
-//
-//            while(var4.hasNext()) {
-//                ListSelectedRow selectedRow = (ListSelectedRow)var4.next();
-//                paymentBillPks.add((Long)selectedRow.getPrimaryKeyValue());
-//            }
-//
-//            QFilter payPidFilter = new QFilter("id", "in", paymentBillPks);
-//            DynamicObject[] payobjs = BusinessDataServiceHelper.load("nckd_cas_arbill", "id,billno,isvoucher,billstatus,org", new QFilter[]{payPidFilter});
-//            StringBuilder sb = new StringBuilder();
-//            int flag = 0;
-//            DynamicObject[] var8 = payobjs;
-//            int var9 = payobjs.length;
-//
-//            for(int var10 = 0; var10 < var9; ++var10) {
-//                DynamicObject obj = var8[var10];
-//                int CS114 = SystemParameterHelper.getParameterInteger(obj.getDynamicObject("org").getLong("id"), "cs116");
-//                if (3 == CS114 && VoucherBookHelper.checkVoucherExist(obj.getPkValue(), "nckd_cas_arbill")) {
-//                    ++flag;
-//                    String billno = obj.getString("billno");
-//                    sb.append(String.format(ResManager.loadKDString("(%s)单据已经生成凭证\r\n", "PaymentBillList_17", "fi-cas-formplugin", new Object[0]), billno));
-//                }
-//            }
-//
-//            if (flag == 1) {
-//                this.getView().showConfirm(sb.substring(0, sb.length() - 1) + ResManager.loadKDString(",是否继续取消付款?", "PaymentBillList_18", "fi-cas-formplugin", new Object[0]), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_CALLBACK", this));
-//            } else if (flag > 0) {
-//                this.getView().showConfirm(String.format(ResManager.loadKDString("存在%d个已生成凭证的单据,是否继续取消付款?", "PaymentBillList_19", "fi-cas-formplugin", new Object[0]), flag), sb.toString(), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_CALLBACK", this));
-//            } else if (!this.cancelPayCheckSettle(paymentBillPks, payobjs)) {
-//                this.getView().invokeOperation("cancelpay");
-//            }
-//        }
-//
-//    }
-//
-//    private void chargeBack(List<Object> billid, String operateKey) {
-//        FormShowParameter showParameter = new FormShowParameter();
-//        showParameter.setFormId("cas_chargeback");
-//        showParameter.setCustomParam("billid", JSON.toJSONString(billid));
-//        showParameter.setCustomParam("operateKey", operateKey);
-//        showParameter.getOpenStyle().setShowType(ShowType.NonModal);
-//        showParameter.setCloseCallBack(new CloseCallBack(this, "CALLBACK_CHARGEBACK"));
-//        this.getView().showForm(showParameter);
-//    }
-//
-//    private Boolean cancelPayCheckSettle(List<Long> paymentBillPks, DynamicObject[] payobjs) {
-//        Boolean result = Boolean.FALSE;
-//        List<Long> mainBillIds = SettleRecordQueryHelperForCas.getBillIdsByMain("ap_settlerecord", "nckd_cas_arbill", paymentBillPks.toArray(), (QFilter)null);
-//        List<Long> asstBillIds = SettleRecordQueryHelperForCas.getBillIdsByAsst("ap_settlerecord", "nckd_cas_arbill", paymentBillPks.toArray(), (QFilter)null);
-//        Set<Long> settleRecordIds = new HashSet();
-//        settleRecordIds.addAll(mainBillIds);
-//        settleRecordIds.addAll(asstBillIds);
-//        if (settleRecordIds.size() > 0) {
-//            StringBuilder settleSb = new StringBuilder();
-//            int settleFlag = 0;
-//            DynamicObject[] var9 = payobjs;
-//            int var10 = payobjs.length;
-//
-//            for(int var11 = 0; var11 < var10; ++var11) {
-//                DynamicObject obj = var9[var11];
-//                if (settleRecordIds.contains(obj.getPkValue())) {
-//                    ++settleFlag;
-//                    String billno = obj.getString("billno");
-//                    settleSb.append(String.format(ResManager.loadKDString("(%s)单据已经完成结算\r\n", "PaymentBillList_28", "fi-cas-formplugin", new Object[0]), billno));
-//                }
-//            }
-//
-//            if (settleFlag == 1) {
-//                this.getView().showConfirm(settleSb.substring(0, settleSb.length() - 1) + ResManager.loadKDString(",如果继续操作将会自动反结算对应的结算记录,是否继续?", "PaymentBillList_29", "fi-cas-formplugin", new Object[0]), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_SETTLE_CALLBACK", this));
-//            } else if (settleFlag > 1) {
-//                this.getView().showConfirm(String.format(ResManager.loadKDString("存在%d个已经完成结算的单据,如果继续操作将会自动反结算对应的结算记录,是否继续?", "PaymentBillList_30", "fi-cas-formplugin", new Object[0]), settleFlag), settleSb.toString(), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_SETTLE_CALLBACK", this));
-//            }
-//
-//            result = Boolean.TRUE;
-//        }
-//
-//        return result;
-//    }
-//
-//    private void viewDrafBill() {
-//        BillList billList = (BillList)this.getControl("billlistap");
-//        ListSelectedRowCollection selectedRows = billList.getSelectedRows();
-//        Object[] selectedRowPks = selectedRows.getPrimaryKeyValues();
-//        if (selectedRowPks.length == 0) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择要执行的数据!", "PaymentBillList_3", "fi-cas-formplugin", new Object[0]));
-//        } else if (selectedRowPks.length > 1) {
-//            this.getView().showTipNotification(ResManager.loadKDString("请选择单条数据联查!", "PaymentBillList_4", "fi-cas-formplugin", new Object[0]));
-//        } else {
-//            Object primaryKey = selectedRowPks[0];
-//            DynamicObject paybill = BusinessDataServiceHelper.loadSingle(primaryKey, "nckd_cas_arbill", "id,draftbill");
-//            DynamicObjectCollection draftBills = paybill.getDynamicObjectCollection("draftbill");
-//            if (draftBills == null || draftBills.size() <= 0) {
-//                this.getView().showTipNotification(ResManager.loadKDString("暂无关联的票据记录。", "PaymentBillDraftEditPlugin_9", "fi-cas-formplugin", new Object[0]));
-//                return;
-//            }
-//
-//            Set<Long> idSet = new HashSet();
-//            Iterator var8 = draftBills.iterator();
-//
-//            while(var8.hasNext()) {
-//                DynamicObject draftBill = (DynamicObject)var8.next();
-//                idSet.add(((DynamicObject)draftBill.get("fbasedataid")).getLong("id"));
-//            }
-//
-//            PayBillListPlugnHelper.viewDrafBill(idSet, this.getView());
-//        }
-//
-//    }
-//
-//    private void viewBatchInput() {
-//        FormShowParameter showPage = new FormShowParameter();
-//        showPage.setFormId("cas_batchpaybill");
-//        showPage.setAppId("cas");
-//        showPage.setStatus(OperationStatus.EDIT);
-//        showPage.getOpenStyle().setShowType(ShowType.Modal);
-//        this.getView().showForm(showPage);
-//    }
-//
-//    public void signCallback(SignCallbackEvent evt) {
-//        if (evt.getCallbackId().equals("signbeforecommitbe")) {
-//            ClientMethodResult ret = evt.getResult();
-//            if (ret.getSuccess()) {
-//                OperateOption operateOption = OperateOption.create();
-//                operateOption.setVariableValue("ishasright", "true");
-//                operateOption.setVariableValue("signCallbackFlag", "true");
-//                operateOption.setVariableValue("signFirstSave", "false");
-//                operateOption.setVariableValue("signResult", SerializationUtils.toJsonString(evt.getResult().getResult()));
-//                operateOption.setVariableValue("clearResult", evt.getClearText());
-//                OperationResult operationResult = this.getView().invokeOperation("beforecommitbe", operateOption);
-//                if (operationResult.isSuccess()) {
-//                    this.getView().invokeOperation("commitbe");
-//                } else {
-//                    logger.info(" signcallback fail ");
-//                    if (EmptyUtil.isNoEmpty(operationResult.getMessage())) {
-//                        evt.getView().showTipNotification(operationResult.getMessage());
-//                    }
-//                }
-//            } else {
-//                logger.info(" signbeforecommitbe SignCallbackEvent fail ");
-//            }
-//        }
-//
-//    }
-//}

+ 54 - 135
src/main/java/fi/cas/opplugin/PaymentProcessOpPlugin.java

@@ -11,6 +11,7 @@ import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
+import org.mvel2.util.Make;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -18,7 +19,7 @@ import java.util.HashMap;
 
 //付款处理单付款反写
 public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
-    private static String nckd_cas_arbill_gz_l = "nckd_cas_arbill"; //应收挂帐单标识
+    private static String nckd_cas_arbill_gz_l = "ar_finarbill"; //应收挂帐单标识
     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"; //合同台账单标识
@@ -41,13 +42,13 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
             //获取源单id
             Long sourcebillid = info.getLong("sourcebillid");
             //存储源单分录id和付款处理分录实付金额
-            HashMap<String,BigDecimal> amountMap = new HashMap<>();
+            HashMap<Long,BigDecimal> amountMap = new HashMap<>();
             //循环付款明细分录
             for (DynamicObject entryentity : info.getDynamicObjectCollection("entry")) {
                 //取当前循环付款明细分录的实付金额
                 BigDecimal expenseamount = entryentity.getBigDecimal("e_actamt");
                 //取当前循环付款明细分录的源单分录id
-                String sourcebillentryid = entryentity.getString("e_sourcebillentryid");
+                Long sourcebillentryid = entryentity.getLong("e_sourcebillentryid");
                 amountMap.put(sourcebillentryid,expenseamount);
             }
             //查询应收挂账单
@@ -62,98 +63,64 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                 //循环数组获取结算状态,已结算金额,未结算金额
                 for (int c=0;c<gzDynamicObjects.length;c++) {
                     //应收挂帐单头数据包
-                    DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[i].getPkValue(), gzDynamicObjects[i].getDynamicObjectType().getName());
+                    DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[c].getPkValue(), gzDynamicObjects[c].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 settledamt = amountMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getString("id"));
-                        //获取未结算金额
-                        BigDecimal unsettledamt = entryentity.getBigDecimal("e_unsettledamt");
-                        unsettledamt = unsettledamt.subtract(settledamt);
-                        //反写分录已结算金额,未结算金额
-                        entryentity.set("e_settledamt",settledamt);
-                        entryentity.set("e_unsettledamt",unsettledamt);
-                        totalSettledamt = totalSettledamt.add(settledamt);
-                        totalUnsettledamt = totalUnsettledamt.add(unsettledamt);
-                        String yfjkSourceBillEntryId = entryentity.getString("e_sourcebillentryid");
-                        yfjkMap.put(yfjkSourceBillEntryId,settledamt);
+                    String yfjkId = gzInfo.getString("sourcebillid");
+                    if (!StringUtils.isEmpty(yfjkId)) {
+                        //存储预付借款单分录id和付款处理分录实付金额
+                        HashMap<Long,BigDecimal> yfjkMap = new HashMap<>();
+                        //循环应收挂帐单付款明细分录
+                        for (DynamicObject entryentity : gzInfo.getDynamicObjectCollection("entry")) {
+                            //获取分录实付金额
+                            BigDecimal nckd_amountfield5 = amountMap.get(entryentity.getLong("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getLong("id"));
+                            //获取未结算金额
+                            BigDecimal nckd_amountfield7 = entryentity.getBigDecimal("nckd_amountfield7");
+                            nckd_amountfield7 = nckd_amountfield7.subtract(nckd_amountfield5);
+                            //反写分录已付金额,未付金额
+                            entryentity.set("nckd_amountfield5",nckd_amountfield5);
+                            entryentity.set("nckd_amountfield7",nckd_amountfield7);
+                            Long yfjkSourceBillEntryId = entryentity.getLong("e_srcentryid");
+                            yfjkMap.put(yfjkSourceBillEntryId,nckd_amountfield5);
+                        }
+                        SaveServiceHelper.save(new DynamicObject[]{gzInfo});
+
+                        //查询预付借款单
+                        Long prebillId = Long.valueOf(yfjkId);
+                        QFilter nckd_yfjkFilter = new QFilter("id", QCP.equals,prebillId);
+                        DynamicObject[] yfjkDynamicObjects = BusinessDataServiceHelper.load(nckd_er_prepaybill_ext,"id",new QFilter[] {nckd_yfjkFilter});
+                        //循环数组获取结算状态,已结算金额,未结算金额
+                        for (int d=0;d<yfjkDynamicObjects.length;d++) {
+                            BigDecimal nckd_amountfield5 = BigDecimal.ZERO;
+                            BigDecimal nckd_amountfield6 = BigDecimal.ZERO;
+                            //预付借款单头数据包
+                            DynamicObject yfjkInfo = BusinessDataServiceHelper.loadSingle(yfjkDynamicObjects[d].getPkValue(), yfjkDynamicObjects[d].getDynamicObjectType().getName());
+                            //循环预付借款单预付借款信息分录
+                            for (DynamicObject entryentity : yfjkInfo.getDynamicObjectCollection("expenseentryentity")) {
+                                //获取分录实付金额
+                                BigDecimal nckd_amountfield4 = yfjkMap.get(entryentity.getLong("id")) == null ? BigDecimal.ZERO:yfjkMap.get(entryentity.getLong("id"));
+                                //获取未结算金额
+                                BigDecimal nckd_amountfield3 = entryentity.getBigDecimal("nckd_amountfield3");
+                                nckd_amountfield3 = nckd_amountfield3.subtract(nckd_amountfield4);
+                                //反写分录已结算金额,未结算金额
+                                entryentity.set("nckd_amountfield4",nckd_amountfield4);
+                                entryentity.set("nckd_amountfield3",nckd_amountfield3);
+                                nckd_amountfield5 = nckd_amountfield5.add(nckd_amountfield4);
+                                nckd_amountfield6 = nckd_amountfield6.add(nckd_amountfield3);
+                            }
+                            yfjkInfo.set("nckd_amountfield5", nckd_amountfield5);
+                            yfjkInfo.set("nckd_amountfield6", nckd_amountfield6);
+                            yfjkInfo.set("billstatus", "G");
+                            SaveServiceHelper.save(new DynamicObject[]{yfjkInfo});
+                        }
                     }
-                    //结算字段赋值
-                    settleMethod(gzInfo,"settlestatus","settleamount","unsettleamount",totalSettledamt,totalUnsettledamt);
-                    SaveServiceHelper.save(new DynamicObject[]{gzInfo});
                 }
             }//应付方向的回写
             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");
+                    DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[c].getPkValue(), bxDynamicObjects[c].getDynamicObjectType().getName());
                     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 settledamt = amountMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getString("id"));
-                        //获取未结算金额
-                        BigDecimal unsettledamt = entryentity.getBigDecimal("nckd_unsettleamount_et");
-                        unsettledamt = unsettledamt.subtract(settledamt);
-                        //反写分录已结算金额,未结算金额
-                        entryentity.set("nckd_settleamount_et",settledamt);
-                        entryentity.set("nckd_unsettleamount_et",unsettledamt);
-                        totalSettledamt = totalSettledamt.add(settledamt);
-                        totalUnsettledamt = totalUnsettledamt.add(unsettledamt);
-                    }
-                    if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
-                        bxInfo.set("nckd_settlestatus", SettlementStatusEnum.已结算.getValue());
-                        bxInfo.set("nckd_settleamount", totalSettledamt);
-                        bxInfo.set("nckd_unsettleamount", totalUnsettledamt);
-                    } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
-                        bxInfo.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
-                        bxInfo.set("nckd_settleamount", totalSettledamt);
-                        bxInfo.set("nckd_unsettleamount", totalUnsettledamt);
-                    } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
-                        bxInfo.set("nckd_settlestatus", SettlementStatusEnum.部分结算.getValue());
-                        bxInfo.set("nckd_settleamount", totalSettledamt);
-                        bxInfo.set("nckd_unsettleamount", 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());
-                            if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
-                                gzInfo.set("settlestatus", SettlementStatusEnum.已结算.getValue());
-                                gzInfo.set("settleamount", totalSettledamt);
-                                gzInfo.set("unsettleamount", totalUnsettledamt);
-                            } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
-                                gzInfo.set("settlestatus", SettlementStatusEnum.未结算.getValue());
-                                gzInfo.set("settleamount", totalSettledamt);
-                                gzInfo.set("unsettleamount", totalUnsettledamt);
-                            } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
-                                gzInfo.set("settlestatus", SettlementStatusEnum.部分结算.getValue());
-                                gzInfo.set("settleamount", totalSettledamt);
-                                gzInfo.set("unsettleamount", totalUnsettledamt);
-                            }
-                            SaveServiceHelper.save(new DynamicObject[]{gzInfo});
-                        }
-                    }
                     //报账类型等于工程报账回写合同台账单
                     if (!StringUtils.isEmpty(nckd_sourcebillid)) {
                         //获取合同台账单id
@@ -163,35 +130,7 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                         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_unsettleamount.compareTo(totalSettledamt) > 0) {
-                                //未结算金额
-                                nckd_unsettleamount = nckd_unsettleamount.subtract(totalSettledamt);
-                                htInfo.set("orinotpayamount",nckd_unsettleamount);
-                            }else {
-                                htInfo.set("orinotpayamount",BigDecimal.ZERO);
-                            }
-                            nckd_settleamount = nckd_settleamount.add(totalSettledamt);
-                            htInfo.set("oripayedamount",nckd_settleamount);
-
-                            if (nckd_settleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_unsettleamount.compareTo(BigDecimal.ZERO) == 0) {
-                                htInfo.set("nckd_settlestatus", SettlementStatusEnum.已结算.getValue());
-                                htInfo.set("nckd_settleamount", nckd_settleamount);
-                                htInfo.set("nckd_unsettleamount", BigDecimal.ZERO);
-                            } else if (nckd_unsettleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_settleamount.compareTo(BigDecimal.ZERO) == 0) {
-                                htInfo.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
-                                htInfo.set("nckd_settleamount", BigDecimal.ZERO);
-                                htInfo.set("nckd_unsettleamount", nckd_unsettleamount);
-                            } else if (nckd_settleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_settleamount.compareTo(BigDecimal.ZERO) > 0) {
-                                htInfo.set("nckd_settlestatus", SettlementStatusEnum.部分结算.getValue());
-                                htInfo.set("nckd_settleamount", nckd_settleamount);
-                                htInfo.set("nckd_unsettleamount", nckd_unsettleamount);
-                            }
-
+                            DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[j].getPkValue(), htDynamicObjects[j].getDynamicObjectType().getName());
                             //反写付款明细
                             DynamicObjectCollection entryEntity = htInfo.getDynamicObjectCollection("nckd_payentry");
                             DynamicObject entry1 = entryEntity.addNew();
@@ -199,7 +138,6 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                             entry1.set("nckd_pay_id1", id);//付款处理单据id
                             entry1.set("nckd_amountfield1", actpayamt);//付款金额
                             entry1.set("nckd_timefield2", paydate);//付款日期
-
                             SaveServiceHelper.save(new DynamicObject[]{htInfo});
                         }
                     }
@@ -207,23 +145,4 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
             }
         }
     }
-
-    /*
-     * 给结算状态,结算金额,未结算金额赋值
-     * */
-    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);
-        }
-    }
 }

+ 46 - 2
src/main/java/fi/em/formPlugin/BusinessProcessingConvertPlugIn.java

@@ -1,29 +1,73 @@
 package fi.em.formPlugin;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
 import kd.bos.entity.botp.plugin.args.BeforeBuildRowConditionEventArgs;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.sdk.plugin.Plugin;
-
+//业务处理单基础资料选单过滤插件
 public class BusinessProcessingConvertPlugIn extends AbstractConvertPlugIn implements Plugin {
     @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");
+            String billtype = this.getOption().getVariableValue("billtype");
             QFilter numberQFilter = new QFilter("ap_finapbill.org.number", QCP.equals, orgnumber);
+//            numberQFilter.and("ap_finapbill.asstacttype", QCP.equals, billtype);
             numberQFilter.and("ap_finapbill.asstact.id", QCP.equals, Long.valueOf(bdsupplier));
+            for(int i=0;i<objects.size();i++){
+                JSONObject jsonObject = objects.getJSONObject(i);
+                String id = jsonObject.getString("id");
+                numberQFilter.and("ap_finapbill.id", QCP.not_equals2, Long.valueOf(id));
+            }
             e.getCustQFilters().add(numberQFilter);
         }else if("drawysgz".equals(type)){
+            String bdsupplier = this.getOption().getVariableValue("bdsupplier");
+            String billtype = this.getOption().getVariableValue("billtype");
             QFilter numberQFilter = new QFilter("ar_finarbill.org.number", QCP.equals, orgnumber);
+//            numberQFilter.and("ar_finarbill.asstacttype", QCP.equals, billtype);
             numberQFilter.and("ar_finarbill.asstact.id", QCP.equals, Long.valueOf(bdsupplier));
+            for(int i=0;i<objects.size();i++){
+                JSONObject jsonObject = objects.getJSONObject(i);
+                String id = jsonObject.getString("id");
+                numberQFilter.and("ar_finarbill.id", QCP.not_equals2, Long.valueOf(id));
+            }
             e.getCustQFilters().add(numberQFilter);
         }else if("drawzlht".equals(type)){
+            String bdsupplier = this.getOption().getVariableValue("bdsupplier");
+            String billtype = this.getOption().getVariableValue("billtype");
             QFilter numberQFilter = new QFilter("fa_lease_contract.org.number", QCP.equals, orgnumber);
+//            numberQFilter.and("fa_lease_contract.asstacttype", QCP.equals, billtype);
             numberQFilter.and("fa_lease_contract.leaser.number", QCP.equals, bdsupplier);
+            for(int i=0;i<objects.size();i++){
+                JSONObject jsonObject = objects.getJSONObject(i);
+                String id = jsonObject.getString("id");
+                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);
+        }else if("draw-ssysd".equals(type)){
+            QFilter numberQFilter = new QFilter("ar_finarbill.org.number", QCP.equals, orgnumber);
+            for(int i=0;i<objects.size();i++){
+                JSONObject jsonObject = objects.getJSONObject(i);
+                String id = jsonObject.getString("id");
+                numberQFilter.and("ar_finarbill.id", QCP.not_equals2, Long.valueOf(id));
+            }
             e.getCustQFilters().add(numberQFilter);
         }
         super.beforeBuildRowCondition(e);

+ 53 - 1
src/main/java/fi/em/formPlugin/BusinessProcessingEditPlugin.java

@@ -356,7 +356,59 @@ public class BusinessProcessingEditPlugin extends AbstractListPlugin implements
                     }
                 }
             }
+        } else if ("nckd_yfgzjehj".equals(name)) {
+            String newValue="";
+            String oldValue="";
+            ChangeData[] changeSet = e.getChangeSet();//获取值
+            for (ChangeData changeData : changeSet) {
+                int rowIndex = changeData.getRowIndex();
+                newValue = changeData.getNewValue().toString();
+                oldValue = changeData.getOldValue().toString();
+            }
+            DynamicObjectCollection nckdEntryentity = this.getModel().getDataEntity().getDynamicObjectCollection("nckd_entryentity4");
+            BigDecimal nckdFkamountfie = new BigDecimal(0);
+            for(int i =0;i<nckdEntryentity.size();i++){
+                DynamicObject dynamicObject = nckdEntryentity.get(i);
+                BigDecimal nckdFkamountfie1 = dynamicObject.getBigDecimal("nckd_fkamountfie");
+                nckdFkamountfie=nckdFkamountfie.add(nckdFkamountfie1);
+            }
+            if(nckdFkamountfie.compareTo(BigDecimal.ZERO)>0){
+                if(!"0E-10".equals(newValue)){
+                    DynamicObjectCollection nckdEntryentity2 = this.getModel().getEntryEntity("nckd_entryentity2");
+                    DynamicObject dynamicObject = nckdEntryentity2.get(0);
+                    dynamicObject.set("nckd_cyfcxbalance",nckdFkamountfie);
+//                    this.getModel().setValue("nckd_cyfcxbalance", nckdFkamountfie, 1);
+                    this.getView().updateView("nckd_entryentity2");
+                }
+            }
+
+        }else if ("nckd_ysgzjehj".equals(name)) {
+            String newValue="";
+            String oldValue="";
+            ChangeData[] changeSet = e.getChangeSet();//获取值
+            for (ChangeData changeData : changeSet) {
+                int rowIndex = changeData.getRowIndex();
+                newValue = changeData.getNewValue().toString();
+                oldValue = changeData.getOldValue().toString();
+            }
+            DynamicObjectCollection nckdEntryentity = this.getModel().getDataEntity().getDynamicObjectCollection("nckd_entryentity");
+            BigDecimal nckdFkamountfie = new BigDecimal(0);
+            for(int i =0;i<nckdEntryentity.size();i++){
+                DynamicObject dynamicObject = nckdEntryentity.get(i);
+                BigDecimal nckdFkamountfie1 = dynamicObject.getBigDecimal("nckd_skamount");
+                nckdFkamountfie=nckdFkamountfie.add(nckdFkamountfie1);
+            }
+            if(nckdFkamountfie.compareTo(BigDecimal.ZERO)>0){
+                if(!"0E-10".equals(newValue)){
+                    DynamicObjectCollection nckdEntryentity2 = this.getModel().getEntryEntity("nckd_entryentity1");
+                    DynamicObject dynamicObject = nckdEntryentity2.get(0);
+                    dynamicObject.set("nckd_cyscxbalance",nckdFkamountfie);
+//                    this.getModel().setValue("nckd_cyfcxbalance", nckdFkamountfie, 1);
+                    this.getView().updateView("nckd_entryentity1");
+                }
+            }
+
         }
-        }
+    }
     }
 

+ 29 - 0
src/main/java/fi/em/formPlugin/BusinessProcessingPushSplitPlugin.java

@@ -0,0 +1,29 @@
+package fi.em.formPlugin;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.ExtendedDataEntity;
+import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
+import kd.bos.entity.botp.plugin.args.AfterFieldMappingEventArgs;
+
+public class BusinessProcessingPushSplitPlugin extends AbstractConvertPlugIn {
+    @Override
+    public void afterFieldMapping(AfterFieldMappingEventArgs e) {
+        String targetEntityNumber = this.getTgtMainType().getName();
+        ExtendedDataEntity[] billDataEntitys = e.getTargetExtDataEntitySet().FindByEntityKey(targetEntityNumber);
+        for (ExtendedDataEntity billDataEntity : billDataEntitys) {
+            DynamicObject dataEntity = billDataEntity.getDataEntity();
+            //目标单标识
+            String name = dataEntity.getDynamicObjectType().getName();
+            //目标单拆分前卡片分录
+            DynamicObject assetsplitentry = dataEntity.getDynamicObjectCollection("assetsplitentry").get(0);
+            //目标单拆分后卡片分录
+            DynamicObjectCollection subassetsplitentry = assetsplitentry.getDynamicObjectCollection("subassetsplitentry");
+            for (int i = 0; i < subassetsplitentry.size(); i++) {
+                DynamicObject subassetsplit = subassetsplitentry.get(i);
+                DynamicObject aft_org = subassetsplit.getDynamicObject("aft_org");
+                subassetsplit.set("aft_assetunit", aft_org);
+            }
+        }
+    }
+}

+ 45 - 0
src/main/java/fi/em/formPlugin/BusinessProcessingSplitPlugin.java

@@ -0,0 +1,45 @@
+package fi.em.formPlugin;
+
+import com.alibaba.druid.util.StringUtils;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.events.ChangeData;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+
+public class BusinessProcessingSplitPlugin extends AbstractFormPlugin {
+
+    @Override
+    public void propertyChanged(PropertyChangedArgs e) {
+        String fieldKey = e.getProperty().getName();
+        if (StringUtils.equals("nckd_basedatafield19", fieldKey)) {
+            //获取变更的数据
+            ChangeData changeData = e.getChangeSet()[0];
+            DynamicObject dynamicObject = (DynamicObject) changeData.getNewValue();
+            this.getModel().deleteEntryData("nckd_entryentity6112");
+            if (dynamicObject != null) {
+                DynamicObject realCard = dynamicObject.getDynamicObject("realcard");
+                String number = realCard.getString("number");
+                QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number);
+                DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+                int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity6112");
+                this.getModel().setValue("nckd_combofield5", "拆分前", 0);
+                if (dynamicObjects.length > 0) {
+                    this.getView().setVisible(false, "nckd_advconbaritemap61");
+                    this.getView().setVisible(false, "nckd_advconbaritemap6");
+                    this.getView().setVisible(true, "nckd_card");
+                    this.getView().setEnable(false, "nckd_integerfield1");
+                    this.getModel().setValue("nckd_integerfield1", dynamicObjects.length);
+                }else {
+                    this.getView().setVisible(true, "nckd_advconbaritemap61");
+                    this.getView().setVisible(true, "nckd_advconbaritemap6");
+                    this.getView().setVisible(false, "nckd_card");
+                    this.getView().setEnable(true, "nckd_integerfield1");
+                    this.getModel().setValue("nckd_integerfield1", 0);
+                }
+            }
+        }
+    }
+}

+ 64 - 7
src/main/java/fi/em/formPlugin/BusinessProcessingUnAuditEditPlugin.java

@@ -1,6 +1,9 @@
 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;
@@ -9,41 +12,63 @@ import kd.sdk.plugin.Plugin;
 
 public class BusinessProcessingUnAuditEditPlugin  extends AbstractListPlugin implements Plugin {
     public static String deleteentryys = "deleteentryys"; //冲应收挂账
-
+    //业务处理单基础资料选单过滤插件
     @Override
     public void beforeDoOperation(BeforeDoOperationEventArgs args) {
         if (args.getSource() instanceof Draw) {
             Draw draw = (Draw) args.getSource();
             if (draw.getOperateKey().equals("drawysgz")) {
-//                int count = this.getModel().getEntryRowCount("nckd_entryentity1");
 //                StringBuilder numbers = new StringBuilder();
                 Object value = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人
-                Object nckd_orgv = this.getModel().getValue("nckd_orgv");//获取当前单据付款人
                 DynamicObject dynamicObject = (DynamicObject) value;
+                Object nckd_orgv = this.getModel().getValue("nckd_orgfield");//获取当前单据付款人
                 DynamicObject orgv = (DynamicObject) nckd_orgv;
                 if (dynamicObject == null) {
-                    throw new KDBizException("收款信息付款人为空!");
+                    throw new KDBizException("核算组织为空!");
                 }
                 if (orgv == null) {
                     throw new KDBizException("收款信息收款人为空!");
                 }
+                String nckdItemclasstypefield1 = this.getModel().getValue("nckd_itemclasstypefield1").toString();//基础资料类型
+                draw.getOption().setVariableValue("billtype", nckdItemclasstypefield1);
+                DynamicObjectCollection nckdEntryentity1 = this.getModel().getEntryEntity("nckd_entryentity1");
+                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_textfield7");
+                    jsonObject.put("id",nckdTextfield7);
+                    jSONArray.add(jsonObject);
+                }
+                draw.getOption().setVariableValue("JSONArray", jSONArray.toString());
                 String bdsupplier = dynamicObject.getString("id");//当前单据付款供应商 11
                 draw.getOption().setVariableValue("bdsupplier", bdsupplier);
                 String orgnumber = orgv.getString("number");
                 draw.getOption().setVariableValue("orgnumber", orgnumber);
                 draw.getOption().setVariableValue("type", "drawysgz");
             } else if (draw.getOperateKey().equals("drawyfgz")) {
-                //int count = this.getModel().getEntryRowCount("nckd_entryentity2");
                 Object value = this.getModel().getValue("nckd_payeenamevs");//获取当前单据付款人
-                Object nckd_orgvs = this.getModel().getValue("nckd_orgvs");//获取当前单据收款人
+                Object nckd_orgvs = this.getModel().getValue("nckd_orgfield");//获取当前单据收款人
                 DynamicObject dynamicObject = (DynamicObject) value;
                 DynamicObject orgvs = (DynamicObject) nckd_orgvs;
                 if (dynamicObject == null) {
-                    throw new KDBizException("付款信息收款人为空!");
+                    throw new KDBizException("核算组织为空!");
                 }
                 if (orgvs == null) {
                     throw new KDBizException("付款信息付款人为空!");
                 }
+                String nckdItemclasstypefield1 = this.getModel().getValue("nckd_itemclasstypefield").toString();//基础资料类型
+                draw.getOption().setVariableValue("billtype", nckdItemclasstypefield1);
+                DynamicObjectCollection nckdEntryentity1 = this.getModel().getEntryEntity("nckd_entryentity2");
+                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_bigintfield");
+                    jsonObject.put("id",nckdTextfield7);
+                    jSONArray.add(jsonObject);
+                }
+                draw.getOption().setVariableValue("JSONArray", jSONArray.toString());
                 String bdsupplier = dynamicObject.getString("id");//当前单据付款供应商
                 draw.getOption().setVariableValue("bdsupplier", bdsupplier);
                 String orgnumber = orgvs.getString("number");
@@ -60,11 +85,43 @@ public class BusinessProcessingUnAuditEditPlugin  extends AbstractListPlugin imp
                 if (payeenamevs == null) {
                     throw new KDBizException("收款信息付款人为空!");
                 }
+                String nckdItemclasstypefield1 = this.getModel().getValue("nckd_itemclasstypefield1").toString();//基础资料类型
+                draw.getOption().setVariableValue("billtype", nckdItemclasstypefield1);
+                DynamicObjectCollection nckdEntryentity1 = this.getModel().getEntryEntity("nckd_entryentity3");
+                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_pzhthth");
+                    jsonObject.put("id",nckdTextfield7);
+                    jSONArray.add(jsonObject);
+                }
+                draw.getOption().setVariableValue("JSONArray", jSONArray.toString());
                 String bdsupplier = payeenamevs.getString("number");//当前单据付款供应商
                 draw.getOption().setVariableValue("bdsupplier", bdsupplier);
                 String orgnumber = dynamicObject.getString("number");
                 draw.getOption().setVariableValue("orgnumber", orgnumber);
                 draw.getOption().setVariableValue("type", "drawzlht");
+            }else if (draw.getOperateKey().equals("draw-ssysd")) {
+                //诉讼核销
+                Object value = this.getModel().getValue("nckd_orgfield");//获取当前单据付款人
+                DynamicObject dynamicObject = (DynamicObject) value;
+                if (dynamicObject == null) {
+                    throw new KDBizException("核算组织为空!");
+                }
+                DynamicObjectCollection nckdEntryentity1 = this.getModel().getEntryEntity("nckd_entryentity11");
+                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_textfield21");
+                    jsonObject.put("id",nckdTextfield7);
+                    jSONArray.add(jsonObject);
+                }
+                String number = dynamicObject.getString("number");
+                draw.getOption().setVariableValue("orgnumber", number);
+                draw.getOption().setVariableValue("JSONArray", jSONArray.toString());
+                draw.getOption().setVariableValue("type", "draw-ssysd");
             }
         }
         super.beforeDoOperation(args);

+ 23 - 0
src/main/java/fi/em/formPlugin/CostAllocationEditPlugin.java

@@ -1,6 +1,8 @@
 package fi.em.formPlugin;
 
 import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.datamodel.events.ChangeData;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.exception.KDBizException;
 import kd.bos.form.CloseCallBack;
 import kd.bos.form.FormShowParameter;
@@ -137,4 +139,25 @@ public class CostAllocationEditPlugin extends AbstractListPlugin implements Plug
         //弹出页面对象赋值给父页面
         this.getView().showForm(ShowParameter);
     }
+
+//    @Override
+//    public void propertyChanged(PropertyChangedArgs e) {
+//        super.beforePropertyChanged(e);
+//        String name = e.getProperty().getName();//获取字段标识
+//        if ("nckd_textfield2".equals(name)) {
+//            ChangeData[] changeSet = e.getChangeSet();//获取值
+//            for (ChangeData changeData : changeSet) {
+//                int rowIndex = changeData.getRowIndex();
+//                Object newValue = changeData.getNewValue();
+//                Object oldValue = changeData.getOldValue();
+//                String nckdTextfield2 = this.getModel().getValue("nckd_textfield2", rowIndex).toString();
+//                QFilter nckd_orgamountFilter = new QFilter("im_purinbill.billentry.lotnumber", QCP.equals,nckdTextfield2);
+//                //组织实体
+//                DynamicObject im_purinbill = BusinessDataServiceHelper.loadSingle("im_purinbill","id,billentry.price",new QFilter[] {nckd_orgamountFilter});
+//                BigDecimal price = im_purinbill.getBigDecimal("price");
+//                this.getModel().setValue("nckd_pricefield1", price, rowIndex);
+//
+//            }
+//        }
+//    }
 }

+ 7 - 1
src/main/java/fi/em/formPlugin/SalaryDistributeEditPlugin.java

@@ -48,6 +48,11 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
         viewList.add(nckd_retired);
         viewList.add(nckd_pay);
         viewList.add(nckd_payretird);
+        viewList.add("nckd_a_generalemployees");
+        viewList.add("nckd_a_earlyretired");
+        viewList.add("nckd_a_retired");
+        viewList.add("nckd_a_pay");
+        viewList.add("nckd_a_payretird");
 
         if (Viewflag.isEmpty()) {
             for (String item:viewList) {
@@ -249,7 +254,8 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
     public void clearEntryData(String nckd_entry)
     {
         //分录标识
-        List<String> nckd_generalemployees =Arrays.asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry","nckd_salaryentryre");
+        List<String> nckd_generalemployees =Arrays
+                .asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry","nckd_salaryentryre");
         for (String item:nckd_generalemployees) {
             //不传入参数默认全部分录清除
             if ("".equals(nckd_entry)){

+ 196 - 59
src/main/java/fi/em/formPlugin/SubAndAudFormPlugin.java

@@ -7,6 +7,7 @@ import kd.bos.form.events.BeforeDoOperationEventArgs;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.list.plugin.AbstractListPlugin;
 import kd.sdk.plugin.Plugin;
+import kd.tmc.fpm.business.domain.model.report.DynamicObjectData;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -19,11 +20,24 @@ import java.util.*;
 public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
 
     private static String nckd_staffentry="nckd_staffentry";//通用薪酬一般员工
+    private static String nckd_a_staffentry="nckd_a_staffentry";//通用薪酬一般员工汇总分录标识
     private static String nckd_earlyretiredentry="nckd_earlyretiredentry";//通用薪酬内退
+    private static String nckd_a_earlyretiredentry="nckd_a_earlyretiredentry";//通用薪酬内退分录标识
     private static String nckd_retireentry="nckd_retireentry";//通用薪酬退休
+    private static String nckd_a_retireentry="nckd_a_retireentry";//通用薪酬退休分录标识
     private static String nckd_salaryentry="nckd_salaryentry";//人力薪酬
+    private static String nckd_a_salaryentry="nckd_a_salaryentry";//人力薪酬分录标识
     private static String nckd_salaryentryre="nckd_salaryentryre";//人力薪酬内退
-    private static String nckd_allentry="nckd_allentry";//汇总分录
+    private static String nckd_a_salaryentryre="nckd_a_salaryentryre";//人力薪酬内退标识
+
+
+
+    //控件标识
+    private static String nckd_a_generalemployees="nckd_a_generalemployees";//通用一般汇总
+    private static String nckd_a_earlyretired="nckd_a_earlyretired";//通用内退汇总
+    private static String nckd_a_retired="nckd_a_retired";//通用退休汇总
+    private static String nckd_a_pay="nckd_a_pay";//人力一般汇总
+    private static String nckd_a_payretird="nckd_a_payretird";//人力内退汇总
 
     public void afterDoOperation(AfterDoOperationEventArgs arg){
         //提交并审核
@@ -46,14 +60,15 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 ,"nckd_se_unionmey","nckd_se_tax","nckd_se_otherreduce","nckd_se_desalary","nckd_se_netsalary","nckd_se_cpy_endins"
                 ,"nckd_se_cpy_hopins","nckd_se_cpy_bhopins","nckd_se_cpy_ljins","nckd_se_cpy_birthins","nckd_se_cpy_dmgins","nckd_se_cpy_hosins"
                 ,"nckd_se_cpy_cmymey");
-        //薪酬明细(一般员工)汇总分录字段标识
-        List<String> nckd_allemployees=Arrays.asList("nckd_all_allbsry","nckd_all_basicsry","nckd_all_acmsry","nckd_all_reacmsry"
-                ,"nckd_all_bsnrwd","nckd_all_otreward","nckd_all_cmcsbd","nckd_all_otherpysry","nckd_all_clearrwd","nckd_all_awareward"
-                ,"nckd_all_odevreward","nckd_all_coldsbad","nckd_all_warmsbad","nckd_all_nursabd","nckd_all_oallowance","nckd_all_salarypaya"
-                ,"nckd_all_per_endins","nckd_all_per_hopins","nckd_all_per_bhopins","nckd_all_per_ljins","nckd_all_per_hosins","nckd_all_per_cmymey"
-                ,"nckd_all_unionmey","nckd_all_tax","nckd_all_otherreduce","nckd_all_desalary","nckd_all_netsalary","nckd_all_cpy_endins"
-                ,"nckd_all_cpy_hopins","nckd_all_cpy_bhopins","nckd_all_cpy_ljins","nckd_all_cpy_birthins","nckd_all_cpy_dmgins","nckd_all_cpy_hosins"
-                ,"nckd_all_cpy_cmymey");
+
+        //薪酬明细(一般员工)汇总分录
+        List<String> nckd_a_employees=Arrays.asList("nckd_ase_allbasicsry","nckd_ase_basicsry","nckd_ase_acmsry"
+                ,"nckd_ase_reacmsry","nckd_ase_bsnrwd","nckd_ase_otreward","nckd_ase_cmcsbd","nckd_ase_otherpysry","nckd_ase_clearrwd"
+                ,"nckd_ase_awareward","nckd_ase_otherdevreward","nckd_ase_coldsbad","nckd_ase_warmsbad","nckd_ase_nursabd","nckd_ase_oalwance"
+                ,"nckd_ase_salarypayable","nckd_ase_per_endins","nckd_ase_per_hopins","nckd_ase_per_bhopins","nckd_ase_per_ljins","nckd_ase_per_hosins"
+                ,"nckd_ase_per_cmymey","nckd_ase_unionmey","nckd_ase_tax","nckd_ase_otherreduce","nckd_ase_desalary","nckd_ase_netsalary"
+                ,"nckd_ase_cpy_endins","nckd_ase_cpy_hopins","nckd_ase_cpy_bhopins","nckd_ase_cpy_ljins","nckd_ase_cpy_birthins","nckd_ase_cpy_dmgins"
+                ,"nckd_ase_cpy_hosins","nckd_ase_cpy_cmymey");
 
 
         //薪酬明细(内退)分录字段标识,金额字段
@@ -62,20 +77,22 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 ,"nckd_ee_tax","nckd_ee_desalary","nckd_ee_netsalary","nckd_ee_otherreduce","nckd_ee_cpy_endins","nckd_ee_cpy_bhopins"
                 ,"nckd_ee_cpy_ljins","nckd_ee_cpy_birthins","nckd_ee_cpy_dmgins","nckd_ee_cpy_cmymey","nckd_ee_cpy_hosins","nckd_ee_taxt"
                 ,"nckd_ee_alltaxt","nckd_ee_charge","nckd_ee_finallsys");
-        //薪酬明细(内退)汇总分录字段标识
-        List<String> nckd_allearlytired=Arrays.asList("nckd_all_allbasicsry","nckd_all_allowqance","nckd_all_owance","nckd_all_reduceitem"
-                ,"nckd_all_sumsry","nckd_all_laryreduce","nckd_all_pushreduce","nckd_all_lrulereduce","nckd_all_badreduce","nckd_all_oreduce","nckd_all_reducesry"
-                ,"nckd_all_salarypaya","nckd_all_nesalary","nckd_all_per_endins","nckd_all_per_hopins","nckd_all_per_bhopins","nckd_all_per_ljins"
-                ,"nckd_all_per_hosins","nckd_all_per_cmymey","nckd_all_sumins","nckd_all_workamount","nckd_all_tax","nckd_all_alltaxt"
-                ,"nckd_all_charge","nckd_all_netsalary");
+
+        //薪酬明细(内退)汇总分录
+        List<String> nckd_a_earlyretired=Arrays.asList("nckd_aee_allbasicsry","nckd_aee_allowance","nckd_aee_ollowance","nckd_aee_per_endins"
+                ,"nckd_aee_per_ljins","nckd_aee_per_hopins","nckd_aee_per_bhopins","nckd_aee_per_hosins","nckd_aee_per_cmymey","nckd_aee_unionmey"
+                ,"nckd_aee_tax","nckd_aee_desalary","nckd_aee_netsalary","nckd_aee_otherreduce","nckd_aee_cpy_endins","nckd_aee_cpy_bhopins","nckd_aee_cpy_ljins"
+                ,"nckd_aee_cpy_birthins","nckd_aee_cpy_dmgins","nckd_aee_cpy_cmymey","nckd_aee_cpy_hosins","nckd_aee_taxt","nckd_aee_alltaxt","nckd_aee_charge"
+                ,"nckd_aee_finallsys");
 
 
         //薪酬明细(退休)分录字段标识,金额字段
         List<String> nckd_retired=Arrays.asList("nckd_re_livallowance","nckd_re_otherallowance","nckd_re_reward"
                 ,"nckd_re_salarypayable","nckd_re_desalary","nckd_re_netsalary");
-        //薪酬明细(退休)汇总分录字段标识
-        List<String> nckd_allretired=Arrays.asList("nckd_all_livallowance","nckd_all_otherwance","nckd_all_reward","nckd_all_salarypaya"
-                ,"nckd_all_desalary","nckd_all_netsalary");
+
+        //薪酬明细(退休)汇总分录
+        List<String> nckd_a_retired=Arrays.asList("nckd_are_livallowance","nckd_are_ollowance","nckd_are_reward","nckd_are_salarypayable"
+                ,"nckd_are_desalary","nckd_are_netsalary");
 
 
         //人力薪酬分录标识金额字段,金额字段
@@ -91,20 +108,20 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 ,"nckd_sae_per_ins","nckd_sae_unionmey","nckd_sae_tax","nckd_sae_allamount","nckd_sae_cash","nckd_sae_wages","nckd_sae_cpy_endins"
                 ,"nckd_sae_cpy_hopins","nckd_sae_cpy_bhopins","nckd_sae_cpy_birthins","nckd_sae_cpy_ljins","nckd_sae_cpy_dmgins","nckd_sae_cpy_hosins"
                 ,"nckd_sae_cpy_cmymey");
-        //人力薪酬汇总分录字段标识
-        List<String> nckd_allpay=Arrays.asList("nckd_all_levelsry","nckd_all_dutiessry","nckd_all_updutiessry","nckd_all_workyearsry"
-                ,"nckd_all_depyear","nckd_all_eduasry","nckd_all_transry","nckd_all_jobsry","nckd_all_rebasicsry","nckd_all_allbacsry"
-                ,"nckd_all_allcmsry","nckd_all_mountsry","nckd_all_reacmamount","nckd_all_balyearsry","nckd_all_blastyearsry","nckd_all_allsry"
-                ,"nckd_all_bsnreda","nckd_all_cpmrwd","nckd_all_psrwd","nckd_all_comrwd","nckd_all_cardrwd","nckd_all_intwrd","nckd_all_clearwd"
-                ,"nckd_all_allrwd","nckd_all_retainsry","nckd_all_owance","nckd_all_otrewardam","nckd_all_rlcmcsbd","nckd_all_trfsbd"
-                ,"nckd_all_housesbd","nckd_all_warmsbd","nckd_all_edusbd","nckd_all_trafficsbd","nckd_all_othersbd","nckd_all_reduce"
-                ,"nckd_all_othersry","nckd_all_sickreduce","nckd_all_sickhopreduce","nckd_all_eventreduce","nckd_all_afwreduce","nckd_all_latereduce"
-                ,"nckd_all_cwasry","nckd_all_cwareduce","nckd_all_dgreduce","nckd_all_dcpreduce","nckd_all_badredu","nckd_all_othereduce"
-                ,"nckd_all_allreduce","nckd_all_salarypaya","nckd_all_nesalary","nckd_all_per_endins","nckd_all_per_hopins","nckd_all_per_bhopins"
-                ,"nckd_all_per_ljins","nckd_all_per_hosins","nckd_all_per_cmymey","nckd_all_sumins","nckd_all_workamount","nckd_all_tax"
-                ,"nckd_all_alltaxt","nckd_all_charge","nckd_all_netsalary","nckd_all_cpy_endins","nckd_all_cpy_hopins","nckd_all_cpy_bhopins"
-                ,"nckd_all_cpy_birthins","nckd_all_cpy_ljins","nckd_all_cpy_dmgins","nckd_all_cpy_hosins","nckd_all_cpy_cmymey");
 
+        //人力薪酬汇总分录
+        List<String>nckd_a_allpay=Arrays.asList("nckd_asae_levelsry","nckd_asae_dutiessry","nckd_asae_updutiessry","nckd_asae_workyearsry"
+                ,"nckd_asae_depyear","nckd_asae_eduasry","nckd_asae_transry","nckd_asae_jobsry","nckd_asae_basicsry","nckd_asae_allbasicsry"
+                ,"nckd_asae_acmsry","nckd_asae_mountsry","nckd_asae_reacmsry","nckd_asae_balyearsry","nckd_asae_blastyearsry","nckd_asae_allsry"
+                ,"nckd_asae_bsnrwd","nckd_asae_cpmrwd","nckd_asae_psrwd","nckd_asae_comrwd","nckd_asae_cardrwd","nckd_asae_intwrd","nckd_asae_clearrwd"
+                ,"nckd_asae_allrwd","nckd_asae_retainsry","nckd_asae_reward","nckd_asae_otreward","nckd_asae_cmcsbd","nckd_asae_trfsbd","nckd_asae_housesbd"
+                ,"nckd_asae_warmsbd","nckd_asae_edusbd","nckd_asae_trafficsbd","nckd_asae_othersbd","nckd_asae_reduce","nckd_asae_othersry","nckd_asae_sickreduce"
+                ,"nckd_asae_shopreduce","nckd_asae_eventreduce","nckd_asae_afwreduce","nckd_asae_latereduce","nckd_asae_cwasry","nckd_asae_cwareduce"
+                ,"nckd_asae_dgreduce","nckd_asae_dcpreduce","nckd_asae_badreduce","nckd_asae_otherreduce","nckd_asae_allreduce","nckd_asae_lastsry"
+                ,"nckd_asae_allpay","nckd_asae_per_endins","nckd_asae_per_ljins","nckd_asae_per_hopins","nckd_asae_per_bhopins","nckd_asae_per_hosins"
+                ,"nckd_asae_per_cmymey","nckd_asae_per_ins","nckd_asae_unionmey","nckd_asae_tax","nckd_asae_allamount","nckd_asae_cash","nckd_asae_wages"
+                ,"nckd_asae_cpy_endins","nckd_asae_cpy_hopins","nckd_asae_cpy_bhopins","nckd_asae_cpy_birthins","nckd_asae_cpy_ljins","nckd_asae_cpy_dmgins"
+                ,"nckd_asae_cpy_hosins","nckd_asae_cpy_cmymey");
 
         //人力薪酬内退分录标识,金额字段
         List<String> nckd_payretird=Arrays.asList("nckd_see_allbasicsry"
@@ -115,33 +132,39 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 ,"nckd_see_taxt","nckd_see_alltaxt","nckd_see_charge","nckd_see_finallsys","nckd_see_cpy_oldins","nckd_see_cpy_hop"
                 ,"nckd_see_cpy_bhop","nckd_see_cpy_bir","nckd_see_cpy_ljob","nckd_see_cpy_dwork","nckd_see_cpy_hos","nckd_see_cpy_cmy");
 
-        //人力薪酬内退分录汇总字段
-        List<String> nckd_allpayretird=Arrays.asList("nckd_all_allbasicsry","nckd_all_allowqance","nckd_all_owance","nckd_all_reduceitem"
-                ,"nckd_all_sumsry","nckd_all_laryreduce","nckd_all_pushreduce","nckd_all_lrulereduce","nckd_all_badreduce","nckd_all_oreduce"
-                ,"nckd_all_reducesry","nckd_all_salarypaya","nckd_all_nesalary","nckd_all_per_endins","nckd_all_per_hopins","nckd_all_per_ljins"
-                ,"nckd_all_per_bhopins","nckd_all_per_hosins","nckd_all_per_cmymey","nckd_all_sumins","nckd_all_workamount","nckd_all_tax"
-                ,"nckd_all_alltaxt","nckd_all_charge","nckd_all_netsalary","nckd_all_cpy_endins","nckd_all_cpy_hopins","nckd_all_cpy_bhopins"
-                ,"nckd_all_cpy_birthins","nckd_all_cpy_ljins","nckd_all_cpy_dmgins","nckd_all_cpy_hosins","nckd_all_cpy_cmymey");
+
+        //人力薪酬内退分录
+        List<String> nckd_a_payretird=Arrays.asList("nckd_asee_allbasicsry","nckd_asee_allowance","nckd_asee_ollowanc","nckd_asee_per_endins"
+                ,"nckd_asee_per_ljins","nckd_asee_per_hopins","nckd_asee_per_bhopins","nckd_asee_per_hosins","nckd_asee_per_cmymey","nckd_asee_unionmey"
+                ,"nckd_asee_tax","nckd_asee_desalary","nckd_asee_netsalary","nckd_asee_otherreduce","nckd_asee_cpy_endins","nckd_asee_cpy_bhopins"
+                ,"nckd_asee_cpy_ljins","nckd_asee_cpy_birthins","nckd_asee_cpy_dmgins","nckd_asee_cpy_cmymey","nckd_asee_cpy_hosins","nckd_asee_taxt"
+                ,"nckd_asee_alltaxt","nckd_asee_charge","nckd_asee_finallsys","nckd_asee_cpy_oldins","nckd_asee_cpy_hop","nckd_asee_cpy_bhop","nckd_asee_cpy_bir"
+                ,"nckd_asee_cpy_ljob","nckd_asee_cpy_dwork","nckd_asee_cpy_hos","nckd_asee_cpy_cmy");
 
         Map<String,List<String>> mapList=new HashMap<>();
         mapList.put("nckd_generalemployees",nckd_generalemployees);
-        mapList.put("nckd_allemployees",nckd_allemployees);
+        mapList.put("nckd_a_employees",nckd_a_employees);
         mapList.put("nckd_earlyretired",nckd_earlyretired);
         mapList.put("nckd_retired",nckd_retired);
+        mapList.put("nckd_a_earlyretired",nckd_a_earlyretired);
         mapList.put("nckd_pay",nckd_pay);
         mapList.put("nckd_payretird",nckd_payretird);
-        mapList.put("nckd_allearlytired",nckd_allearlytired);
-        mapList.put("nckd_allretired",nckd_allretired);
-        mapList.put("nckd_allpay",nckd_allpay);
-        mapList.put("nckd_allpayretird",nckd_allpayretird);
+        mapList.put("nckd_a_retired",nckd_a_retired);
+        mapList.put("nckd_a_allpay",nckd_a_allpay);
+        mapList.put("nckd_a_payretird",nckd_a_payretird);
 
 
         //list名
         List<String> list=new ArrayList<>();
+        list.add("nckd_a_payretird");
+        list.add("nckd_a_allpay");
+        list.add("nckd_a_retired");
         list.add("nckd_generalemployees");
         list.add("nckd_allemployees");
+        list.add("nckd_a_employees");
         list.add("nckd_earlyretired");
         list.add("nckd_retired");
+        list.add("nckd_a_earlyretired");
         list.add("nckd_pay");
         list.add("nckd_payretird");
         list.add("nckd_allearlytired");
@@ -149,8 +172,7 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
         list.add("nckd_allpay");
         list.add("nckd_allpayretird");
         for (String item:list) {
-            if (nckdentry.equals(item))
-            {
+            if (nckdentry.equals(item)) {
                 return mapList.get(nckdentry);
             }
         }
@@ -168,10 +190,10 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
 
         //保存前,计算汇总分录
         if ("save".equals(source.getOperateKey())||"countall".equals(source.getOperateKey())){
-            //先清空汇总分录分录
-            this.getModel().deleteEntryData("nckd_allentry");
             //分录类型为通用薪酬一般员工
             if ("A".equals(nckd_entrytype)) {
+                //先清空汇总分录分录
+                this.getModel().deleteEntryData("nckd_a_staffentry");
                 //字段标识
                 String entrylist="nckd_generalemployees";
                 //对应分录标识
@@ -179,11 +201,34 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应部门标识
                 String dep="nckd_se_department";
                 //对应汇总分录字段标识
-                String allentrtlist="nckd_allemployees";
-                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                String allentrtlist="nckd_a_employees";
+                this.getView().setVisible(true,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
+                allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_ase_department",nckd_a_staffentry);
+
+                DynamicObjectCollection nckd_ase=dynamicObject.getDynamicObjectCollection("nckd_a_staffentry");
+                //循环汇总分录
+                for (int i=0;i<nckd_ase.size();i++){
+                    //部门
+                    DynamicObject depament=nckd_ase.get(i).getDynamicObject("nckd_ase_department");
+                    DynamicObjectCollection nckd_staffentry=dynamicObject.getDynamicObjectCollection("nckd_staffentry");
+                    for (DynamicObject it:nckd_staffentry) {
+                        //所在单位相等则获取发薪机构
+                        if (depament.equals(it.getDynamicObject("nckd_se_department"))) {
+                            this.getModel().setValue("nckd_ase_institution",it.getDynamicObject("nckd_se_institution"),i);
+                            break;
+                        }
+                    }
+                }
+
             }
             //分录类型为通用薪酬内退
             if ("B".equals(nckd_entrytype)) {
+                //先清空汇总分录分录
+                this.getModel().deleteEntryData("nckd_a_earlyretiredentry");
                 //字段标识
                 String entrylist="nckd_earlyretired";
                 //对应分录标识
@@ -191,11 +236,34 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应部门标识
                 String dep="nckd_ee_department";
                 //对应汇总分录字段标识
-                String allentrtlist="nckd_allearlytired";
-                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                String allentrtlist="nckd_a_earlyretired";
+                allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_aee_department",nckd_a_earlyretiredentry);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(true,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
+
+                //发薪机构赋值
+                DynamicObjectCollection nckd_ase=dynamicObject.getDynamicObjectCollection("nckd_a_earlyretiredentry");
+                //循环汇总分录
+                for (int i=0;i<nckd_ase.size();i++){
+                    //部门
+                    DynamicObject depament=nckd_ase.get(i).getDynamicObject("nckd_aee_department");
+                    DynamicObjectCollection nckd_staffentry=dynamicObject.getDynamicObjectCollection("nckd_earlyretiredentry");
+                    for (DynamicObject it:nckd_staffentry) {
+                        //所在单位相等则获取发薪机构
+                        if (depament.equals(it.getDynamicObject("nckd_ee_department"))) {
+                            this.getModel().setValue("nckd_aee_institution",it.getDynamicObject("nckd_ee_institution"),i);
+                            break;
+                        }
+                    }
+                }
             }
             //分录类型为通用薪酬退休
             if ("C".equals(nckd_entrytype)) {
+                //先清空汇总分录分录
+                this.getModel().deleteEntryData("nckd_a_retireentry");
                 //字段标识
                 String entrylist="nckd_retired";
                 //对应分录标识
@@ -203,11 +271,33 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应部门标识
                 String dep="nckd_re_department";
                 //对应汇总分录字段标识
-                String allentrtlist="nckd_allretired";
-                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                String allentrtlist="nckd_a_retired";
+                allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_are_department",nckd_a_retireentry);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(true,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
+                //发薪机构赋值
+                DynamicObjectCollection nckd_ase=dynamicObject.getDynamicObjectCollection("nckd_a_retireentry");
+                //循环汇总分录
+                for (int i=0;i<nckd_ase.size();i++){
+                    //部门
+                    DynamicObject depament=nckd_ase.get(i).getDynamicObject("nckd_are_department");
+                    DynamicObjectCollection nckd_staffentry=dynamicObject.getDynamicObjectCollection("nckd_retireentry");
+                    for (DynamicObject it:nckd_staffentry) {
+                        //所在单位相等则获取发薪机构
+                        if (depament.equals(it.getDynamicObject("nckd_re_department"))) {
+                            this.getModel().setValue("nckd_are_institution",it.getDynamicObject("nckd_re_institution"),i);
+                            break;
+                        }
+                    }
+                }
             }
             //分录类型为人力薪酬(一般员工)
             if ("D".equals(nckd_entrytype)) {
+                //先清空汇总分录分录
+                this.getModel().deleteEntryData("nckd_a_salaryentry");
                 //字段标识
                 String entrylist="nckd_pay";
                 //对应分录标识
@@ -215,11 +305,33 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应部门标识
                 String dep="nckd_sae_department";
                 //对应汇总分录字段标识
-                String allentrtlist="nckd_allpay";
-                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                String allentrtlist="nckd_a_allpay";
+                allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_asae_department",nckd_a_salaryentry);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(true,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
+                //发薪机构赋值
+                DynamicObjectCollection nckd_ase=dynamicObject.getDynamicObjectCollection("nckd_a_salaryentry");
+                //循环汇总分录
+                for (int i=0;i<nckd_ase.size();i++){
+                    //部门
+                    DynamicObject depament=nckd_ase.get(i).getDynamicObject("nckd_asae_department");
+                    DynamicObjectCollection nckd_staffentry=dynamicObject.getDynamicObjectCollection("nckd_salaryentry");
+                    for (DynamicObject it:nckd_staffentry) {
+                        //所在单位相等则获取发薪机构
+                        if (depament.equals(it.getDynamicObject("nckd_sae_department"))) {
+                            this.getModel().setValue("nckd_asae_institution",it.getDynamicObject("nckd_sae_institution"),i);
+                            break;
+                        }
+                    }
+                }
             }
             //分录类型为人力薪酬(内退)
             if ("E".equals(nckd_entrytype)) {
+                //先清空汇总分录分录
+                this.getModel().deleteEntryData("nckd_a_salaryentryre");
                 //字段标识
                 String entrylist="nckd_payretird";
                 //对应分录标识
@@ -227,8 +339,28 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应部门标识
                 String dep="nckd_see_department";
                 //对应汇总分录字段标识
-                String allentrtlist="nckd_allpayretird";
-                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                String allentrtlist="nckd_a_payretird";
+                allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_asee_department",nckd_a_salaryentryre);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(true,nckd_a_payretird);
+                //发薪机构赋值
+                DynamicObjectCollection nckd_ase=dynamicObject.getDynamicObjectCollection("nckd_a_salaryentryre");
+                //循环汇总分录
+                for (int i=0;i<nckd_ase.size();i++){
+                    //部门
+                    DynamicObject depament=nckd_ase.get(i).getDynamicObject("nckd_asee_department");
+                    DynamicObjectCollection nckd_staffentry=dynamicObject.getDynamicObjectCollection("nckd_salaryentryre");
+                    for (DynamicObject it:nckd_staffentry) {
+                        //所在单位相等则获取发薪机构
+                        if (depament.equals(it.getDynamicObject("nckd_see_department"))) {
+                            this.getModel().setValue("nckd_asee_institution",it.getDynamicObject("nckd_see_institution"),i);
+                            break;
+                        }
+                    }
+                }
             }
         }
 
@@ -240,9 +372,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
      * @propername 分录标识
      * @dep 对应分录部门标识
      * @allentrtlist 写入的汇总分录字段
+     * @nckd_dep 汇总分录部门标识
      * @description:根据分录类型不同计算汇总分录
      */
-    public void countEntry(DynamicObject dynamicObject,String entrylist,String propername,String dep,String allentrtlist)
+    public void allDataEntry(DynamicObject dynamicObject
+            ,String entrylist,String propername,String dep,String allentrtlist,String nckd_dep,String nckd_allentry)
     {
         //字段标识
         List<String> nckd_generalemployees = entryList(entrylist);
@@ -287,11 +421,14 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
             //创建新的分录行
             int rowIndex = this.getModel().createNewEntryRow(nckd_allentry);
             //设置部门
-            this.getModel().setValue("nckd_all_department", bumen, rowIndex);
+            this.getModel().setValue(nckd_dep, bumen, rowIndex);
             for (int c = 0; c < sumNum.size(); c++) {
                 this.getModel().setValue(entryList(allentrtlist).get(c), sumNum.get(c), rowIndex);
             }
         }
+
     }
 
+
+
 }

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

@@ -0,0 +1,49 @@
+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.entity.EntityMetadataCache;
+import kd.bos.exception.KDBizException;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.botp.Draw;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.sdk.plugin.Plugin;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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");
+            }
+        }
+    }
+
+}

+ 178 - 20
src/main/java/fi/em/formPlugin/YwclF7ListtenerFromPlugin.java

@@ -27,9 +27,23 @@ public class YwclF7ListtenerFromPlugin extends AbstractBillPlugIn implements Plu
     private final static String nckd_payeeaccbanknum="nckd_payeeaccbanknum";//调拨收款账户
     private final static String nckd_payeebanknumlb="nckd_payeebanknumlb";//收款信息修改付款账号
     private final static String nckd_payeebanknumlbs="nckd_payeebanknumlbs";//付款信息修改收款账号
-    private final static String nckd_basedatafield="nckd_basedatafield";//付款信息修改收款账号111
+    private final static String nckd_basedatafield="nckd_basedatafield";//资产报废编号
     private final static String nckd_basedatafield5="nckd_basedatafield5";//资产编号
     private final static String nckd_orgfield4="nckd_orgfield4";//付款信息修改收款账号111
+    private final static String nckd_basedatafield16="nckd_basedatafield16";//财务事物卡片
+    private final static String nckd_basedatafield19="nckd_basedatafield19";//被拆分资产
+    private final static String nckd_orgfield6="nckd_orgfield6";//被拆分资产使用部门
+    private final static String nckd_basedatafield14="nckd_basedatafield14";//转出资产明细
+    private final static String nckd_basedatafield13="nckd_basedatafield13";//转入资产明细
+    private final static String nckd_basedatafield18="nckd_basedatafield18";//资产盘点
+    private final static String nckd_basedatafield21="nckd_basedatafield21";//资产变更明细
+    private final static String nckd_orgfield8="nckd_orgfield8";//资产变更明细使用后部门
+    private final static String nckd_basedatafield6="nckd_basedatafield6";//资产变更明细财务
+
+
+//业务处理单基础资料过滤插件
+
+
     @Override
     public void registerListener(EventObject e) {
         super.registerListener(e);
@@ -52,6 +66,24 @@ public class YwclF7ListtenerFromPlugin extends AbstractBillPlugIn implements Plu
         fieldEdit8.addBeforeF7SelectListener(this);
         BasedataEdit fieldEdit9 = this.getView().getControl(nckd_orgfield4);
         fieldEdit9.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit10 = this.getView().getControl(nckd_basedatafield16);
+        fieldEdit10.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit11 = this.getView().getControl(nckd_basedatafield19);
+        fieldEdit11.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit12 = this.getView().getControl(nckd_orgfield6);
+        fieldEdit12.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit13 = this.getView().getControl(nckd_basedatafield14);
+        fieldEdit13.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit14 = this.getView().getControl(nckd_basedatafield13);
+        fieldEdit14.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit15 = this.getView().getControl(nckd_basedatafield18);
+        fieldEdit15.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit16 = this.getView().getControl(nckd_basedatafield21);
+        fieldEdit16.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit17 = this.getView().getControl(nckd_orgfield8);
+        fieldEdit17.addBeforeF7SelectListener(this);
+        BasedataEdit fieldEdit18 = this.getView().getControl(nckd_basedatafield6);
+        fieldEdit18.addBeforeF7SelectListener(this);
     }
 
     @Override
@@ -79,6 +111,33 @@ public class YwclF7ListtenerFromPlugin extends AbstractBillPlugIn implements Plu
         if (StringUtils.equals(fieldKey, nckd_orgfield4)){
             this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield4);
         }
+        if (StringUtils.equals(fieldKey, nckd_basedatafield16)){
+            this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield16);
+        }
+        if (StringUtils.equals(fieldKey, nckd_basedatafield19)){
+            this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield19);
+        }
+        if (StringUtils.equals(fieldKey, nckd_orgfield6)){
+            this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield6);
+        }
+        if (StringUtils.equals(fieldKey, nckd_basedatafield14)){
+            this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield14);
+        }
+        if (StringUtils.equals(fieldKey, nckd_basedatafield13)){
+            this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield13);
+        }
+        if (StringUtils.equals(fieldKey, nckd_basedatafield18)){
+            this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield18);
+        }
+        if (StringUtils.equals(fieldKey, nckd_basedatafield21)){
+            this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield21);
+        }
+        if (StringUtils.equals(fieldKey, nckd_orgfield8)){
+            this.getQFilterdrzc(beforeF7SelectEvent,nckd_orgfield8);
+        }
+        if (StringUtils.equals(fieldKey, nckd_basedatafield6)){
+            this.getQFilterdczc(beforeF7SelectEvent,nckd_basedatafield6);
+        }
     }
 
     private void getQFilter(BeforeF7SelectEvent arg0, String type) {
@@ -159,9 +218,9 @@ public class YwclF7ListtenerFromPlugin extends AbstractBillPlugIn implements Plu
         showParameter.getListFilterParameter().setFilter(filter);
     }
     private void getQFiltersbf(BeforeF7SelectEvent arg0, String type) {
-        DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_costcompany") ;
+        DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ;
         if(data ==null){
-            throw new KDBizException("资产组织为空!");
+            throw new KDBizException("核算组织为空!");
         }
         String number = data.getString("number");
         QFilter filter;
@@ -184,38 +243,137 @@ public class YwclF7ListtenerFromPlugin extends AbstractBillPlugIn implements Plu
             ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
             showParameter.getListFilterParameter().setFilter(filter);
         }else if ("N".equals(nckdDetailtype)) {
-            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_costcompany") ;
+            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
             if(data ==null){
-                throw new KDBizException("资产组织为空!");
+                throw new KDBizException("核算组织为空!");
             }
             String number = data.getString("number");
             QFilter filter;
             //给基础资料添加过滤
-            filter = new QFilter("assetunit.number", QCP.equals, number);
+            filter = new QFilter("org.number", QCP.equals, number);
+            ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
+            showParameter.getListFilterParameter().setFilter(filter);
+        }else if ("P".equals(nckdDetailtype)) {
+            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
+            if(data ==null){
+                throw new KDBizException("核算组织为空!");
+            }
+            String number = data.getString("number");
+            QFilter filter;
+            //给基础资料添加过滤
+            filter = new QFilter("org.number", QCP.equals, number);
+            ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
+            showParameter.getListFilterParameter().setFilter(filter);
+        }else if ("T".equals(nckdDetailtype)) {
+            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
+            if(data ==null){
+                throw new KDBizException("核算组织为空!");
+            }
+            String number = data.getString("number");
+            QFilter filter;
+            //给基础资料添加过滤
+            filter = new QFilter("org.number", QCP.equals, number);
+            ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
+            showParameter.getListFilterParameter().setFilter(filter);
+        }else if ("S".equals(nckdDetailtype)) {
+            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
+            if(data ==null){
+                throw new KDBizException("核算组织为空!");
+            }
+            String number = data.getString("number");
+            QFilter filter;
+            //给基础资料添加过滤
+            filter = new QFilter("org.number", QCP.equals, number);
+            ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
+            showParameter.getListFilterParameter().setFilter(filter);
+        }else if ("Q".equals(nckdDetailtype)) {
+            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
+            if(data ==null){
+                throw new KDBizException("核算组织为空!");
+            }
+            String number = data.getString("number");
+            QFilter filter;
+            //给基础资料添加过滤
+            filter = new QFilter("org.number", QCP.equals, number);
+            ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
+            showParameter.getListFilterParameter().setFilter(filter);
+        }else if ("K".equals(nckdDetailtype)) {
+            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield");
+            if(data ==null){
+                throw new KDBizException("核算组织为空!");
+            }
+            String number = data.getString("number");
+            QFilter filter;
+            //给基础资料添加过滤
+            filter = new QFilter("org.number", QCP.equals, number);
             ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
             showParameter.getListFilterParameter().setFilter(filter);
         }
 
     }
     private void getQFilterdrzc(BeforeF7SelectEvent arg0, String type) {
+        String nckdDetailtype = this.getModel().getValue("nckd_detailtype").toString();
+        if("E".equals(nckdDetailtype)){
             DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield2") ;
             if(data ==null){
-                throw new KDBizException("调出组织为空!");
+                throw new KDBizException("调组织为空!");
             }
-        long id = data.getLong("id");
-        QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id);
-        Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter});
-        HashSet<Long> objects = new HashSet<>();
-        for (Object idkey:nckd_cas_arbilMap.keySet()) {
-            //当前单头
-            DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey);
-            Long id1 = dynamicObject.getLong("toorg.id");
-            objects.add(id1);
+            long id = data.getLong("id");
+            QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id);
+            Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter});
+            HashSet<Long> objects = new HashSet<>();
+            for (Object idkey:nckd_cas_arbilMap.keySet()) {
+                //当前单头
+                DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey);
+                Long id1 = dynamicObject.getLong("toorg.id");
+                objects.add(id1);
 
+            }
+            QFilter filter = new QFilter("id",QCP.in,objects);
+            //给基础资料添加过滤
+            ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter();
+            showParameter.getListFilterParameter().setFilter(filter);
+        }else if ("N".equals(nckdDetailtype)) {
+            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ;
+            if(data ==null){
+                throw new KDBizException("核算组织为空!");
+            }
+            long id = data.getLong("id");
+            QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id);
+            Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter});
+            HashSet<Long> objects = new HashSet<>();
+            for (Object idkey:nckd_cas_arbilMap.keySet()) {
+                //当前单头
+                DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey);
+                Long id1 = dynamicObject.getLong("toorg.id");
+                objects.add(id1);
+
+            }
+            QFilter filter = new QFilter("id",QCP.in,objects);
+            //给基础资料添加过滤
+            ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter();
+            showParameter.getListFilterParameter().setFilter(filter);
+        }else if ("T".equals(nckdDetailtype)) {
+            DynamicObject data = (DynamicObject)this.getModel().getValue("nckd_orgfield") ;
+            if(data ==null){
+                throw new KDBizException("核算组织为空!");
+            }
+            long id = data.getLong("id");
+            QFilter nckd_orgamountFilter = new QFilter("fromorg.id", QCP.equals, id);
+            Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_org_orgrelation_dept", new QFilter[]{nckd_orgamountFilter});
+            HashSet<Long> objects = new HashSet<>();
+            for (Object idkey:nckd_cas_arbilMap.keySet()) {
+                //当前单头
+                DynamicObject dynamicObject = nckd_cas_arbilMap.get(idkey);
+                Long id1 = dynamicObject.getLong("toorg.id");
+                objects.add(id1);
+
+            }
+            QFilter filter = new QFilter("id",QCP.in,objects);
+            //给基础资料添加过滤
+            ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter();
+            showParameter.getListFilterParameter().setFilter(filter);
         }
-        QFilter filter = new QFilter("id",QCP.in,objects);
-        //给基础资料添加过滤
-        ListShowParameter showParameter = (ListShowParameter) arg0.getFormShowParameter();
-        showParameter.getListFilterParameter().setFilter(filter);
+
     }
 }

+ 26 - 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,9 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author cjz
@@ -20,8 +26,26 @@ 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){
+                QFilter nckd_orgamountFilter = new QFilter("fbilltype", QCP.equals, "er_tripreimburse");
+                nckd_orgamountFilter.and("finterid", QCP.equals, info.getString("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){

+ 46 - 0
src/main/java/fi/em/opplugin/BusinessProcessingSplitOpPlugin.java

@@ -0,0 +1,46 @@
+package fi.em.opplugin;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.sdk.plugin.Plugin;
+
+public class BusinessProcessingSplitOpPlugin extends AbstractListPlugin implements Plugin {
+    private final static String KEY_Card = "selectcard";//匹配卡片清单按钮
+    @Override
+    public void afterDoOperation(AfterDoOperationEventArgs e) {
+        String operateKey = e.getOperateKey();
+        if (KEY_Card.equals(e.getOperateKey())) {
+            //获取实物卡片编码
+            DynamicObject nckd_basedatafield19 = this.getModel().getDataEntity().getDynamicObject("nckd_basedatafield19");
+            DynamicObjectCollection nckd_entryentity6112 = this.getModel().getDataEntity().getDynamicObjectCollection("nckd_entryentity6112");
+            if (nckd_entryentity6112.size() == 1 && nckd_basedatafield19 != null) {
+                DynamicObject dept = nckd_entryentity6112.get(0).getDynamicObject("nckd_orgfield6");
+                String number = nckd_basedatafield19.getDynamicObject("realcard").getString("number");
+                Long id = nckd_basedatafield19.getDynamicObject("realcard").getLong("id");
+                //查询e管家实物卡片清单
+                QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number);
+                DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+                for (int i = 0; i < dynamicObjects.length; i++) {
+                    DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                    //资产名称
+                    String name = info.getString("name");
+                    String nckd_card_model = info.getString("nckd_card_model");
+                    //资产拆分明细分录
+                    int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity6112");
+                    this.getModel().setValue("nckd_textfield38", name, rowIndex);
+                    this.getModel().setValue("nckd_combofield5", "拆分后", rowIndex);
+                    this.getModel().setValue("nckd_textfield34", nckd_card_model, rowIndex);
+                    this.getModel().setValue("nckd_orgfield6", dept, rowIndex);
+                    this.getModel().setValue("nckd_real_card_list", info.getLong("id"), rowIndex);
+                }
+                this.getModel().setValue("nckd_integerfield1", dynamicObjects.length);
+                this.getView().updateView("nckd_entryentity6112");
+            }
+        }
+    }
+}

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

@@ -0,0 +1,41 @@
+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.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 {
+
+    @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){
+                QFilter nckd_orgamountFilter = new QFilter("fbilltype", QCP.equals, "er_publicreimbursebill");
+                nckd_orgamountFilter.and("finterid", QCP.equals, info.getString("id"));
+                Map<Object, DynamicObject> nckd_cas_arbilMap = BusinessDataServiceHelper.loadFromCache("bos_attachment", new QFilter[]{nckd_orgamountFilter});
+                if(nckd_cas_arbilMap.size()<=0){
+                    throw new KDBizException("请上传费用申请附件!");
+                }
+            }
+        }
+    }
+}

+ 4 - 1
src/main/java/fi/er/opplugin/FinapbillBeforeF7SelectSample.java

@@ -65,6 +65,7 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
             QFilter qFilter = new QFilter("nckd_orgfield.id", QCP.equals, assetorg.getLong("id"));
             // 表过滤条件
             ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
+            showParameter.setShowApproved(false);
             showParameter.getListFilterParameter().setFilter(qFilter);
         }
     }
@@ -90,9 +91,11 @@ public class FinapbillBeforeF7SelectSample extends AbstractFormPlugin implements
                     String nckd_use_name = cardInfo.getString("nckd_use_name");//使用人
                     String nckd_local = cardInfo.getString("nckd_local");//存放地点
                     String nckd_card_model = cardInfo.getString("nckd_card_model");//型号
+                    Date nckd_start_date = cardInfo.getDate("nckd_start_date");//开始使用日期
                     //资产信息分录赋值
                     this.getModel().setValue("asset_name", name, parentIndex);
-                    //资产类别赋值
+                    //资产发生日期
+                    this.getModel().setValue("asset_happendate", nckd_start_date, parentIndex);
                     //规格型号
                     this.getModel().setValue("asset_model",nckd_card_model, parentIndex);
                     //使用部门

+ 192 - 68
src/main/java/fi/er/opplugin/PublicreimburOpPlugin.java

@@ -4,18 +4,14 @@ import com.alibaba.druid.util.StringUtils;
 import fi.cas.common.SettlementStatusEnum;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.metadata.IDataEntityType;
 import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
-import kd.bos.exception.KDBizException;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
-import kd.bos.servicehelper.operation.DeleteServiceHelper;
+import kd.bos.servicehelper.QueryServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
-
 import java.math.BigDecimal;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -43,23 +39,6 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
                 info.set("nckd_unsettleamount",totalUnsettleamount);
                 info.set("nckd_settleamount",BigDecimal.ZERO);
                 info.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
-
-                //反写实物卡片清单
-                for (DynamicObject entryentity : info.getDynamicObjectCollection("assetentry")) {
-                    DynamicObjectCollection nckd_real_card = entryentity.getDynamicObjectCollection("nckd_real_card");
-                    for (DynamicObject object : nckd_real_card) {
-                        Long id = (Long) object.get(2);
-                        //查询实物卡片分录数据,如果查询到数据则不能保存该报销单
-                        QFilter filter = new QFilter("id", QCP.equals,id);
-                        DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
-                        for (int j = 0; j < cardObjects.length; j++) {
-                            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[i].getPkValue(), cardObjects[i].getDynamicObjectType().getName());
-                            //资产报账单审核通过后,实物卡片清单标记为1
-                            cardInfo.set("nckd_flag", "1");
-                            SaveServiceHelper.save(new DynamicObject[]{cardInfo});
-                        }
-                    }
-                }
                 SaveServiceHelper.save(new DynamicObject[]{info});
             } else if (StringUtils.equals(e.getOperationKey(),"unaudit")) {
                 //当前单头数据包
@@ -70,54 +49,8 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
                 }
                 info.set("nckd_unsettleamount",BigDecimal.ZERO);
                 info.set("nckd_settlestatus", null);
-
-                //反审核反写实物卡片清单
-                for (DynamicObject entryentity : info.getDynamicObjectCollection("assetentry")) {
-                    DynamicObjectCollection nckd_real_card = entryentity.getDynamicObjectCollection("nckd_real_card");
-                    for (DynamicObject object : nckd_real_card) {
-                        Long id = (Long) object.get(2);
-                        //查询实物卡片分录数据,如果查询到数据则不能保存该报销单
-                        QFilter filter = new QFilter("id", QCP.equals,id);
-                        DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
-                        for (int j = 0; j < cardObjects.length; j++) {
-                            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[i].getPkValue(), cardObjects[i].getDynamicObjectType().getName());
-                            //资产报账单审核通过后,实物卡片清单标记为1
-                            //资产报账单审核通过后,实物卡片清单标记为1
-                            cardInfo.set("nckd_flag", "0");
-                            //星瀚实物卡片三个字段回写为空
-                            cardInfo.set("nckd_card_real_org", null);
-                            cardInfo.set("nckd_card_real_code", null);
-                            cardInfo.set("nckd_card_real_name", null);
-                            SaveServiceHelper.save(new DynamicObject[]{cardInfo});
-                        }
-                    }
-                }
                 SaveServiceHelper.save(new DynamicObject[]{info});
 
-                //反审核需要删除资产报账单下推的物卡片清单
-                //查询实物卡片清单
-                QFilter cardFilter = new QFilter("nckd_bz_id", QCP.equals,info.getLong("id"));
-                DynamicObject[] cardDynamicObjects = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {cardFilter});
-                if (cardDynamicObjects.length > 0) {
-                    for (int d=0;d<cardDynamicObjects.length;d++) {
-                        DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardDynamicObjects[i].getPkValue(), cardDynamicObjects[i].getDynamicObjectType().getName());
-                        String billno = cardInfo.getString("billno");
-                        //删除实物卡片
-                        IDataEntityType dataEntityType = cardInfo.getDataEntityType();
-                        Object[] pks = new Object[]{cardInfo.getLong("id")};
-                        DeleteServiceHelper.delete(dataEntityType, pks);
-                        //查询财务卡片
-                        QFilter cwFilter = new QFilter("billno", QCP.equals,cardInfo.getString("billno"));
-                        DynamicObject[] cwDynamicObjects = BusinessDataServiceHelper.load("fa_card_fin","id",new QFilter[] {cwFilter});
-                        for (int f=0;f<cwDynamicObjects.length;f++) {
-                            DynamicObject cwInfo = BusinessDataServiceHelper.loadSingle(cwDynamicObjects[i].getPkValue(), cwDynamicObjects[i].getDynamicObjectType().getName());
-                            //删除财务卡片
-                            IDataEntityType cwdataEntityType = cwInfo.getDataEntityType();
-                            Object[] ids = new Object[]{cwInfo.getLong("id")};
-                            DeleteServiceHelper.delete(cwdataEntityType, ids);
-                        }
-                    }
-                }
             } else if (StringUtils.equals(e.getOperationKey(),"save")) {
                 DynamicObject info = dynamicObjects[i];
                 List<String> list = Arrays.asList("3", "4", "5", "7", "8", "9", "10", "11", "12", "13", "14", "15","16", "17", "18", "19", "20", "21", "24", "30");
@@ -131,7 +64,198 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
                         break;
                     }
                 }
+
+                //反写预付借款单
+                DynamicObjectCollection writeoffmoneys = info.getDynamicObjectCollection("writeoffmoney");
+                Boolean exist = QueryServiceHelper.exists(info.getDynamicObjectType().getName(),  info.getPkValue());
+                if (!exist) {
+                    // 如果没有保存的信息,直接反写
+                    writeBackFinarbill(writeoffmoneys);
+                }else {
+                    DynamicObject saveInfo = BusinessDataServiceHelper.loadSingle(info.getPkValue(), info.getDynamicObjectType().getName());
+                    DynamicObjectCollection saveWriteoffmoneys = saveInfo.getDynamicObjectCollection("writeoffmoney");
+                    // 处理在 saveWriteoffmoneys 中但不在 writeoffmoneys 中的元素
+                    DynamicObjectCollection toDelete = getDifference(saveWriteoffmoneys, writeoffmoneys);
+                    if (toDelete.size() != 0) {
+                        deleteBackFinarbill(toDelete);
+                    }
+                    // 处理在 writeoffmoneys 中但不在 saveWriteoffmoneys 中的元素
+                    DynamicObjectCollection toWriteBack = getDifference(writeoffmoneys, saveWriteoffmoneys);
+                    if (toWriteBack.size() != 0) {
+                        writeBackFinarbill(toWriteBack);
+                    }
+                    // 获取在 writeoffmoneys 和 saveWriteoffmoneys 中都有的元素并执行反写
+                    DynamicObjectCollection commonItems = getCommonItems(writeoffmoneys, saveWriteoffmoneys);
+                    if (commonItems.size() != 0) {
+                        commonBackFinarbill(commonItems);
+                    }
+                }
+            } else if (StringUtils.equals(e.getOperationKey(),"delete")) {
+                //当前单头数据包
+                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                DynamicObjectCollection writeoffmoneys = info.getDynamicObjectCollection("writeoffmoney");
+                deleteBackFinarbill(writeoffmoneys);
+            }
+        }
+    }
+
+    public void writeBackFinarbill(DynamicObjectCollection writeoffmoneys) {
+        //报销单冲预付借款分录
+        for (DynamicObject writeoffmoney : writeoffmoneys) {
+            //预付借款单id
+            String sourcebillid = writeoffmoney.getString("sourcebillid");
+            //预付借款单预付借款信息分录id
+            Long srcofsrcentryid = writeoffmoney.getLong("srcofsrcentryid");
+            //冲销金额
+            BigDecimal accloanamount = writeoffmoney.getBigDecimal("accloanamount");
+            //查询应收挂账单
+            QFilter filter = new QFilter("sourcebillid", QCP.equals, sourcebillid);
+            DynamicObject[] finarbills = BusinessDataServiceHelper.load("ar_finarbill","id",new QFilter[] {filter});
+            for (DynamicObject finarbill : finarbills) {
+                DynamicObject finarbillInfo = BusinessDataServiceHelper.loadSingle(finarbill.getPkValue(), finarbill.getDynamicObjectType().getName());
+                //应收挂账单明细分录
+                DynamicObjectCollection entrys = finarbillInfo.getDynamicObjectCollection("entry");
+                for (DynamicObject entry : entrys) {
+                    //预付借款单预付借款信息分录id
+                    Long e_srcentryid = entry.getLong("e_srcentryid");
+                    //销账金额
+                    BigDecimal nckd_e_settledamt = entry.getBigDecimal("nckd_e_settledamt");
+                    //已结算金额
+                    BigDecimal e_settledamt = entry.getBigDecimal("e_settledamt");
+                    //未结算金额
+                    BigDecimal e_unsettleamt = entry.getBigDecimal("e_unsettleamt");
+                    //已结算金额(本位币)
+                    BigDecimal e_settledlocalamt = entry.getBigDecimal("e_settledlocalamt");
+                    //未结算金额(本位币)
+                    BigDecimal e_unsettlelocalamt = entry.getBigDecimal("e_unsettlelocalamt");
+                    if (e_srcentryid != 0 && e_srcentryid.equals(srcofsrcentryid)) {
+                        entry.set("nckd_e_settledamt", nckd_e_settledamt.add(accloanamount));
+                        entry.set("e_settledamt", e_settledamt.add(accloanamount));
+                        entry.set("e_unsettleamt", e_unsettleamt.subtract(accloanamount));
+                    }
+                }
+                SaveServiceHelper.save(new DynamicObject[]{finarbillInfo});
+            }
+        }
+    }
+
+    public void deleteBackFinarbill(DynamicObjectCollection writeoffmoneys) {
+        //报销单冲预付借款分录
+        for (DynamicObject writeoffmoney : writeoffmoneys) {
+            //预付借款单id
+            String sourcebillid = writeoffmoney.getString("sourcebillid");
+            //预付借款单预付借款信息分录id
+            Long srcofsrcentryid = writeoffmoney.getLong("srcofsrcentryid");
+            //冲销金额
+            BigDecimal accloanamount = writeoffmoney.getBigDecimal("accloanamount");
+            //查询应收挂账单
+            QFilter filter = new QFilter("sourcebillid", QCP.equals, sourcebillid);
+            DynamicObject[] finarbills = BusinessDataServiceHelper.load("ar_finarbill","id",new QFilter[] {filter});
+            for (DynamicObject finarbill : finarbills) {
+                DynamicObject finarbillInfo = BusinessDataServiceHelper.loadSingle(finarbill.getPkValue(), finarbill.getDynamicObjectType().getName());
+                //应收挂账单明细分录
+                DynamicObjectCollection entrys = finarbillInfo.getDynamicObjectCollection("entry");
+                for (DynamicObject entry : entrys) {
+                    //预付借款单预付借款信息分录id
+                    Long e_srcentryid = entry.getLong("e_srcentryid");
+                    //销账金额
+                    BigDecimal nckd_e_settledamt = entry.getBigDecimal("nckd_e_settledamt");
+                    //已结算金额
+                    BigDecimal e_settledamt = entry.getBigDecimal("e_settledamt");
+                    //未结算金额
+                    BigDecimal e_unsettleamt = entry.getBigDecimal("e_unsettleamt");
+                    //已结算金额(本位币)
+                    BigDecimal e_settledlocalamt = entry.getBigDecimal("e_settledlocalamt");
+                    //未结算金额(本位币)
+                    BigDecimal e_unsettlelocalamt = entry.getBigDecimal("e_unsettlelocalamt");
+                    if (e_srcentryid != 0 && e_srcentryid.equals(srcofsrcentryid)) {
+                        entry.set("nckd_e_settledamt", nckd_e_settledamt.subtract(accloanamount));
+                        entry.set("e_settledamt", e_settledamt.subtract(accloanamount));
+                        entry.set("e_unsettleamt", e_unsettleamt.add(accloanamount));
+                    }
+                }
+                SaveServiceHelper.save(new DynamicObject[]{finarbillInfo});
+            }
+        }
+    }
+
+    public void commonBackFinarbill(DynamicObjectCollection writeoffmoneys) {
+        //报销单冲预付借款分录
+        for (DynamicObject writeoffmoney : writeoffmoneys) {
+            //预付借款单id
+            String sourcebillid = writeoffmoney.getString("sourcebillid");
+            //预付借款单预付借款信息分录id
+            Long srcofsrcentryid = writeoffmoney.getLong("srcofsrcentryid");
+            //冲销金额
+            BigDecimal nckd_amountfield13 = writeoffmoney.getBigDecimal("nckd_amountfield13");
+            //查询应收挂账单
+            QFilter filter = new QFilter("sourcebillid", QCP.equals, sourcebillid);
+            DynamicObject[] finarbills = BusinessDataServiceHelper.load("ar_finarbill","id",new QFilter[] {filter});
+            for (DynamicObject finarbill : finarbills) {
+                DynamicObject finarbillInfo = BusinessDataServiceHelper.loadSingle(finarbill.getPkValue(), finarbill.getDynamicObjectType().getName());
+                //应收挂账单明细分录
+                DynamicObjectCollection entrys = finarbillInfo.getDynamicObjectCollection("entry");
+                for (DynamicObject entry : entrys) {
+                    //预付借款单预付借款信息分录id
+                    Long e_srcentryid = entry.getLong("e_srcentryid");
+                    //销账金额
+                    BigDecimal nckd_e_settledamt = entry.getBigDecimal("nckd_e_settledamt");
+                    //已结算金额
+                    BigDecimal e_settledamt = entry.getBigDecimal("e_settledamt");
+                    //未结算金额
+                    BigDecimal e_unsettleamt = entry.getBigDecimal("e_unsettleamt");
+                    //已结算金额(本位币)
+                    BigDecimal e_settledlocalamt = entry.getBigDecimal("e_settledlocalamt");
+                    //未结算金额(本位币)
+                    BigDecimal e_unsettlelocalamt = entry.getBigDecimal("e_unsettlelocalamt");
+                    if (e_srcentryid != 0 && e_srcentryid.equals(srcofsrcentryid)) {
+                        entry.set("nckd_e_settledamt", nckd_e_settledamt.add(nckd_amountfield13));
+                        entry.set("e_settledamt", e_settledamt.add(nckd_amountfield13));
+                        entry.set("e_unsettleamt", e_unsettleamt.subtract(nckd_amountfield13));
+                    }
+                }
+                SaveServiceHelper.save(new DynamicObject[]{finarbillInfo});
+            }
+        }
+    }
+
+    // 获取在 source 中但不在 target 中的元素集合
+    private DynamicObjectCollection getDifference(DynamicObjectCollection source, DynamicObjectCollection target) {
+        DynamicObjectCollection difference = new DynamicObjectCollection();
+        for (DynamicObject sourceItem : source) {
+            boolean existsInTarget = false;
+            for (DynamicObject targetItem : target) {
+                // 根据某个唯一标识符判断是否存在
+                if (sourceItem.getPkValue().equals(targetItem.getPkValue())) {
+                    existsInTarget = true;
+                    break;
+                }
+            }
+            if (!existsInTarget) {
+                difference.add(sourceItem);
+            }
+        }
+        return difference;
+    }
+
+    // 获取在 source 和 target 中都有的元素集合
+    private DynamicObjectCollection getCommonItems(DynamicObjectCollection source, DynamicObjectCollection target) {
+        DynamicObjectCollection commonItems = new DynamicObjectCollection();
+        for (DynamicObject sourceItem : source) {
+            for (DynamicObject targetItem : target) {
+                // 根据某个唯一标识符判断是否存在
+                if (sourceItem.getPkValue().equals(targetItem.getPkValue())) {
+                    BigDecimal sourceAmount = sourceItem.getBigDecimal("accloanamount");
+                    BigDecimal targetAmount = targetItem.getBigDecimal("accloanamount");
+                    BigDecimal nckd_amountfield13 = sourceAmount.subtract(targetAmount);
+                    if (nckd_amountfield13.compareTo(BigDecimal.ZERO) != 0) {
+                        sourceItem.set("nckd_amountfield13", nckd_amountfield13);
+                        commonItems.add(sourceItem);
+                        break; // 找到共同项后跳出内层循环
+                    }
+                }
             }
         }
+        return commonItems;
     }
 }

+ 137 - 0
src/main/java/fi/fa/formPlugin/EcardListPlugin.java

@@ -0,0 +1,137 @@
+package fi.fa.formPlugin;
+
+import com.alibaba.druid.util.StringUtils;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.ListSelectedRowCollection;
+import kd.bos.form.CloseCallBack;
+import kd.bos.form.ShowFormHelper;
+import kd.bos.form.control.events.ItemClickEvent;
+import kd.bos.form.events.ClosedCallBackEvent;
+import kd.bos.list.BillList;
+import kd.bos.list.ListFilterParameter;
+import kd.bos.list.ListShowParameter;
+import kd.bos.list.plugin.AbstractListPlugin;
+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.math.RoundingMode;
+import java.util.*;
+
+public class EcardListPlugin extends AbstractListPlugin {
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        this.addItemClickListeners(new String[]{"toolbarap"});
+    }
+
+    @Override
+    public void itemClick(ItemClickEvent evt) {
+        String itemKey = evt.getItemKey();
+        if ("nckd_baritemap2".equals(itemKey)) {
+            BillList billList = (BillList) this.getControl("billlistap");
+            ListSelectedRowCollection list = billList.getSelectedRows();
+            if (list.isEmpty()) {
+                this.getView().showMessage("请至少选择一条数据");
+            }else {
+                ListShowParameter showParameter = ShowFormHelper.createShowListForm("fa_assetcategory", false, 2);
+                showParameter.setFormId("bos_templatetreelistf7");
+                ListFilterParameter listFilterParameter = showParameter.getListFilterParameter();
+                QFilter filter = new QFilter("isleaf", QCP.equals, true);
+                listFilterParameter.setFilter(filter);
+                showParameter.setListFilterParameter(listFilterParameter);
+                showParameter.setCloseCallBack(new CloseCallBack(this, itemKey));
+                this.getView().showForm(showParameter);
+            }
+        } else if ("nckd_baritemap1".equals(itemKey)) {
+            boolean flag = true;
+            BillList billList = (BillList) this.getControl("billlistap");
+            ListSelectedRowCollection list = billList.getSelectedRows();
+            Object[] primaryKeyValues = list.getPrimaryKeyValues();
+            Set<Long> orgIds = new HashSet<>();
+            for (Object primaryKeyValue : primaryKeyValues) {
+                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_fa_card_real_list");
+                DynamicObject nckd_orgfield = cardInfo.getDynamicObject("nckd_orgfield");
+                String nckd_card_real_code = cardInfo.getString("nckd_card_real_code");
+                if (nckd_orgfield == null) {
+                    flag = false;
+                    this.getView().showMessage("单据:" + cardInfo.getString("number") + "的归属机构为空,请重新勾选数据!");
+                    break;
+                }
+                if(!StringUtils.isEmpty(nckd_card_real_code)) {
+                    flag = false;
+                    this.getView().showMessage("单据:" + cardInfo.getString("number") + "已生成实物卡片:" + nckd_card_real_code + ",请重新勾选数据!");
+                    break;
+                }
+                orgIds.add(nckd_orgfield.getLong("id"));
+            }
+
+            if (orgIds.isEmpty()) {
+                flag = false;
+                this.getView().showMessage("请至少选择一条数据");
+            } else if (orgIds.size() > 1) {
+                flag = false;
+                this.getView().showMessage("所选择的数据归属机构不一致,请重新勾选数据!");
+            }
+            if (flag) {
+                ListShowParameter showParameter = ShowFormHelper.createShowListForm("nckd_ft_rule", false, 2);
+                showParameter.setFormId("bos_listf7");
+                ListFilterParameter listFilterParameter = showParameter.getListFilterParameter();
+                QFilter filter = new QFilter("entrycostcompany_orgrule.id", QCP.in, orgIds);
+                filter.and("fid.billstatus", QCP.in, Arrays.asList("E", "F", "G"));
+                listFilterParameter.setFilter(filter);
+                showParameter.setListFilterParameter(listFilterParameter);
+                showParameter.setCloseCallBack(new CloseCallBack(this, itemKey));
+                this.getView().showForm(showParameter);
+            }
+        }
+    }
+
+
+    @Override
+    public void closedCallBack(ClosedCallBackEvent e) {
+        super.closedCallBack(e);
+        if (null != e.getReturnData()) {
+            if (StringUtils.equals(e.getActionId(), "nckd_baritemap2")) {
+                //获取选中的资产类别
+                ListSelectedRowCollection returnData = (ListSelectedRowCollection) e.getReturnData();
+                Long primaryKeyValue = (Long) returnData.get(0).getPrimaryKeyValue();
+
+                //更新选中的实物卡片清单资产类别
+                BillList billList = (BillList) this.getControl("billlistap");
+                ListSelectedRowCollection list = billList.getSelectedRows();
+                Object[] primaryKeyValues = list.getPrimaryKeyValues();
+                List<Object> ids = Arrays.asList(Arrays.stream(primaryKeyValues).toArray());
+                QFilter filter = new QFilter("id", QCP.in, ids);
+                DynamicObject[] realCards = BusinessDataServiceHelper.load("nckd_fa_card_real_list", "id", new QFilter[]{filter});
+                for (DynamicObject realCard : realCards) {
+                    DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(realCard.getPkValue(), realCard.getDynamicObjectType().getName());
+                    cardInfo.set("nckd_fa_assetcategory", primaryKeyValue);
+                    SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                }
+            } else if (StringUtils.equals(e.getActionId(), "nckd_baritemap1")) {
+                //获取选中的分摊信息
+                ListSelectedRowCollection returnData = (ListSelectedRowCollection) e.getReturnData();
+                Long primaryKeyValue = (Long) returnData.get(0).getPrimaryKeyValue();
+                DynamicObject ftInfo = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_ft_rule");
+                BigDecimal shareamount_comrule = ftInfo.getBigDecimal("shareamount_comrule");
+
+
+                //更新选中的实物卡片清单资产类别
+                BillList billList = (BillList) this.getControl("billlistap");
+                ListSelectedRowCollection list = billList.getSelectedRows();
+                BigDecimal nckd_ft_amount = shareamount_comrule.divide(BigDecimal.valueOf(list.size()),  RoundingMode.HALF_UP);
+                Object[] primaryKeyValues = list.getPrimaryKeyValues();
+                List<Object> ids = Arrays.asList(Arrays.stream(primaryKeyValues).toArray());
+                QFilter filter = new QFilter("id", QCP.in, ids);
+                DynamicObject[] realCards = BusinessDataServiceHelper.load("nckd_fa_card_real_list", "id", new QFilter[]{filter});
+                for (DynamicObject realCard : realCards) {
+                    DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(realCard.getPkValue(), realCard.getDynamicObjectType().getName());
+                    cardInfo.set("nckd_ft_amount", nckd_ft_amount);
+                    SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                }
+            }
+        }
+    }
+}

+ 1011 - 1011
src/main/java/fi/fa/formPlugin/FaInventoryTaskListNew.java

@@ -1,1012 +1,1012 @@
+////
+//// Source code recreated from a .class file by IntelliJ IDEA
+//// (powered by FernFlower decompiler)
+////
 //
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package fi.fa.formPlugin;
-
-import com.alibaba.fastjson.JSON;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.EventObject;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import fi.fa.opplugin.utils.ChangeDataUtils;
-import kd.bos.algo.DataSet;
-import kd.bos.algo.Row;
-import kd.bos.context.RequestContext;
-import kd.bos.dataentity.entity.CloneUtils;
-import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.entity.LocaleString;
-import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
-import kd.bos.dataentity.resource.ResManager;
-import kd.bos.dataentity.serialization.SerializationUtils;
-import kd.bos.db.tx.TX;
-import kd.bos.db.tx.TXHandle;
-import kd.bos.entity.EntityMetadataCache;
-import kd.bos.entity.MainEntityType;
-import kd.bos.entity.cache.AppCache;
-import kd.bos.entity.cache.IAppCache;
-import kd.bos.entity.datamodel.ListSelectedRow;
-import kd.bos.entity.datamodel.ListSelectedRowCollection;
-import kd.bos.entity.datamodel.events.PackageDataEvent;
-import kd.bos.entity.list.column.ColumnDesc;
-import kd.bos.entity.property.MulBasedataProp;
-import kd.bos.entity.validate.BillStatus;
-import kd.bos.exception.KDBizException;
-import kd.bos.filter.CommonFilterColumn;
-import kd.bos.filter.FilterColumn;
-import kd.bos.form.CloseCallBack;
-import kd.bos.form.ConfirmCallBackListener;
-import kd.bos.form.ConfirmTypes;
-import kd.bos.form.FormShowParameter;
-import kd.bos.form.MessageBoxOptions;
-import kd.bos.form.MessageBoxResult;
-import kd.bos.form.ShowFormHelper;
-import kd.bos.form.ShowType;
-import kd.bos.form.control.Control;
-import kd.bos.form.control.events.ItemClickEvent;
-import kd.bos.form.events.BeforeCreateListColumnsArgs;
-import kd.bos.form.events.BeforeCreateListDataProviderArgs;
-import kd.bos.form.events.ClosedCallBackEvent;
-import kd.bos.form.events.FilterContainerInitArgs;
-import kd.bos.form.events.HyperLinkClickArgs;
-import kd.bos.form.events.HyperLinkClickEvent;
-import kd.bos.form.events.MessageBoxClosedEvent;
-import kd.bos.form.events.PreOpenFormEventArgs;
-import kd.bos.form.events.SetFilterEvent;
-import kd.bos.form.field.ComboItem;
-import kd.bos.fs.util.StringUtils;
-import kd.bos.license.api.LicenseCheckResult;
-import kd.bos.list.BillList;
-import kd.bos.list.IListColumn;
-import kd.bos.list.IListView;
-import kd.bos.list.ListShowParameter;
-import kd.bos.list.plugin.AbstractListPlugin;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.mvc.list.ListDataProvider;
-import kd.bos.orm.datamanager.DataManagerUtils;
-import kd.bos.orm.query.QFilter;
-import kd.bos.orm.util.CollectionUtils;
-import kd.bos.servicehelper.BusinessDataServiceHelper;
-import kd.bos.servicehelper.QueryServiceHelper;
-import kd.bos.servicehelper.license.LicenseServiceHelper;
-import kd.bos.servicehelper.operation.DeleteServiceHelper;
-import kd.bos.servicehelper.operation.SaveServiceHelper;
-import kd.bos.servicehelper.workflow.MessageCenterServiceHelper;
-import kd.bos.url.UrlService;
-import kd.bos.util.JSONUtils;
-import kd.bos.workflow.engine.msg.info.MessageInfo;
-import kd.fi.fa.business.BizStatusEnum;
-import kd.fi.fa.business.utils.FaOperateLogUtil;
-import kd.fi.fa.business.utils.FaUtils;
-import kd.fi.fa.common.util.ContextUtil;
-import kd.fi.fa.common.util.Fa;
-import kd.fi.fa.utils.FaAssetTypeUtils;
-import kd.fi.fa.utils.FaInventoryUtils;
-
-public class FaInventoryTaskListNew extends AbstractListPlugin {
-    private static final Log log = LogFactory.getLog(FaInventoryTaskListNew.class);
-    public static final String ALGOKEY = "kd.fi.fa.formplugin.FaInventoryTaskListNew";
-    private static final int DATA_SIZE = DataManagerUtils.getBatchSize();
-    private static final String ASSIGNINVENTORY = "assigninventory";
-    private Map<Long, Map<String, Set<Long>>> idAndBaseDataMap = new HashMap(16);
-    private Map<String, Map<Long, String>> resultMap = new HashMap(16);
-    private Map<String, Map<String, Object>> baseEntityIdMap = FaInventoryUtils.getBaseEntityIdMap();
-    private Map<String, String> baseNameMap;
-    private Set<String> columnNames;
-    private Map<Long, Map<String, Integer>> map;
-    private Set<String> splitFields;
-
-    public FaInventoryTaskListNew() {
-        this.baseNameMap = new HashMap(this.baseEntityIdMap.size(), 1.0F);
-        this.columnNames = new HashSet(16);
-        this.map = null;
-        this.splitFields = null;
-    }
-
-    public void preOpenForm(PreOpenFormEventArgs e) {
-        LicenseCheckResult result = LicenseServiceHelper.checkByAppAndBizObj("83bfebc800001aac", "fa_inventscheme_new", Long.valueOf(RequestContext.get().getUserId()));
-        if (!result.getHasLicense()) {
-            boolean isConstellation = LicenseServiceHelper.getModeType() == 3;
-            String version = LicenseServiceHelper.getProductVersion();
-            String msg = ResManager.loadKDString("没有财务+供应链+制造分组固定资产许可,请联系管理员。", "FaInventoryTaskList_0", "fi-fa-formplugin", new Object[0]);
-            if (isConstellation) {
-                switch (version) {
-                    case "1.0":
-                    case "2.0":
-                    case "3.0":
-                        msg = ResManager.loadKDString("没有财务会计专业分组许可,请联系管理员。", "FaInventoryTaskList_1", "fi-fa-formplugin", new Object[0]);
-                    case "4.0":
-                }
-            }
-
-            e.setCancel(true);
-            e.setCancelMessage(msg);
-        } else {
-            super.preOpenForm(e);
-        }
-
-    }
-
-    public void filterContainerInit(FilterContainerInitArgs args) {
-        super.filterContainerInit(args);
-        this.setDefaultQuerySelect(args);
-    }
-
-    public void setFilter(SetFilterEvent e) {
-        Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
-        Object schemeId = customParams.get("schemeId");
-        e.getQFilters().add(new QFilter("status", "!=", "Z"));
-        if (schemeId == null) {
-            e.getQFilters().add(new QFilter("status", "!=", "A"));
-            Long userId = ContextUtil.getUserId();
-            QFilter qfInventory = new QFilter("inventperson", "=", userId);
-            qfInventory.or(new QFilter("inventorychecker.fbasedataid", "=", userId));
-            e.getQFilters().add(qfInventory);
-            this.getView().setVisible(false, new String[]{"inventoryassign"});
-            this.getView().setVisible(false, new String[]{"inventorywithdrawal"});
-            LicenseCheckResult result = LicenseServiceHelper.checkByAppAndBizObj("/OSOW2CPH91+", "fap_apphome", userId);
-            if (result != null && !result.getHasLicense()) {
-                this.getView().setVisible(false, new String[]{"inventorynotice"});
-            }
-        } else {
-            e.getQFilters().add(new QFilter("inventsscopeid.inventschemeentry", "=", schemeId));
-            this.getView().setVisible(false, new String[]{"inventorycreaterecord"});
-            this.getView().setVisible(false, new String[]{"inventorynotice"});
-            this.getView().setVisible(false, new String[]{"inventorydelete"});
-        }
-
-        ArrayList<QFilter> filters = new ArrayList(e.getQFilters());
-        String selectFields = Fa.comma(new String[]{"id", "inventschemeid", "splitfieldvalue", Fa.dot(new String[]{"inventsscopeid", "assetunit", "id"}), "status"});
-        DynamicObjectCollection inventoryTasks = QueryServiceHelper.query("fa_inventory_task", selectFields, (QFilter[])filters.toArray(filters.toArray(new QFilter[0])));
-        this.map = FaInventoryUtils.updateProgress(inventoryTasks);
-        this.splitFields = FaInventoryUtils.getSplitFields(inventoryTasks);
-        this.initbaseNameMap(this.splitFields);
-        this.setColumnVisible(this.splitFields);
-        this.setColumnName();
-    }
-
-    public void click(EventObject evt) {
-        Control c = (Control)evt.getSource();
-        String key = c.getKey();
-        if ("name".equalsIgnoreCase(key)) {
-            Object rowPk = ((IListView)this.getView()).getCurrentSelectedRowInfo().getPrimaryKeyValue();
-            this.viewInventoryRecord(rowPk);
-        }
-
-        super.click(evt);
-    }
-
-    public void billListHyperLinkClick(HyperLinkClickArgs args) {
-        if (!FaUtils.isF7(this.getView())) {
-            BillList billList = (BillList)this.getControl("BillListAp");
-            HyperLinkClickEvent hyperClick = args.getHyperLinkClickEvent();
-            if ("inventsscopeid_assetunit_name".equals(hyperClick.getFieldName())) {
-                Object rowPk = billList.getCurrentSelectedRowInfo().getPrimaryKeyValue();
-                args.setCancel(true);
-                this.viewInventoryRecord(rowPk);
-            }
-        }
-
-    }
-
-    private void viewInventoryRecord(Object rowPk) {
-        String selectFields = "inventschemeid, inventsscopeid.assetunit";
-        QFilter[] filters = new QFilter[]{new QFilter("id", "=", rowPk)};
-        DynamicObject inventTask = QueryServiceHelper.queryOne("fa_inventory_task", selectFields, filters);
-        ListShowParameter parameter = new ListShowParameter();
-        parameter.setFormId("bos_list");
-        parameter.setCaption(ResManager.loadKDString("盘点记录", "FaInventoryTaskList_2", "fi-fa-formplugin", new Object[0]));
-        parameter.setCustomParam("inventorytaskid", rowPk);
-        parameter.setCustomParam("inventschemaid", String.valueOf(inventTask.getLong("inventschemeid")));
-        parameter.setCustomParam("inventassetunitid", String.valueOf(inventTask.getLong("inventsscopeid.assetunit")));
-        Object schemeId = this.getView().getFormShowParameter().getCustomParam("schemeId");
-        parameter.setCustomParam("showAuditBar", schemeId == null);
-        parameter.setBillFormId("fa_inventory_record");
-        parameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
-        this.getView().showForm(parameter);
-    }
-
-    public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) {
-        super.beforeCreateListDataProvider(args);
-        args.setListDataProvider(new FaInventoryTaskListProvide());
-    }
-
-    public void packageData(PackageDataEvent e) {
-        if (e.getSource() instanceof ColumnDesc) {
-            ColumnDesc columnDesc = (ColumnDesc)e.getSource();
-            String columnName = columnDesc.getKey();
-            long rowId = e.getRowData().getLong("id");
-            if (this.baseNameMap.containsKey(columnName)) {
-                Map<String, Set<Long>> baseDataMap = (Map)this.idAndBaseDataMap.get(rowId);
-                if (baseDataMap.size() == 0 || null == baseDataMap.get(this.baseNameMap.get(columnName)) || ((Set)baseDataMap.get(this.baseNameMap.get(columnName))).size() == 0) {
-                    return;
-                }
-
-                Set<Long> ids = (Set)baseDataMap.get(this.baseNameMap.get(columnName));
-                List<String> names = new ArrayList(ids.size());
-                Map<Long, String> idAndNamesMap = (Map)this.resultMap.get(this.baseNameMap.get(columnName));
-                Iterator var10 = ids.iterator();
-
-                while(var10.hasNext()) {
-                    Long id = (Long)var10.next();
-                    names.add(idAndNamesMap.get(id));
-                }
-
-                e.setFormatValue(FaInventoryUtils.getAllNamesString(names));
-            }
-
-            if ("inventprogress".equals(columnName) && !this.map.isEmpty() && this.map.get(rowId) != null) {
-                e.setFormatValue(((Map)this.map.get(rowId)).get("inventRate"));
-            }
-
-            if ("auditprogress".equals(columnName) && !this.map.isEmpty() && this.map.get(rowId) != null) {
-                e.setFormatValue(((Map)this.map.get(rowId)).get("auditRate"));
-            }
-        }
-
-        super.packageData(e);
-    }
-
-    public void itemClick(ItemClickEvent evt) {
-        super.itemClick(evt);
-        String key = evt.getItemKey();
-        IListView view = (IListView)this.getView();
-        String opMsg = ResManager.loadKDString("成功", "FaInventoryTaskList_3", "fi-fa-formplugin", new Object[0]);
-        ListSelectedRowCollection selectedRows = view.getSelectedRows();
-        if (selectedRows.size() < 1 && !key.equals("tblrefresh") && !key.equals("tblclose")) {
-            this.getView().showTipNotification(ResManager.loadKDString("请选择一行操作。", "FaInventoryTaskList_4", "fi-fa-formplugin", new Object[0]));
-        } else {
-            int rowNum;
-            Iterator var8;
-            ListSelectedRow selectedRow;
-            DynamicObject inventoryTask;
-            String assetUnitName;
-            if ("inventorynotice".equals(key)) {
-                rowNum = this.isSchemeClose(selectedRows);
-                if (rowNum != -1) {
-                    this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能进行盘点通知。", "FaInventoryTaskList_5", "fi-fa-formplugin", new Object[0]), rowNum));
-                } else {
-                    List<Long> inventoryTaskPks = new ArrayList();
-                    var8 = selectedRows.iterator();
-
-                    while(var8.hasNext()) {
-                        selectedRow = (ListSelectedRow)var8.next();
-                        inventoryTask = BusinessDataServiceHelper.loadSingle(String.valueOf(selectedRow), "fa_inventory_task");
-                        assetUnitName = (String)inventoryTask.get("status");
-                        if (!BillStatus.C.toString().equals(assetUnitName)) {
-                            throw new KDBizException(ResManager.loadKDString("请先生成盘点记录。", "FaInventoryTaskList_6", "fi-fa-formplugin", new Object[0]));
-                        }
-
-                        inventoryTaskPks.add((Long)selectedRow.getPrimaryKeyValue());
-                    }
-
-                    try {
-                        this.getPageCache().put("inventoryTaskPks", JSONUtils.toString(inventoryTaskPks));
-                    } catch (IOException var31) {
-                        throw new KDBizException(ResManager.loadKDString("盘点通知有误", "FaInventoryTaskList_7", "fi-fa-formplugin", new Object[0]));
-                    }
-
-                    FormShowParameter para = new FormShowParameter();
-                    para.setFormId("fa_countingreport_message");
-                    para.getOpenStyle().setShowType(ShowType.Modal);
-                    para.setCloseCallBack(new CloseCallBack(this, "getmessage"));
-                    this.getView().showForm(para);
-                }
-            } else {
-                StringBuilder notRightStatus;
-                String unitName;
-                long assetUnitId;
-                if ("inventoryassign".equals(key)) {
-                    rowNum = this.isSchemeClose(selectedRows);
-                    if (rowNum != -1) {
-                        this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能下达任务。", "FaInventoryTaskList_8", "fi-fa-formplugin", new Object[0]), rowNum));
-                    } else {
-                        notRightStatus = new StringBuilder();
-                        var8 = selectedRows.iterator();
-
-                        while(var8.hasNext()) {
-                            selectedRow = (ListSelectedRow)var8.next();
-                            inventoryTask = BusinessDataServiceHelper.loadSingle(String.valueOf(selectedRow), "fa_inventory_task");
-                            assetUnitName = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getString("name");
-                            assetUnitId = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getLong("id");
-                            unitName = inventoryTask.getString("status");
-                            if (!BillStatus.A.toString().equals(unitName)) {
-                                notRightStatus.append(assetUnitName).append(' ');
-                                FaOperateLogUtil.addLog("fa_inventory_task", assetUnitId, ResManager.loadKDString("下达任务", "FaInventoryTaskList_9", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s下达失败,任务状态不是未下达。", "FaInventoryTaskList_10", "fi-fa-formplugin", new Object[0]), assetUnitName));
-                            } else {
-                                inventoryTask.set("status", BillStatus.B.toString());
-                                SaveServiceHelper.save(inventoryTask.getDataEntityType(), new DynamicObject[]{inventoryTask});
-                                FaOperateLogUtil.addLog("fa_inventory_task", assetUnitId, ResManager.loadKDString("下达任务", "FaInventoryTaskList_9", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s下达任务成功。", "FaInventoryTaskList_11", "fi-fa-formplugin", new Object[0]), assetUnitName));
-                            }
-                        }
-
-                        if (notRightStatus.length() > 0) {
-                            opMsg = String.format(ResManager.loadKDString("%s下达失败,任务状态不是未下达。", "FaInventoryTaskList_10", "fi-fa-formplugin", new Object[0]), notRightStatus);
-                            this.getView().showTipNotification(opMsg);
-                        } else {
-                            opMsg = ResManager.loadKDString("任务下达成功。", "FaInventoryTaskList_12", "fi-fa-formplugin", new Object[0]);
-                            this.getView().showSuccessNotification(opMsg);
-                        }
-
-                        this.getView().invokeOperation("refresh");
-                    }
-                } else if ("inventorywithdrawal".equals(key)) {
-                    rowNum = this.isSchemeClose(selectedRows);
-                    if (rowNum != -1) {
-                        this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能撤销任务。", "FaInventoryTaskList_13", "fi-fa-formplugin", new Object[0]), rowNum));
-                    } else {
-                        notRightStatus = new StringBuilder();
-                        var8 = selectedRows.iterator();
-
-                        while(var8.hasNext()) {
-                            selectedRow = (ListSelectedRow)var8.next();
-                            inventoryTask = BusinessDataServiceHelper.loadSingle(String.valueOf(selectedRow), "fa_inventory_task");
-                            assetUnitName = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getString("name");
-                            assetUnitId = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getLong("id");
-                            unitName = inventoryTask.getString("status");
-                            if (!BillStatus.B.toString().equals(unitName)) {
-                                notRightStatus.append(assetUnitName).append(' ');
-                                FaOperateLogUtil.addLog("fa_inventory_task", assetUnitId, ResManager.loadKDString("撤销任务", "FaInventoryTaskList_14", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s撤销失败,任务状态不是已下达。", "FaInventoryTaskList_15", "fi-fa-formplugin", new Object[0]), assetUnitName));
-                            } else {
-                                inventoryTask.set("status", "A");
-                                inventoryTask.set("inventorychecker", (Object)null);
-                                SaveServiceHelper.save(inventoryTask.getDataEntityType(), new DynamicObject[]{inventoryTask});
-                                FaOperateLogUtil.addLog("fa_inventory_task", assetUnitId, ResManager.loadKDString("撤销任务", "FaInventoryTaskList_14", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s撤销任务成功。", "FaInventoryTaskList_16", "fi-fa-formplugin", new Object[0]), assetUnitName));
-                            }
-                        }
-
-                        if (notRightStatus.length() > 0) {
-                            opMsg = String.format(ResManager.loadKDString("%s撤销失败,任务状态不是已下达。", "FaInventoryTaskList_15", "fi-fa-formplugin", new Object[0]), notRightStatus);
-                            this.getView().showTipNotification(opMsg);
-                        } else {
-                            opMsg = ResManager.loadKDString("任务撤销成功。", "FaInventoryTaskList_17", "fi-fa-formplugin", new Object[0]);
-                            this.getView().showSuccessNotification(opMsg);
-                        }
-
-                        this.getView().invokeOperation("refresh");
-                    }
-                } else if (!"inventorycreaterecord".equals(key)) {
-                    if ("inventorydelete".equals(key)) {
-                        rowNum = this.isSchemeClose(selectedRows);
-                        if (rowNum != -1) {
-                            this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能清除盘点记录。", "FaInventoryTaskList_25", "fi-fa-formplugin", new Object[0]), rowNum));
-                        } else {
-                            this.getView().showConfirm(ResManager.loadKDString("此操作将清除任务下所有的盘点记录,是否继续。", "FaInventoryTaskList_26", "fi-fa-formplugin", new Object[0]), "", MessageBoxOptions.YesNo, ConfirmTypes.Delete, new ConfirmCallBackListener("inventorydelete", this));
-                        }
-                    } else {
-                        if ("assigninventory".equals(key)) {
-                            rowNum = this.isSchemeClose(selectedRows);
-                            if (rowNum != -1) {
-                                this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能指定盘点人。", "FaInventoryTaskList_27", "fi-fa-formplugin", new Object[0]), rowNum));
-                                return;
-                            }
-
-                            this.assignInventory();
-                        }
-
-                    }
-                } else {
-                    rowNum = this.isSchemeClose(selectedRows);
-                    if (rowNum != -1) {
-                        this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能生成盘点记录。", "FaInventoryTaskList_18", "fi-fa-formplugin", new Object[0]), rowNum));
-                    } else {
-                        notRightStatus = new StringBuilder();
-                        var8 = selectedRows.iterator();
-
-                        while(true) {
-                            while(var8.hasNext()) {
-                                selectedRow = (ListSelectedRow)var8.next();
-                                inventoryTask = BusinessDataServiceHelper.loadSingle(selectedRow.getPrimaryKeyValue(), "fa_inventory_task");
-                                DynamicObject inventorySope = inventoryTask.getDynamicObject("inventsscopeid");
-                                if (inventorySope == null) {
-                                    return;
-                                }
-
-                                String status = inventoryTask.getString("status");
-                                assetUnitId = (long) inventorySope.get("assetunit_id");
-                                unitName = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getString("name");
-                                if (!BillStatus.B.toString().equals(status)) {
-                                    notRightStatus.append(unitName).append(' ');
-                                    FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetUnitId, ResManager.loadKDString("生成盘点记录", "FaInventoryTaskList_19", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s生成失败,任务状态不是已下达。", "FaInventoryTaskList_20", "fi-fa-formplugin", new Object[0]), unitName));
-                                } else {
-                                    MainEntityType inventoryRecordType = EntityMetadataCache.getDataEntityType("fa_inventory_record");
-                                    Date finaccountdate = inventorySope.getDate("finaccountdate");
-                                    QFilter timeLimitCond = new QFilter("realaccountdate", "<=", finaccountdate);
-                                    QFilter billstatusCond = new QFilter("billstatus", "=", BillStatus.C.toString());
-                                    QFilter assetunitCond = new QFilter("assetunit_id", "=", assetUnitId);
-                                    QFilter bizstatusDeleteCond = new QFilter("bizstatus", "!=", BizStatusEnum.DELETE);
-                                    QFilter notIsBackAndOther = new QFilter("isbak", "=", false);
-                                    String splitfieldvalue = inventoryTask.getString("splitfieldvalue");
-                                    if (!StringUtils.isBlank(splitfieldvalue)) {
-                                        Map<String, Object> maps = (Map)JSON.parse(splitfieldvalue);
-                                        Iterator<Map.Entry<String, Object>> it = maps.entrySet().iterator();
-
-                                        while(it.hasNext()) {
-                                            Map.Entry<String, Object> entry = (Map.Entry)it.next();
-                                            String keySet = (String)entry.getKey();
-                                            Object valueSet = entry.getValue();
-                                            if (valueSet != null) {
-                                                List<Long> idList = null;
-                                                String assetcatIds = (String)valueSet;
-                                                if (!StringUtils.isBlank(assetcatIds)) {
-                                                    Set<Long> idSet = (Set)Arrays.asList(assetcatIds.split(",")).stream().map((s) -> {
-                                                        return Long.parseLong(StringUtils.isBlank(s) ? "0" : s.trim());
-                                                    }).collect(Collectors.toSet());
-                                                    idList = new ArrayList(idSet);
-                                                    if (idList.size() == 1 && ((Long)idList.get(0)).equals(0L)) {
-                                                        idList = null;
-                                                    }
-                                                }
-
-                                                QFilter assetIds = null;
-                                                if (idList != null) {
-                                                    if ("assetcat".equals(keySet)) {
-                                                        assetIds = new QFilter("assetcat_id", "in", FaAssetTypeUtils.getAllSubAssetTypes(idList));
-                                                    } else {
-                                                        assetIds = new QFilter(keySet + "_id", "in", idList);
-                                                    }
-                                                }
-
-                                                if (assetIds != null) {
-                                                    notIsBackAndOther.and(assetIds);
-                                                }
-                                            }
-                                        }
-                                    }
-
-                                    String sicOnlyId = Fa.join(",", new String[]{"id"});
-                                    String sic = Fa.join(",", new String[]{"id,number,barcode,assetname,model,assetamount,unit,headuseperson,nckd_storeplace"});
-                                    DynamicObjectCollection realCards = QueryServiceHelper.query("fa_card_real", sicOnlyId, new QFilter[]{assetunitCond, timeLimitCond, billstatusCond, bizstatusDeleteCond, notIsBackAndOther});
-                                    Set<Long> cardIds = new HashSet();
-                                    Iterator var43 = realCards.iterator();
-
-                                    while(var43.hasNext()) {
-                                        DynamicObject realCard = (DynamicObject)var43.next();
-                                        cardIds.add(realCard.getLong("id"));
-                                    }
-
-                                    int i = 0;
-                                    Set<Long> cardId = new HashSet();
-
-                                    try {
-                                        Iterator<Long> ite = cardIds.iterator();
-
-                                        while(ite.hasNext()) {
-                                            if (i == DATA_SIZE) {
-                                                this.createInventoryRedords(inventoryRecordType, inventoryTask, sic, cardId);
-                                                cardId = new HashSet();
-                                                i = 0;
-                                            } else {
-                                                cardId.add(ite.next());
-                                                ++i;
-                                            }
-                                        }
-
-                                        if (!cardId.isEmpty()) {
-                                            this.createInventoryRedords(inventoryRecordType, inventoryTask, sic, cardId);
-                                        }
-
-                                        inventoryTask.set("status", "C");
-                                        SaveServiceHelper.save(inventoryTask.getDataEntityType(), new DynamicObject[]{inventoryTask});
-                                        FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetUnitId, ResManager.loadKDString("生成盘点记录", "FaInventoryTaskList_19", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s生成盘点记录成功。", "FaInventoryTaskList_21", "fi-fa-formplugin", new Object[0]), unitName));
-                                    } catch (Exception var32) {
-                                        FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetUnitId, ResManager.loadKDString("生成盘点记录", "FaInventoryTaskList_19", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%1$s生成盘点记录事务失败,联系管理员查看日志:%2$s。", "FaInventoryTaskList_22", "fi-fa-formplugin", new Object[0]), unitName, var32.getMessage()));
-                                        throw new KDBizException(String.format(ResManager.loadKDString("%1$s生成盘点记录事务失败,联系管理员查看日志:%2$s。", "FaInventoryTaskList_22", "fi-fa-formplugin", new Object[0]), unitName, var32.getMessage()));
-                                    }
-                                }
-                            }
-
-                            if (notRightStatus.length() > 0) {
-                                int unSuccess = notRightStatus.toString().split(" ").length;
-                                int success = selectedRows.size() - unSuccess;
-                                this.getView().showTipNotification(String.format(ResManager.loadKDString("成功%1$d条,失败%2$d条,其中[%3$s]生成失败,任务状态不是已下达。", "FaInventoryTaskList_23", "fi-fa-formplugin", new Object[0]), success, unSuccess, notRightStatus));
-                            } else {
-                                this.getView().showSuccessNotification(ResManager.loadKDString("生成盘点记录成功。", "FaInventoryTaskList_24", "fi-fa-formplugin", new Object[0]));
-                            }
-
-                            this.getView().invokeOperation("refresh");
-                            return;
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    private int isSchemeClose(ListSelectedRowCollection selectedRows) {
-        DynamicObject[] selectDynamicObject = this.getSelectDynamicObjcet();
-        DynamicObject[] var3 = selectDynamicObject;
-        int var4 = selectDynamicObject.length;
-
-        for(int var5 = 0; var5 < var4; ++var5) {
-            DynamicObject selectDO = var3[var5];
-            if ("C".equals(selectDO.getString("inventschemeid.billstate"))) {
-                Iterator var7 = selectedRows.iterator();
-
-                while(var7.hasNext()) {
-                    ListSelectedRow selectRow = (ListSelectedRow)var7.next();
-                    if (selectDO.getLong("id") == (Long)selectRow.getPrimaryKeyValue()) {
-                        return selectRow.getRowKey() + 1;
-                    }
-                }
-            }
-        }
-
-        return -1;
-    }
-
-    private void assignInventory() {
-        DynamicObject[] selectDys = this.getSelectDynamicObjcet();
-        if (selectDys != null) {
-            long userId = ContextUtil.getUserId();
-            DynamicObject[] var4 = selectDys;
-            int var5 = selectDys.length;
-
-            for(int var6 = 0; var6 < var5; ++var6) {
-                DynamicObject dy = var4[var6];
-                if (userId != dy.getLong("inventperson_id") && userId != dy.getDynamicObject("inventschemeid").getDynamicObject("creator").getLong("id")) {
-                    this.getView().showTipNotification(ResManager.loadKDString("只允许盘点负责人和方案创建人指定盘点人。", "FaInventoryTaskList_28", "fi-fa-formplugin", new Object[0]));
-                    return;
-                }
-            }
-
-            this.showUserForm();
-        }
-    }
-
-    private void showUserForm() {
-        ListShowParameter param = ShowFormHelper.createShowListForm("bos_user", true);
-        param.setCloseCallBack(new CloseCallBack(this, "assigninventory"));
-        param.setCustomParam("skipCheckSelectRows", true);
-        DynamicObject[] selectDys = this.getSelectDynamicObjcet();
-        List<Long> selectids = new ArrayList(10);
-        Arrays.asList(selectDys).stream().forEach((v) -> {
-            List<Long> collect = (List)v.getDynamicObjectCollection("inventorychecker").stream().map((t) -> {
-                return t.getLong("fbasedataid_id");
-            }).collect(Collectors.toList());
-            selectids.addAll(collect);
-        });
-        param.setSelectedRows(selectids.toArray());
-        this.getView().showForm(param);
-    }
-
-    private void createInventoryRedords(MainEntityType inventoryRecordType, DynamicObject inventoryTask, String sic, Set<Long> cardId) {
-        TXHandle h = TX.requiresNew();
-        Throwable var6 = null;
-
-        try {
-            try {
-                DynamicObjectCollection realCards = QueryServiceHelper.query("fa_card_real", sic, new QFilter[]{new QFilter("id", "in", cardId)});
-                DynamicObject inventoryRecordEntity = (DynamicObject)inventoryRecordType.createInstance();
-                List<DynamicObject> inventoryRecordList = new ArrayList();
-                Iterator var10 = realCards.iterator();
-
-                while(var10.hasNext()) {
-                    DynamicObject realCard = (DynamicObject)var10.next();
-                    DynamicObject fin = ChangeDataUtils.queryFinCard(realCard.getLong("id"));
-                    DynamicObject inventoryRecordInstance = (DynamicObject)(new CloneUtils(false, true)).clone(inventoryRecordType, inventoryRecordEntity);
-                    inventoryRecordInstance.set("realCard_id", realCard.get("id"));
-                    inventoryRecordInstance.set("number", realCard.getString("number"));
-                    inventoryRecordInstance.set("barcode", realCard.getString("barcode"));
-                    inventoryRecordInstance.set("name", realCard.getString("assetname"));
-                    inventoryRecordInstance.set("model", realCard.getString("model"));
-                    inventoryRecordInstance.set("bookquantity", realCard.getBigDecimal("assetamount"));
-                    inventoryRecordInstance.set("unit_id", realCard.get("unit"));
-                    inventoryRecordInstance.set("inventoryquantity", BigDecimal.ZERO);
-                    inventoryRecordInstance.set("difference", BigDecimal.ZERO);
-                    inventoryRecordInstance.set("inventorystate", BillStatus.B.toString());
-                    inventoryRecordInstance.set("reason", "1 ");
-                    inventoryRecordInstance.set("inventorytask_id", inventoryTask.getPkValue());
-                    inventoryRecordInstance.set("inventschemeentry_id", inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("inventschemeentry").getPkValue());
-                    inventoryRecordInstance.set("billstatus", "C");
-                    inventoryRecordInstance.set("billstate", "A");
-                    inventoryRecordInstance.set("nckd_storeplace", realCard.getString("nckd_storeplace"));
-                    inventoryRecordInstance.set("nckd_fincard_id", fin != null ? fin.getLong("id") : null);
-                    inventoryRecordList.add(inventoryRecordInstance);
-                }
-
-                if (inventoryRecordList.size() > 0) {
-                    SaveServiceHelper.save(inventoryRecordType, inventoryRecordList.toArray(new DynamicObject[0]));
-                }
-            } catch (Throwable var21) {
-                h.markRollback();
-                throw var21;
-            }
-        } catch (Throwable var22) {
-            var6 = var22;
-            throw var22;
-        } finally {
-            if (h != null) {
-                if (var6 != null) {
-                    try {
-                        h.close();
-                    } catch (Throwable var20) {
-                        var6.addSuppressed(var20);
-                    }
-                } else {
-                    h.close();
-                }
-            }
-
-        }
-
-    }
-
-    public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
-        super.confirmCallBack(messageBoxClosedEvent);
-        IListView view = (IListView)this.getView();
-        ListSelectedRowCollection selectedRows = view.getSelectedRows();
-        String callBackId = messageBoxClosedEvent.getCallBackId();
-        if ("inventorydelete".equals(callBackId) && MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-            StringBuilder notRightStatus = new StringBuilder();
-            StringBuilder notBillStatus = new StringBuilder();
-            Iterator var7 = selectedRows.iterator();
-
-            while(var7.hasNext()) {
-                ListSelectedRow selectedRow = (ListSelectedRow)var7.next();
-                DynamicObject inventoryTask = BusinessDataServiceHelper.loadSingle(String.valueOf(selectedRow), "fa_inventory_task");
-                DynamicObject inventorySope = inventoryTask.getDynamicObject("inventsscopeid");
-                if (inventorySope == null) {
-                    return;
-                }
-
-                Object assetunitId = inventorySope.get("assetunit_id");
-                String assetUnitName = inventorySope.getDynamicObject("assetunit").getString("name");
-                String status = inventoryTask.getString("status");
-                if (!BillStatus.C.toString().equals(status)) {
-                    notRightStatus.append(assetUnitName).append(' ');
-                    FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetunitId, ResManager.loadKDString("清除盘点记录", "FaInventoryTaskList_29", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s删除盘点记录失败,任务状态不是已生成。", "FaInventoryTaskList_30", "fi-fa-formplugin", new Object[0]), assetUnitName));
-                } else {
-                    QFilter qfBillStatus = new QFilter("billstate", "=", "C");
-                    QFilter qfInventoryTask = new QFilter("inventorytask", "=", inventoryTask.getPkValue());
-                    boolean exists = QueryServiceHelper.exists("fa_inventory_record", new QFilter[]{qfInventoryTask, qfBillStatus});
-                    if (exists) {
-                        notBillStatus.append(assetUnitName).append(' ');
-                        FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetunitId, ResManager.loadKDString("清除盘点记录", "FaInventoryTaskList_29", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s删除盘点记录失败,存在已审核的盘点记录。", "FaInventoryTaskList_31", "fi-fa-formplugin", new Object[0]), assetUnitName));
-                    } else {
-                        Object inventoryTaskPk = selectedRow.getPrimaryKeyValue();
-                        QFilter inventoryTaskPkCond = new QFilter("inventorytask_id", "=", inventoryTaskPk);
-                        DeleteServiceHelper.delete("fa_inventory_record", new QFilter[]{inventoryTaskPkCond});
-                        QFilter qInventoryTaskPk = new QFilter("inventorytask_id", "=", inventoryTaskPk);
-                        DeleteServiceHelper.delete("fa_inventory_entrust", new QFilter[]{qInventoryTaskPk});
-                        inventoryTask.set("status", BillStatus.B.toString());
-                        SaveServiceHelper.save(inventoryTask.getDataEntityType(), new DynamicObject[]{inventoryTask});
-                        FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetunitId, ResManager.loadKDString("清除盘点记录", "FaInventoryTaskList_29", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s删除盘点记录成功。", "FaInventoryTaskList_32", "fi-fa-formplugin", new Object[0]), assetUnitName));
-                    }
-                }
-            }
-
-            if (notBillStatus.length() > 0) {
-                this.getView().showTipNotification(String.format(ResManager.loadKDString("%s删除盘点记录失败,存在已审核的盘点记录。", "FaInventoryTaskList_31", "fi-fa-formplugin", new Object[0]), notRightStatus));
-            } else if (notRightStatus.length() > 0) {
-                this.getView().showTipNotification(String.format(ResManager.loadKDString("%s删除盘点记录失败,任务状态不是已生成。", "FaInventoryTaskList_33", "fi-fa-formplugin", new Object[0]), notRightStatus));
-            } else {
-                this.getView().showSuccessNotification(String.format(ResManager.loadKDString("%s删除盘点记录成功。", "FaInventoryTaskList_32", "fi-fa-formplugin", new Object[0]), ""));
-            }
-
-            this.getView().invokeOperation("refresh");
-        }
-
-    }
-
-    public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
-        super.closedCallBack(closedCallBackEvent);
-        Object returnData = closedCallBackEvent.getReturnData();
-        if (returnData != null) {
-            if (!"assigninventory".equals(closedCallBackEvent.getActionId())) {
-                if ("getmessage".equals(closedCallBackEvent.getActionId())) {
-                    IAppCache cacheDepreCheck = AppCache.get("fa");
-                    String title = (String)cacheDepreCheck.get("countingreport_message_title", String.class);
-                    this.sendMessage(returnData.toString(), title);
-                }
-
-            } else {
-                DynamicObjectCollection proto = this.buildMulBasedata((ListSelectedRowCollection)returnData);
-                DynamicObject[] selectDys = this.getSelectDynamicObjcet();
-                CloneUtils c = new CloneUtils(true, true);
-                DynamicObject[] var7 = selectDys;
-                int var8 = selectDys.length;
-
-                for(int var9 = 0; var9 < var8; ++var9) {
-                    DynamicObject dy = var7[var9];
-                    List<DynamicObject> collection = new ArrayList(10);
-                    Iterator var11 = proto.iterator();
-
-                    while(var11.hasNext()) {
-                        DynamicObject protoDy = (DynamicObject)var11.next();
-                        collection.add((DynamicObject)c.clone(((DynamicObject)proto.get(0)).getDataEntityType(), protoDy));
-                    }
-
-                    dy.set("inventorychecker", collection);
-                }
-
-                SaveServiceHelper.save(selectDys);
-                this.getView().updateView();
-            }
-        }
-    }
-
-    private DynamicObjectCollection buildMulBasedata(ListSelectedRowCollection selectedRows) {
-        DynamicObjectCollection collection = new DynamicObjectCollection();
-        MainEntityType mainInventory = EntityMetadataCache.getDataEntityType("fa_inventory_task");
-        MulBasedataProp mulBasedataProp = (MulBasedataProp)mainInventory.findProperty("inventorychecker");
-        DynamicObjectType dynamicCollectionItemPropertyType = mulBasedataProp.getDynamicCollectionItemPropertyType();
-        Iterator var6 = selectedRows.iterator();
-
-        while(var6.hasNext()) {
-            ListSelectedRow row = (ListSelectedRow)var6.next();
-            DynamicObject dy = new DynamicObject(dynamicCollectionItemPropertyType);
-            dy.set("fbasedataid", row.getPrimaryKeyValue());
-            dy.set("fbasedataid_id", row.getPrimaryKeyValue());
-            collection.add(dy);
-        }
-
-        return collection;
-    }
-
-    public static void inventoryAssign(Object[] pkArray) {
-        QFilter filtersPk = new QFilter("id", "in", pkArray);
-        DynamicObject[] inventoryTasks = BusinessDataServiceHelper.load("fa_inventory_task", "status", new QFilter[]{filtersPk});
-        List<DynamicObject> inventoryTasksNeedChange = new ArrayList(inventoryTasks.length);
-        DynamicObject[] var4 = inventoryTasks;
-        int var5 = inventoryTasks.length;
-
-        for(int var6 = 0; var6 < var5; ++var6) {
-            DynamicObject inventoryTask = var4[var6];
-            inventoryTask.set("status", BillStatus.B.toString());
-            inventoryTasksNeedChange.add(inventoryTask);
-        }
-
-        if (inventoryTasksNeedChange.size() > 0) {
-            SaveServiceHelper.save(((DynamicObject)inventoryTasksNeedChange.get(0)).getDataEntityType(), inventoryTasksNeedChange.toArray());
-        }
-
-    }
-
-    private void sendMessage(String content, String title) {
-        MessageInfo message = new MessageInfo();
-        message.setType("message");
-        if (StringUtils.isNotEmpty(title)) {
-            message.setTitle(title);
-        } else {
-            message.setTitle(ResManager.loadKDString("人人资产-盘点", "FaInventoryTaskList_34", "fi-fa-formplugin", new Object[0]));
-        }
-
-        List<Long> inventoryTaskPks = (List)SerializationUtils.fromJsonString(String.valueOf(this.getPageCache().get("inventoryTaskPks")), List.class);
-        Iterator var5 = inventoryTaskPks.iterator();
-
-        while(var5.hasNext()) {
-            Long inventoryTaskPk = (Long)var5.next();
-            List<Long> assetInventors = this.getAssetInventors(inventoryTaskPk);
-            message.setUserIds(assetInventors);
-            message.setSenderId(ContextUtil.getUserId());
-            message.setSendTime(new Date(System.currentTimeMillis()));
-            message.setEntityNumber("fa_inventory_task");
-            message.setBizDataId(inventoryTaskPk);
-            message.setTag(ResManager.loadKDString("人人资产", "FaInventoryTaskList_35", "fi-fa-formplugin", new Object[0]));
-            String clientUrl = UrlService.getDomainContextUrl();
-            StringBuilder urlWithEncodedParams = new StringBuilder(clientUrl);
-            if (!clientUrl.trim().endsWith("/")) {
-                urlWithEncodedParams.append("/");
-            }
-
-            String strMobContentUrl = "%sintegration/yzjShareOpen.do?mb_formId=fa_mobile_inventpage&pkId=%s&device=mob&accountId=%s";
-            message.setMobContentUrl(String.format(strMobContentUrl, urlWithEncodedParams.toString(), inventoryTaskPk, RequestContext.get().getAccountId()));
-            log.info("FaInventoryTaskList-message-MobContentUrl-is " + message.getMobContentUrl());
-            String strContentUrl = "%sindex.html?formId=fa_inventory_task&pkId=%s";
-            message.setContentUrl(String.format(strContentUrl, urlWithEncodedParams.toString(), inventoryTaskPk));
-            log.info("FaInventoryTaskList-message-ContentUrl-is " + message.getContentUrl());
-            message.setContent(content);
-            log.info("FaInventoryTaskList-message-Content-is " + message.getContent());
-            message.setPubaccNumber("systempubacc");
-            MessageCenterServiceHelper.sendMessage(message);
-            this.getView().showMessage(ResManager.loadKDString("发送普通消息给“系统级消息助手”成功。", "FaInventoryTaskList_36", "fi-fa-formplugin", new Object[0]));
-        }
-
-    }
-
-    private List<Long> getAssetInventors(Long inventoryTaskPk) {
-        Set<Long> assetInventors = new HashSet();
-        String sic = Fa.join(",", new String[]{"realcard.headuseperson.id"});
-        QFilter filters1 = new QFilter("inventorytask", "=", inventoryTaskPk);
-        filters1.and("inventorystate", "=", BillStatus.B);
-        DataSet dataSet = QueryServiceHelper.queryDataSet(FaInventoryTaskListNew.class.getName(), "fa_inventory_record", sic, new QFilter[]{filters1}, (String)null);
-        Iterator var6 = dataSet.iterator();
-
-        while(var6.hasNext()) {
-            Row row = (Row)var6.next();
-            assetInventors.add(row.getLong("realcard.headuseperson.id"));
-        }
-
-        return new ArrayList(assetInventors);
-    }
-
-    public void beforeBindData(EventObject e) {
-        super.beforeBindData(e);
-    }
-
-    private void setDefaultQuerySelect(FilterContainerInitArgs filtercontainerinitargs) {
-        List<FilterColumn> listFilterColumns = filtercontainerinitargs.getFilterContainerInitEvent().getCommonFilterColumns();
-        Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
-        Object schemeId = customParams.get("schemeId");
-        Long userId = ContextUtil.getUserId();
-        List<ComboItem> comboItemsStatus = new ArrayList();
-        ComboItem a = new ComboItem(new LocaleString(ResManager.loadKDString("未下达", "FaInventoryTaskList_37", "fi-fa-formplugin", new Object[0])), BillStatus.A.toString());
-        ComboItem b = new ComboItem(new LocaleString(ResManager.loadKDString("已下达", "FaInventoryTaskList_38", "fi-fa-formplugin", new Object[0])), BillStatus.B.toString());
-        ComboItem c = new ComboItem(new LocaleString(ResManager.loadKDString("已生成", "FaInventoryTaskList_39", "fi-fa-formplugin", new Object[0])), "C");
-        if (schemeId != null) {
-            this.getPageCache().put("schemeIds", SerializationUtils.serializeToBase64(schemeId));
-            ListIterator<FilterColumn> deleteListFilterColumns = listFilterColumns.listIterator();
-
-            while(deleteListFilterColumns.hasNext()) {
-                String fieldName = ((FilterColumn)deleteListFilterColumns.next()).getFieldName();
-                if ("inventsscopeid.inventschemeentry.name".equals(fieldName)) {
-                    deleteListFilterColumns.remove();
-                }
-            }
-
-        } else {
-            Iterator var29 = listFilterColumns.iterator();
-
-            while(true) {
-                while(var29.hasNext()) {
-                    FilterColumn listFilter = (FilterColumn)var29.next();
-                    CommonFilterColumn commFilter = (CommonFilterColumn)listFilter;
-                    String fieldName = commFilter.getFieldName();
-                    if ("inventsscopeid.inventschemeentry.name".equals(fieldName)) {
-                        Set<ComboItem> comboItemsTrys = new HashSet();
-                        QFilter filtersUserid = new QFilter("inventperson", "=", userId);
-                        filtersUserid.or(new QFilter("inventorychecker.fbasedataid", "=", userId));
-                        QFilter filterStatus = new QFilter("status", "!=", "A");
-                        QFilter filterStatusZ = new QFilter("status", "!=", "Z");
-                        DynamicObjectCollection invenTasks = QueryServiceHelper.query("fa_inventory_task", "inventsscopeid", new QFilter[]{filtersUserid, filterStatus, filterStatusZ});
-                        Set<Long> scopeIds = (Set)invenTasks.stream().map((s) -> {
-                            return s.getLong("inventsscopeid");
-                        }).collect(Collectors.toSet());
-                        QFilter scopeIdsQ = new QFilter("id", "in", scopeIds);
-                        DynamicObjectCollection invenschemeetry = QueryServiceHelper.query("fa_inventory_sope", "inventschemeentry", new QFilter[]{scopeIdsQ}, "createtime desc");
-                        Set<Long> schemeIds = (Set)invenschemeetry.stream().map((s) -> {
-                            return s.getLong("inventschemeentry");
-                        }).collect(Collectors.toSet());
-                        this.getPageCache().put("schemeIds", SerializationUtils.serializeToBase64(schemeIds));
-                        QFilter schemeIdsQ = new QFilter("id", "in", schemeIds);
-                        DynamicObjectCollection inventschemes = QueryServiceHelper.query("fa_inventscheme_new", "id,name,entryentity.splitfieldentity.splitfield splitfield", new QFilter[]{schemeIdsQ}, "createtime desc");
-                        Iterator var25 = inventschemes.iterator();
-
-                        while(var25.hasNext()) {
-                            DynamicObject inventscheme = (DynamicObject)var25.next();
-                            ComboItem item = new ComboItem(new LocaleString(inventscheme.getString("name")), inventscheme.getString("id"));
-                            comboItemsTrys.add(item);
-                        }
-
-                        if (!CollectionUtils.isEmpty(inventschemes)) {
-                            commFilter.setDefaultValue(((DynamicObject)inventschemes.get(0)).getString("id"));
-                        }
-
-                        List<ComboItem> allInventoryName = new ArrayList(comboItemsTrys);
-                        commFilter.setComboItems(allInventoryName);
-                        commFilter.setMustInput(true);
-                    } else if ("status".equals(fieldName)) {
-                        comboItemsStatus.add(a);
-                        comboItemsStatus.add(b);
-                        comboItemsStatus.add(c);
-                        commFilter.setComboItems(comboItemsStatus);
-                    }
-                }
-
-                return;
-            }
-        }
-    }
-
-    private DynamicObject[] getSelectDynamicObjcet() {
-        QFilter qfIds = new QFilter("id", "in", this.getSelectedRows().getPrimaryKeyValues());
-        return BusinessDataServiceHelper.load("fa_inventory_task", "inventorychecker,inventperson,inventschemeid", new QFilter[]{qfIds});
-    }
-
-    private void initbaseNameMap(Set<String> splitfields) {
-        int k = 0;
-        Iterator var3 = splitfields.iterator();
-
-        while(var3.hasNext()) {
-            String splitfield = (String)var3.next();
-            String columnName = "entrytext" + k++;
-            this.baseNameMap.put(columnName, splitfield);
-        }
-
-    }
-
-    private void setColumnVisible(Set<String> splitfields) {
-        Iterator var2 = splitfields.iterator();
-
-        while(var2.hasNext()) {
-            String splitfield = (String)var2.next();
-            Iterator var4 = this.baseNameMap.entrySet().iterator();
-
-            while(var4.hasNext()) {
-                Map.Entry<String, String> entry = (Map.Entry)var4.next();
-                if (splitfield.equals(entry.getValue())) {
-                    this.columnNames.add(entry.getKey());
-                }
-            }
-        }
-
-        BillList list = (BillList)this.getControl("billlistap");
-        FaInventoryUtils.setColumnVisible(list.getView(), this.columnNames);
-    }
-
-    private void setColumnName() {
-        BillList billList = (BillList)this.getView().getControl("billlistap");
-        BeforeCreateListColumnsArgs args = billList.getBeforeCreateListColumnsArgs();
-        if (null != args) {
-            Iterator var3 = this.columnNames.iterator();
-
-            while(var3.hasNext()) {
-                String columnName = (String)var3.next();
-                String entityId = (String)this.baseNameMap.get(columnName);
-                Map<String, Object> map = (Map)this.baseEntityIdMap.get(entityId);
-                IListColumn listColumn = billList.getBeforeCreateListColumnsArgs().getListColumn(columnName);
-                if (null != listColumn && null != map.get("displayName")) {
-                    listColumn.setCaption((LocaleString)map.get("displayName"));
-                }
-            }
-
-        }
-    }
-
-    private class FaInventoryTaskListProvide extends ListDataProvider {
-        private FaInventoryTaskListProvide() {
-        }
-
-        public DynamicObjectCollection getData(int start, int limit) {
-            DynamicObjectCollection rows = super.getData(start, limit);
-            Map<String, Set<Long>> queryMap = new HashMap(FaInventoryTaskListNew.this.baseEntityIdMap.size(), 1.0F);
-            Iterator var5 = FaInventoryTaskListNew.this.baseEntityIdMap.keySet().iterator();
-
-            while(var5.hasNext()) {
-                String s = (String)var5.next();
-                queryMap.put(s, new HashSet());
-            }
-
-            var5 = rows.iterator();
-
-            while(var5.hasNext()) {
-                DynamicObject row = (DynamicObject)var5.next();
-                Map<String, Set<Long>> baseDataMap = new HashMap(16);
-                String splitFieldObj = row.getString("splitfieldvalue");
-                if (StringUtils.isNotEmpty(splitFieldObj)) {
-                    baseDataMap = FaInventoryUtils.transferSplitFieldValue(splitFieldObj);
-                }
-
-                Iterator var9 = ((Map)baseDataMap).entrySet().iterator();
-
-                while(var9.hasNext()) {
-                    Map.Entry<String, Set<Long>> entry = (Map.Entry)var9.next();
-                    Set<Long> ids = (Set)queryMap.get(entry.getKey());
-                    ids.addAll((Collection)entry.getValue());
-                    queryMap.put(entry.getKey(), ids);
-                }
-
-                FaInventoryTaskListNew.this.idAndBaseDataMap.put(row.getLong("id"), baseDataMap);
-            }
-
-            FaInventoryUtils.setResultMapValue(queryMap, FaInventoryTaskListNew.this.baseEntityIdMap, FaInventoryTaskListNew.this.resultMap);
-            return rows;
-        }
-    }
-}
+//package fi.fa.formPlugin;
+//
+//import com.alibaba.fastjson.JSON;
+//import java.io.IOException;
+//import java.math.BigDecimal;
+//import java.util.ArrayList;
+//import java.util.Arrays;
+//import java.util.Collection;
+//import java.util.Date;
+//import java.util.EventObject;
+//import java.util.HashMap;
+//import java.util.HashSet;
+//import java.util.Iterator;
+//import java.util.List;
+//import java.util.ListIterator;
+//import java.util.Map;
+//import java.util.Set;
+//import java.util.stream.Collectors;
+//
+//import fi.fa.opplugin.utils.ChangeDataUtils;
+//import kd.bos.algo.DataSet;
+//import kd.bos.algo.Row;
+//import kd.bos.context.RequestContext;
+//import kd.bos.dataentity.entity.CloneUtils;
+//import kd.bos.dataentity.entity.DynamicObject;
+//import kd.bos.dataentity.entity.DynamicObjectCollection;
+//import kd.bos.dataentity.entity.LocaleString;
+//import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
+//import kd.bos.dataentity.resource.ResManager;
+//import kd.bos.dataentity.serialization.SerializationUtils;
+//import kd.bos.db.tx.TX;
+//import kd.bos.db.tx.TXHandle;
+//import kd.bos.entity.EntityMetadataCache;
+//import kd.bos.entity.MainEntityType;
+//import kd.bos.entity.cache.AppCache;
+//import kd.bos.entity.cache.IAppCache;
+//import kd.bos.entity.datamodel.ListSelectedRow;
+//import kd.bos.entity.datamodel.ListSelectedRowCollection;
+//import kd.bos.entity.datamodel.events.PackageDataEvent;
+//import kd.bos.entity.list.column.ColumnDesc;
+//import kd.bos.entity.property.MulBasedataProp;
+//import kd.bos.entity.validate.BillStatus;
+//import kd.bos.exception.KDBizException;
+//import kd.bos.filter.CommonFilterColumn;
+//import kd.bos.filter.FilterColumn;
+//import kd.bos.form.CloseCallBack;
+//import kd.bos.form.ConfirmCallBackListener;
+//import kd.bos.form.ConfirmTypes;
+//import kd.bos.form.FormShowParameter;
+//import kd.bos.form.MessageBoxOptions;
+//import kd.bos.form.MessageBoxResult;
+//import kd.bos.form.ShowFormHelper;
+//import kd.bos.form.ShowType;
+//import kd.bos.form.control.Control;
+//import kd.bos.form.control.events.ItemClickEvent;
+//import kd.bos.form.events.BeforeCreateListColumnsArgs;
+//import kd.bos.form.events.BeforeCreateListDataProviderArgs;
+//import kd.bos.form.events.ClosedCallBackEvent;
+//import kd.bos.form.events.FilterContainerInitArgs;
+//import kd.bos.form.events.HyperLinkClickArgs;
+//import kd.bos.form.events.HyperLinkClickEvent;
+//import kd.bos.form.events.MessageBoxClosedEvent;
+//import kd.bos.form.events.PreOpenFormEventArgs;
+//import kd.bos.form.events.SetFilterEvent;
+//import kd.bos.form.field.ComboItem;
+//import kd.bos.fs.util.StringUtils;
+//import kd.bos.license.api.LicenseCheckResult;
+//import kd.bos.list.BillList;
+//import kd.bos.list.IListColumn;
+//import kd.bos.list.IListView;
+//import kd.bos.list.ListShowParameter;
+//import kd.bos.list.plugin.AbstractListPlugin;
+//import kd.bos.logging.Log;
+//import kd.bos.logging.LogFactory;
+//import kd.bos.mvc.list.ListDataProvider;
+//import kd.bos.orm.datamanager.DataManagerUtils;
+//import kd.bos.orm.query.QFilter;
+//import kd.bos.orm.util.CollectionUtils;
+//import kd.bos.servicehelper.BusinessDataServiceHelper;
+//import kd.bos.servicehelper.QueryServiceHelper;
+//import kd.bos.servicehelper.license.LicenseServiceHelper;
+//import kd.bos.servicehelper.operation.DeleteServiceHelper;
+//import kd.bos.servicehelper.operation.SaveServiceHelper;
+//import kd.bos.servicehelper.workflow.MessageCenterServiceHelper;
+//import kd.bos.url.UrlService;
+//import kd.bos.util.JSONUtils;
+//import kd.bos.workflow.engine.msg.info.MessageInfo;
+//import kd.fi.fa.business.BizStatusEnum;
+//import kd.fi.fa.business.utils.FaOperateLogUtil;
+//import kd.fi.fa.business.utils.FaUtils;
+//import kd.fi.fa.common.util.ContextUtil;
+//import kd.fi.fa.common.util.Fa;
+//import kd.fi.fa.utils.FaAssetTypeUtils;
+//import kd.fi.fa.utils.FaInventoryUtils;
+//
+//public class FaInventoryTaskListNew extends AbstractListPlugin {
+//    private static final Log log = LogFactory.getLog(FaInventoryTaskListNew.class);
+//    public static final String ALGOKEY = "kd.fi.fa.formplugin.FaInventoryTaskListNew";
+//    private static final int DATA_SIZE = DataManagerUtils.getBatchSize();
+//    private static final String ASSIGNINVENTORY = "assigninventory";
+//    private Map<Long, Map<String, Set<Long>>> idAndBaseDataMap = new HashMap(16);
+//    private Map<String, Map<Long, String>> resultMap = new HashMap(16);
+//    private Map<String, Map<String, Object>> baseEntityIdMap = FaInventoryUtils.getBaseEntityIdMap();
+//    private Map<String, String> baseNameMap;
+//    private Set<String> columnNames;
+//    private Map<Long, Map<String, Integer>> map;
+//    private Set<String> splitFields;
+//
+//    public FaInventoryTaskListNew() {
+//        this.baseNameMap = new HashMap(this.baseEntityIdMap.size(), 1.0F);
+//        this.columnNames = new HashSet(16);
+//        this.map = null;
+//        this.splitFields = null;
+//    }
+//
+//    public void preOpenForm(PreOpenFormEventArgs e) {
+//        LicenseCheckResult result = LicenseServiceHelper.checkByAppAndBizObj("83bfebc800001aac", "fa_inventscheme_new", Long.valueOf(RequestContext.get().getUserId()));
+//        if (!result.getHasLicense()) {
+//            boolean isConstellation = LicenseServiceHelper.getModeType() == 3;
+//            String version = LicenseServiceHelper.getProductVersion();
+//            String msg = ResManager.loadKDString("没有财务+供应链+制造分组固定资产许可,请联系管理员。", "FaInventoryTaskList_0", "fi-fa-formplugin", new Object[0]);
+//            if (isConstellation) {
+//                switch (version) {
+//                    case "1.0":
+//                    case "2.0":
+//                    case "3.0":
+//                        msg = ResManager.loadKDString("没有财务会计专业分组许可,请联系管理员。", "FaInventoryTaskList_1", "fi-fa-formplugin", new Object[0]);
+//                    case "4.0":
+//                }
+//            }
+//
+//            e.setCancel(true);
+//            e.setCancelMessage(msg);
+//        } else {
+//            super.preOpenForm(e);
+//        }
+//
+//    }
+//
+//    public void filterContainerInit(FilterContainerInitArgs args) {
+//        super.filterContainerInit(args);
+//        this.setDefaultQuerySelect(args);
+//    }
+//
+//    public void setFilter(SetFilterEvent e) {
+//        Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
+//        Object schemeId = customParams.get("schemeId");
+//        e.getQFilters().add(new QFilter("status", "!=", "Z"));
+//        if (schemeId == null) {
+//            e.getQFilters().add(new QFilter("status", "!=", "A"));
+//            Long userId = ContextUtil.getUserId();
+//            QFilter qfInventory = new QFilter("inventperson", "=", userId);
+//            qfInventory.or(new QFilter("inventorychecker.fbasedataid", "=", userId));
+//            e.getQFilters().add(qfInventory);
+//            this.getView().setVisible(false, new String[]{"inventoryassign"});
+//            this.getView().setVisible(false, new String[]{"inventorywithdrawal"});
+//            LicenseCheckResult result = LicenseServiceHelper.checkByAppAndBizObj("/OSOW2CPH91+", "fap_apphome", userId);
+//            if (result != null && !result.getHasLicense()) {
+//                this.getView().setVisible(false, new String[]{"inventorynotice"});
+//            }
+//        } else {
+//            e.getQFilters().add(new QFilter("inventsscopeid.inventschemeentry", "=", schemeId));
+//            this.getView().setVisible(false, new String[]{"inventorycreaterecord"});
+//            this.getView().setVisible(false, new String[]{"inventorynotice"});
+//            this.getView().setVisible(false, new String[]{"inventorydelete"});
+//        }
+//
+//        ArrayList<QFilter> filters = new ArrayList(e.getQFilters());
+//        String selectFields = Fa.comma(new String[]{"id", "inventschemeid", "splitfieldvalue", Fa.dot(new String[]{"inventsscopeid", "assetunit", "id"}), "status"});
+//        DynamicObjectCollection inventoryTasks = QueryServiceHelper.query("fa_inventory_task", selectFields, (QFilter[])filters.toArray(filters.toArray(new QFilter[0])));
+//        this.map = FaInventoryUtils.updateProgress(inventoryTasks);
+//        this.splitFields = FaInventoryUtils.getSplitFields(inventoryTasks);
+//        this.initbaseNameMap(this.splitFields);
+//        this.setColumnVisible(this.splitFields);
+//        this.setColumnName();
+//    }
+//
+//    public void click(EventObject evt) {
+//        Control c = (Control)evt.getSource();
+//        String key = c.getKey();
+//        if ("name".equalsIgnoreCase(key)) {
+//            Object rowPk = ((IListView)this.getView()).getCurrentSelectedRowInfo().getPrimaryKeyValue();
+//            this.viewInventoryRecord(rowPk);
+//        }
+//
+//        super.click(evt);
+//    }
+//
+//    public void billListHyperLinkClick(HyperLinkClickArgs args) {
+//        if (!FaUtils.isF7(this.getView())) {
+//            BillList billList = (BillList)this.getControl("BillListAp");
+//            HyperLinkClickEvent hyperClick = args.getHyperLinkClickEvent();
+//            if ("inventsscopeid_assetunit_name".equals(hyperClick.getFieldName())) {
+//                Object rowPk = billList.getCurrentSelectedRowInfo().getPrimaryKeyValue();
+//                args.setCancel(true);
+//                this.viewInventoryRecord(rowPk);
+//            }
+//        }
+//
+//    }
+//
+//    private void viewInventoryRecord(Object rowPk) {
+//        String selectFields = "inventschemeid, inventsscopeid.assetunit";
+//        QFilter[] filters = new QFilter[]{new QFilter("id", "=", rowPk)};
+//        DynamicObject inventTask = QueryServiceHelper.queryOne("fa_inventory_task", selectFields, filters);
+//        ListShowParameter parameter = new ListShowParameter();
+//        parameter.setFormId("bos_list");
+//        parameter.setCaption(ResManager.loadKDString("盘点记录", "FaInventoryTaskList_2", "fi-fa-formplugin", new Object[0]));
+//        parameter.setCustomParam("inventorytaskid", rowPk);
+//        parameter.setCustomParam("inventschemaid", String.valueOf(inventTask.getLong("inventschemeid")));
+//        parameter.setCustomParam("inventassetunitid", String.valueOf(inventTask.getLong("inventsscopeid.assetunit")));
+//        Object schemeId = this.getView().getFormShowParameter().getCustomParam("schemeId");
+//        parameter.setCustomParam("showAuditBar", schemeId == null);
+//        parameter.setBillFormId("fa_inventory_record");
+//        parameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
+//        this.getView().showForm(parameter);
+//    }
+//
+//    public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) {
+//        super.beforeCreateListDataProvider(args);
+//        args.setListDataProvider(new FaInventoryTaskListProvide());
+//    }
+//
+//    public void packageData(PackageDataEvent e) {
+//        if (e.getSource() instanceof ColumnDesc) {
+//            ColumnDesc columnDesc = (ColumnDesc)e.getSource();
+//            String columnName = columnDesc.getKey();
+//            long rowId = e.getRowData().getLong("id");
+//            if (this.baseNameMap.containsKey(columnName)) {
+//                Map<String, Set<Long>> baseDataMap = (Map)this.idAndBaseDataMap.get(rowId);
+//                if (baseDataMap.size() == 0 || null == baseDataMap.get(this.baseNameMap.get(columnName)) || ((Set)baseDataMap.get(this.baseNameMap.get(columnName))).size() == 0) {
+//                    return;
+//                }
+//
+//                Set<Long> ids = (Set)baseDataMap.get(this.baseNameMap.get(columnName));
+//                List<String> names = new ArrayList(ids.size());
+//                Map<Long, String> idAndNamesMap = (Map)this.resultMap.get(this.baseNameMap.get(columnName));
+//                Iterator var10 = ids.iterator();
+//
+//                while(var10.hasNext()) {
+//                    Long id = (Long)var10.next();
+//                    names.add(idAndNamesMap.get(id));
+//                }
+//
+//                e.setFormatValue(FaInventoryUtils.getAllNamesString(names));
+//            }
+//
+//            if ("inventprogress".equals(columnName) && !this.map.isEmpty() && this.map.get(rowId) != null) {
+//                e.setFormatValue(((Map)this.map.get(rowId)).get("inventRate"));
+//            }
+//
+//            if ("auditprogress".equals(columnName) && !this.map.isEmpty() && this.map.get(rowId) != null) {
+//                e.setFormatValue(((Map)this.map.get(rowId)).get("auditRate"));
+//            }
+//        }
+//
+//        super.packageData(e);
+//    }
+//
+//    public void itemClick(ItemClickEvent evt) {
+//        super.itemClick(evt);
+//        String key = evt.getItemKey();
+//        IListView view = (IListView)this.getView();
+//        String opMsg = ResManager.loadKDString("成功", "FaInventoryTaskList_3", "fi-fa-formplugin", new Object[0]);
+//        ListSelectedRowCollection selectedRows = view.getSelectedRows();
+//        if (selectedRows.size() < 1 && !key.equals("tblrefresh") && !key.equals("tblclose")) {
+//            this.getView().showTipNotification(ResManager.loadKDString("请选择一行操作。", "FaInventoryTaskList_4", "fi-fa-formplugin", new Object[0]));
+//        } else {
+//            int rowNum;
+//            Iterator var8;
+//            ListSelectedRow selectedRow;
+//            DynamicObject inventoryTask;
+//            String assetUnitName;
+//            if ("inventorynotice".equals(key)) {
+//                rowNum = this.isSchemeClose(selectedRows);
+//                if (rowNum != -1) {
+//                    this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能进行盘点通知。", "FaInventoryTaskList_5", "fi-fa-formplugin", new Object[0]), rowNum));
+//                } else {
+//                    List<Long> inventoryTaskPks = new ArrayList();
+//                    var8 = selectedRows.iterator();
+//
+//                    while(var8.hasNext()) {
+//                        selectedRow = (ListSelectedRow)var8.next();
+//                        inventoryTask = BusinessDataServiceHelper.loadSingle(String.valueOf(selectedRow), "fa_inventory_task");
+//                        assetUnitName = (String)inventoryTask.get("status");
+//                        if (!BillStatus.C.toString().equals(assetUnitName)) {
+//                            throw new KDBizException(ResManager.loadKDString("请先生成盘点记录。", "FaInventoryTaskList_6", "fi-fa-formplugin", new Object[0]));
+//                        }
+//
+//                        inventoryTaskPks.add((Long)selectedRow.getPrimaryKeyValue());
+//                    }
+//
+//                    try {
+//                        this.getPageCache().put("inventoryTaskPks", JSONUtils.toString(inventoryTaskPks));
+//                    } catch (IOException var31) {
+//                        throw new KDBizException(ResManager.loadKDString("盘点通知有误", "FaInventoryTaskList_7", "fi-fa-formplugin", new Object[0]));
+//                    }
+//
+//                    FormShowParameter para = new FormShowParameter();
+//                    para.setFormId("fa_countingreport_message");
+//                    para.getOpenStyle().setShowType(ShowType.Modal);
+//                    para.setCloseCallBack(new CloseCallBack(this, "getmessage"));
+//                    this.getView().showForm(para);
+//                }
+//            } else {
+//                StringBuilder notRightStatus;
+//                String unitName;
+//                long assetUnitId;
+//                if ("inventoryassign".equals(key)) {
+//                    rowNum = this.isSchemeClose(selectedRows);
+//                    if (rowNum != -1) {
+//                        this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能下达任务。", "FaInventoryTaskList_8", "fi-fa-formplugin", new Object[0]), rowNum));
+//                    } else {
+//                        notRightStatus = new StringBuilder();
+//                        var8 = selectedRows.iterator();
+//
+//                        while(var8.hasNext()) {
+//                            selectedRow = (ListSelectedRow)var8.next();
+//                            inventoryTask = BusinessDataServiceHelper.loadSingle(String.valueOf(selectedRow), "fa_inventory_task");
+//                            assetUnitName = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getString("name");
+//                            assetUnitId = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getLong("id");
+//                            unitName = inventoryTask.getString("status");
+//                            if (!BillStatus.A.toString().equals(unitName)) {
+//                                notRightStatus.append(assetUnitName).append(' ');
+//                                FaOperateLogUtil.addLog("fa_inventory_task", assetUnitId, ResManager.loadKDString("下达任务", "FaInventoryTaskList_9", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s下达失败,任务状态不是未下达。", "FaInventoryTaskList_10", "fi-fa-formplugin", new Object[0]), assetUnitName));
+//                            } else {
+//                                inventoryTask.set("status", BillStatus.B.toString());
+//                                SaveServiceHelper.save(inventoryTask.getDataEntityType(), new DynamicObject[]{inventoryTask});
+//                                FaOperateLogUtil.addLog("fa_inventory_task", assetUnitId, ResManager.loadKDString("下达任务", "FaInventoryTaskList_9", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s下达任务成功。", "FaInventoryTaskList_11", "fi-fa-formplugin", new Object[0]), assetUnitName));
+//                            }
+//                        }
+//
+//                        if (notRightStatus.length() > 0) {
+//                            opMsg = String.format(ResManager.loadKDString("%s下达失败,任务状态不是未下达。", "FaInventoryTaskList_10", "fi-fa-formplugin", new Object[0]), notRightStatus);
+//                            this.getView().showTipNotification(opMsg);
+//                        } else {
+//                            opMsg = ResManager.loadKDString("任务下达成功。", "FaInventoryTaskList_12", "fi-fa-formplugin", new Object[0]);
+//                            this.getView().showSuccessNotification(opMsg);
+//                        }
+//
+//                        this.getView().invokeOperation("refresh");
+//                    }
+//                } else if ("inventorywithdrawal".equals(key)) {
+//                    rowNum = this.isSchemeClose(selectedRows);
+//                    if (rowNum != -1) {
+//                        this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能撤销任务。", "FaInventoryTaskList_13", "fi-fa-formplugin", new Object[0]), rowNum));
+//                    } else {
+//                        notRightStatus = new StringBuilder();
+//                        var8 = selectedRows.iterator();
+//
+//                        while(var8.hasNext()) {
+//                            selectedRow = (ListSelectedRow)var8.next();
+//                            inventoryTask = BusinessDataServiceHelper.loadSingle(String.valueOf(selectedRow), "fa_inventory_task");
+//                            assetUnitName = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getString("name");
+//                            assetUnitId = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getLong("id");
+//                            unitName = inventoryTask.getString("status");
+//                            if (!BillStatus.B.toString().equals(unitName)) {
+//                                notRightStatus.append(assetUnitName).append(' ');
+//                                FaOperateLogUtil.addLog("fa_inventory_task", assetUnitId, ResManager.loadKDString("撤销任务", "FaInventoryTaskList_14", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s撤销失败,任务状态不是已下达。", "FaInventoryTaskList_15", "fi-fa-formplugin", new Object[0]), assetUnitName));
+//                            } else {
+//                                inventoryTask.set("status", "A");
+//                                inventoryTask.set("inventorychecker", (Object)null);
+//                                SaveServiceHelper.save(inventoryTask.getDataEntityType(), new DynamicObject[]{inventoryTask});
+//                                FaOperateLogUtil.addLog("fa_inventory_task", assetUnitId, ResManager.loadKDString("撤销任务", "FaInventoryTaskList_14", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s撤销任务成功。", "FaInventoryTaskList_16", "fi-fa-formplugin", new Object[0]), assetUnitName));
+//                            }
+//                        }
+//
+//                        if (notRightStatus.length() > 0) {
+//                            opMsg = String.format(ResManager.loadKDString("%s撤销失败,任务状态不是已下达。", "FaInventoryTaskList_15", "fi-fa-formplugin", new Object[0]), notRightStatus);
+//                            this.getView().showTipNotification(opMsg);
+//                        } else {
+//                            opMsg = ResManager.loadKDString("任务撤销成功。", "FaInventoryTaskList_17", "fi-fa-formplugin", new Object[0]);
+//                            this.getView().showSuccessNotification(opMsg);
+//                        }
+//
+//                        this.getView().invokeOperation("refresh");
+//                    }
+//                } else if (!"inventorycreaterecord".equals(key)) {
+//                    if ("inventorydelete".equals(key)) {
+//                        rowNum = this.isSchemeClose(selectedRows);
+//                        if (rowNum != -1) {
+//                            this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能清除盘点记录。", "FaInventoryTaskList_25", "fi-fa-formplugin", new Object[0]), rowNum));
+//                        } else {
+//                            this.getView().showConfirm(ResManager.loadKDString("此操作将清除任务下所有的盘点记录,是否继续。", "FaInventoryTaskList_26", "fi-fa-formplugin", new Object[0]), "", MessageBoxOptions.YesNo, ConfirmTypes.Delete, new ConfirmCallBackListener("inventorydelete", this));
+//                        }
+//                    } else {
+//                        if ("assigninventory".equals(key)) {
+//                            rowNum = this.isSchemeClose(selectedRows);
+//                            if (rowNum != -1) {
+//                                this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能指定盘点人。", "FaInventoryTaskList_27", "fi-fa-formplugin", new Object[0]), rowNum));
+//                                return;
+//                            }
+//
+//                            this.assignInventory();
+//                        }
+//
+//                    }
+//                } else {
+//                    rowNum = this.isSchemeClose(selectedRows);
+//                    if (rowNum != -1) {
+//                        this.getView().showTipNotification(String.format(ResManager.loadKDString("任务第%s行:盘点方案已关闭,不能生成盘点记录。", "FaInventoryTaskList_18", "fi-fa-formplugin", new Object[0]), rowNum));
+//                    } else {
+//                        notRightStatus = new StringBuilder();
+//                        var8 = selectedRows.iterator();
+//
+//                        while(true) {
+//                            while(var8.hasNext()) {
+//                                selectedRow = (ListSelectedRow)var8.next();
+//                                inventoryTask = BusinessDataServiceHelper.loadSingle(selectedRow.getPrimaryKeyValue(), "fa_inventory_task");
+//                                DynamicObject inventorySope = inventoryTask.getDynamicObject("inventsscopeid");
+//                                if (inventorySope == null) {
+//                                    return;
+//                                }
+//
+//                                String status = inventoryTask.getString("status");
+//                                assetUnitId = (long) inventorySope.get("assetunit_id");
+//                                unitName = inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("assetunit").getString("name");
+//                                if (!BillStatus.B.toString().equals(status)) {
+//                                    notRightStatus.append(unitName).append(' ');
+//                                    FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetUnitId, ResManager.loadKDString("生成盘点记录", "FaInventoryTaskList_19", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s生成失败,任务状态不是已下达。", "FaInventoryTaskList_20", "fi-fa-formplugin", new Object[0]), unitName));
+//                                } else {
+//                                    MainEntityType inventoryRecordType = EntityMetadataCache.getDataEntityType("fa_inventory_record");
+//                                    Date finaccountdate = inventorySope.getDate("finaccountdate");
+//                                    QFilter timeLimitCond = new QFilter("realaccountdate", "<=", finaccountdate);
+//                                    QFilter billstatusCond = new QFilter("billstatus", "=", BillStatus.C.toString());
+//                                    QFilter assetunitCond = new QFilter("assetunit_id", "=", assetUnitId);
+//                                    QFilter bizstatusDeleteCond = new QFilter("bizstatus", "!=", BizStatusEnum.DELETE);
+//                                    QFilter notIsBackAndOther = new QFilter("isbak", "=", false);
+//                                    String splitfieldvalue = inventoryTask.getString("splitfieldvalue");
+//                                    if (!StringUtils.isBlank(splitfieldvalue)) {
+//                                        Map<String, Object> maps = (Map)JSON.parse(splitfieldvalue);
+//                                        Iterator<Map.Entry<String, Object>> it = maps.entrySet().iterator();
+//
+//                                        while(it.hasNext()) {
+//                                            Map.Entry<String, Object> entry = (Map.Entry)it.next();
+//                                            String keySet = (String)entry.getKey();
+//                                            Object valueSet = entry.getValue();
+//                                            if (valueSet != null) {
+//                                                List<Long> idList = null;
+//                                                String assetcatIds = (String)valueSet;
+//                                                if (!StringUtils.isBlank(assetcatIds)) {
+//                                                    Set<Long> idSet = (Set)Arrays.asList(assetcatIds.split(",")).stream().map((s) -> {
+//                                                        return Long.parseLong(StringUtils.isBlank(s) ? "0" : s.trim());
+//                                                    }).collect(Collectors.toSet());
+//                                                    idList = new ArrayList(idSet);
+//                                                    if (idList.size() == 1 && ((Long)idList.get(0)).equals(0L)) {
+//                                                        idList = null;
+//                                                    }
+//                                                }
+//
+//                                                QFilter assetIds = null;
+//                                                if (idList != null) {
+//                                                    if ("assetcat".equals(keySet)) {
+//                                                        assetIds = new QFilter("assetcat_id", "in", FaAssetTypeUtils.getAllSubAssetTypes(idList));
+//                                                    } else {
+//                                                        assetIds = new QFilter(keySet + "_id", "in", idList);
+//                                                    }
+//                                                }
+//
+//                                                if (assetIds != null) {
+//                                                    notIsBackAndOther.and(assetIds);
+//                                                }
+//                                            }
+//                                        }
+//                                    }
+//
+//                                    String sicOnlyId = Fa.join(",", new String[]{"id"});
+//                                    String sic = Fa.join(",", new String[]{"id,number,barcode,assetname,model,assetamount,unit,headuseperson,nckd_storeplace"});
+//                                    DynamicObjectCollection realCards = QueryServiceHelper.query("fa_card_real", sicOnlyId, new QFilter[]{assetunitCond, timeLimitCond, billstatusCond, bizstatusDeleteCond, notIsBackAndOther});
+//                                    Set<Long> cardIds = new HashSet();
+//                                    Iterator var43 = realCards.iterator();
+//
+//                                    while(var43.hasNext()) {
+//                                        DynamicObject realCard = (DynamicObject)var43.next();
+//                                        cardIds.add(realCard.getLong("id"));
+//                                    }
+//
+//                                    int i = 0;
+//                                    Set<Long> cardId = new HashSet();
+//
+//                                    try {
+//                                        Iterator<Long> ite = cardIds.iterator();
+//
+//                                        while(ite.hasNext()) {
+//                                            if (i == DATA_SIZE) {
+//                                                this.createInventoryRedords(inventoryRecordType, inventoryTask, sic, cardId);
+//                                                cardId = new HashSet();
+//                                                i = 0;
+//                                            } else {
+//                                                cardId.add(ite.next());
+//                                                ++i;
+//                                            }
+//                                        }
+//
+//                                        if (!cardId.isEmpty()) {
+//                                            this.createInventoryRedords(inventoryRecordType, inventoryTask, sic, cardId);
+//                                        }
+//
+//                                        inventoryTask.set("status", "C");
+//                                        SaveServiceHelper.save(inventoryTask.getDataEntityType(), new DynamicObject[]{inventoryTask});
+//                                        FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetUnitId, ResManager.loadKDString("生成盘点记录", "FaInventoryTaskList_19", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s生成盘点记录成功。", "FaInventoryTaskList_21", "fi-fa-formplugin", new Object[0]), unitName));
+//                                    } catch (Exception var32) {
+//                                        FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetUnitId, ResManager.loadKDString("生成盘点记录", "FaInventoryTaskList_19", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%1$s生成盘点记录事务失败,联系管理员查看日志:%2$s。", "FaInventoryTaskList_22", "fi-fa-formplugin", new Object[0]), unitName, var32.getMessage()));
+//                                        throw new KDBizException(String.format(ResManager.loadKDString("%1$s生成盘点记录事务失败,联系管理员查看日志:%2$s。", "FaInventoryTaskList_22", "fi-fa-formplugin", new Object[0]), unitName, var32.getMessage()));
+//                                    }
+//                                }
+//                            }
+//
+//                            if (notRightStatus.length() > 0) {
+//                                int unSuccess = notRightStatus.toString().split(" ").length;
+//                                int success = selectedRows.size() - unSuccess;
+//                                this.getView().showTipNotification(String.format(ResManager.loadKDString("成功%1$d条,失败%2$d条,其中[%3$s]生成失败,任务状态不是已下达。", "FaInventoryTaskList_23", "fi-fa-formplugin", new Object[0]), success, unSuccess, notRightStatus));
+//                            } else {
+//                                this.getView().showSuccessNotification(ResManager.loadKDString("生成盘点记录成功。", "FaInventoryTaskList_24", "fi-fa-formplugin", new Object[0]));
+//                            }
+//
+//                            this.getView().invokeOperation("refresh");
+//                            return;
+//                        }
+//                    }
+//                }
+//            }
+//        }
+//    }
+//
+//    private int isSchemeClose(ListSelectedRowCollection selectedRows) {
+//        DynamicObject[] selectDynamicObject = this.getSelectDynamicObjcet();
+//        DynamicObject[] var3 = selectDynamicObject;
+//        int var4 = selectDynamicObject.length;
+//
+//        for(int var5 = 0; var5 < var4; ++var5) {
+//            DynamicObject selectDO = var3[var5];
+//            if ("C".equals(selectDO.getString("inventschemeid.billstate"))) {
+//                Iterator var7 = selectedRows.iterator();
+//
+//                while(var7.hasNext()) {
+//                    ListSelectedRow selectRow = (ListSelectedRow)var7.next();
+//                    if (selectDO.getLong("id") == (Long)selectRow.getPrimaryKeyValue()) {
+//                        return selectRow.getRowKey() + 1;
+//                    }
+//                }
+//            }
+//        }
+//
+//        return -1;
+//    }
+//
+//    private void assignInventory() {
+//        DynamicObject[] selectDys = this.getSelectDynamicObjcet();
+//        if (selectDys != null) {
+//            long userId = ContextUtil.getUserId();
+//            DynamicObject[] var4 = selectDys;
+//            int var5 = selectDys.length;
+//
+//            for(int var6 = 0; var6 < var5; ++var6) {
+//                DynamicObject dy = var4[var6];
+//                if (userId != dy.getLong("inventperson_id") && userId != dy.getDynamicObject("inventschemeid").getDynamicObject("creator").getLong("id")) {
+//                    this.getView().showTipNotification(ResManager.loadKDString("只允许盘点负责人和方案创建人指定盘点人。", "FaInventoryTaskList_28", "fi-fa-formplugin", new Object[0]));
+//                    return;
+//                }
+//            }
+//
+//            this.showUserForm();
+//        }
+//    }
+//
+//    private void showUserForm() {
+//        ListShowParameter param = ShowFormHelper.createShowListForm("bos_user", true);
+//        param.setCloseCallBack(new CloseCallBack(this, "assigninventory"));
+//        param.setCustomParam("skipCheckSelectRows", true);
+//        DynamicObject[] selectDys = this.getSelectDynamicObjcet();
+//        List<Long> selectids = new ArrayList(10);
+//        Arrays.asList(selectDys).stream().forEach((v) -> {
+//            List<Long> collect = (List)v.getDynamicObjectCollection("inventorychecker").stream().map((t) -> {
+//                return t.getLong("fbasedataid_id");
+//            }).collect(Collectors.toList());
+//            selectids.addAll(collect);
+//        });
+//        param.setSelectedRows(selectids.toArray());
+//        this.getView().showForm(param);
+//    }
+//
+//    private void createInventoryRedords(MainEntityType inventoryRecordType, DynamicObject inventoryTask, String sic, Set<Long> cardId) {
+//        TXHandle h = TX.requiresNew();
+//        Throwable var6 = null;
+//
+//        try {
+//            try {
+//                DynamicObjectCollection realCards = QueryServiceHelper.query("fa_card_real", sic, new QFilter[]{new QFilter("id", "in", cardId)});
+//                DynamicObject inventoryRecordEntity = (DynamicObject)inventoryRecordType.createInstance();
+//                List<DynamicObject> inventoryRecordList = new ArrayList();
+//                Iterator var10 = realCards.iterator();
+//
+//                while(var10.hasNext()) {
+//                    DynamicObject realCard = (DynamicObject)var10.next();
+//                    DynamicObject fin = ChangeDataUtils.queryFinCard(realCard.getLong("id"));
+//                    DynamicObject inventoryRecordInstance = (DynamicObject)(new CloneUtils(false, true)).clone(inventoryRecordType, inventoryRecordEntity);
+//                    inventoryRecordInstance.set("realCard_id", realCard.get("id"));
+//                    inventoryRecordInstance.set("number", realCard.getString("number"));
+//                    inventoryRecordInstance.set("barcode", realCard.getString("barcode"));
+//                    inventoryRecordInstance.set("name", realCard.getString("assetname"));
+//                    inventoryRecordInstance.set("model", realCard.getString("model"));
+//                    inventoryRecordInstance.set("bookquantity", realCard.getBigDecimal("assetamount"));
+//                    inventoryRecordInstance.set("unit_id", realCard.get("unit"));
+//                    inventoryRecordInstance.set("inventoryquantity", BigDecimal.ZERO);
+//                    inventoryRecordInstance.set("difference", BigDecimal.ZERO);
+//                    inventoryRecordInstance.set("inventorystate", BillStatus.B.toString());
+//                    inventoryRecordInstance.set("reason", "1 ");
+//                    inventoryRecordInstance.set("inventorytask_id", inventoryTask.getPkValue());
+//                    inventoryRecordInstance.set("inventschemeentry_id", inventoryTask.getDynamicObject("inventsscopeid").getDynamicObject("inventschemeentry").getPkValue());
+//                    inventoryRecordInstance.set("billstatus", "C");
+//                    inventoryRecordInstance.set("billstate", "A");
+//                    inventoryRecordInstance.set("nckd_storeplace", realCard.getString("nckd_storeplace"));
+//                    inventoryRecordInstance.set("nckd_fincard_id", fin != null ? fin.getLong("id") : null);
+//                    inventoryRecordList.add(inventoryRecordInstance);
+//                }
+//
+//                if (inventoryRecordList.size() > 0) {
+//                    SaveServiceHelper.save(inventoryRecordType, inventoryRecordList.toArray(new DynamicObject[0]));
+//                }
+//            } catch (Throwable var21) {
+//                h.markRollback();
+//                throw var21;
+//            }
+//        } catch (Throwable var22) {
+//            var6 = var22;
+//            throw var22;
+//        } finally {
+//            if (h != null) {
+//                if (var6 != null) {
+//                    try {
+//                        h.close();
+//                    } catch (Throwable var20) {
+//                        var6.addSuppressed(var20);
+//                    }
+//                } else {
+//                    h.close();
+//                }
+//            }
+//
+//        }
+//
+//    }
+//
+//    public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
+//        super.confirmCallBack(messageBoxClosedEvent);
+//        IListView view = (IListView)this.getView();
+//        ListSelectedRowCollection selectedRows = view.getSelectedRows();
+//        String callBackId = messageBoxClosedEvent.getCallBackId();
+//        if ("inventorydelete".equals(callBackId) && MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
+//            StringBuilder notRightStatus = new StringBuilder();
+//            StringBuilder notBillStatus = new StringBuilder();
+//            Iterator var7 = selectedRows.iterator();
+//
+//            while(var7.hasNext()) {
+//                ListSelectedRow selectedRow = (ListSelectedRow)var7.next();
+//                DynamicObject inventoryTask = BusinessDataServiceHelper.loadSingle(String.valueOf(selectedRow), "fa_inventory_task");
+//                DynamicObject inventorySope = inventoryTask.getDynamicObject("inventsscopeid");
+//                if (inventorySope == null) {
+//                    return;
+//                }
+//
+//                Object assetunitId = inventorySope.get("assetunit_id");
+//                String assetUnitName = inventorySope.getDynamicObject("assetunit").getString("name");
+//                String status = inventoryTask.getString("status");
+//                if (!BillStatus.C.toString().equals(status)) {
+//                    notRightStatus.append(assetUnitName).append(' ');
+//                    FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetunitId, ResManager.loadKDString("清除盘点记录", "FaInventoryTaskList_29", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s删除盘点记录失败,任务状态不是已生成。", "FaInventoryTaskList_30", "fi-fa-formplugin", new Object[0]), assetUnitName));
+//                } else {
+//                    QFilter qfBillStatus = new QFilter("billstate", "=", "C");
+//                    QFilter qfInventoryTask = new QFilter("inventorytask", "=", inventoryTask.getPkValue());
+//                    boolean exists = QueryServiceHelper.exists("fa_inventory_record", new QFilter[]{qfInventoryTask, qfBillStatus});
+//                    if (exists) {
+//                        notBillStatus.append(assetUnitName).append(' ');
+//                        FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetunitId, ResManager.loadKDString("清除盘点记录", "FaInventoryTaskList_29", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s删除盘点记录失败,存在已审核的盘点记录。", "FaInventoryTaskList_31", "fi-fa-formplugin", new Object[0]), assetUnitName));
+//                    } else {
+//                        Object inventoryTaskPk = selectedRow.getPrimaryKeyValue();
+//                        QFilter inventoryTaskPkCond = new QFilter("inventorytask_id", "=", inventoryTaskPk);
+//                        DeleteServiceHelper.delete("fa_inventory_record", new QFilter[]{inventoryTaskPkCond});
+//                        QFilter qInventoryTaskPk = new QFilter("inventorytask_id", "=", inventoryTaskPk);
+//                        DeleteServiceHelper.delete("fa_inventory_entrust", new QFilter[]{qInventoryTaskPk});
+//                        inventoryTask.set("status", BillStatus.B.toString());
+//                        SaveServiceHelper.save(inventoryTask.getDataEntityType(), new DynamicObject[]{inventoryTask});
+//                        FaOperateLogUtil.addLog("fa_inventory_task", (Long)assetunitId, ResManager.loadKDString("清除盘点记录", "FaInventoryTaskList_29", "fi-fa-formplugin", new Object[0]), String.format(ResManager.loadKDString("%s删除盘点记录成功。", "FaInventoryTaskList_32", "fi-fa-formplugin", new Object[0]), assetUnitName));
+//                    }
+//                }
+//            }
+//
+//            if (notBillStatus.length() > 0) {
+//                this.getView().showTipNotification(String.format(ResManager.loadKDString("%s删除盘点记录失败,存在已审核的盘点记录。", "FaInventoryTaskList_31", "fi-fa-formplugin", new Object[0]), notRightStatus));
+//            } else if (notRightStatus.length() > 0) {
+//                this.getView().showTipNotification(String.format(ResManager.loadKDString("%s删除盘点记录失败,任务状态不是已生成。", "FaInventoryTaskList_33", "fi-fa-formplugin", new Object[0]), notRightStatus));
+//            } else {
+//                this.getView().showSuccessNotification(String.format(ResManager.loadKDString("%s删除盘点记录成功。", "FaInventoryTaskList_32", "fi-fa-formplugin", new Object[0]), ""));
+//            }
+//
+//            this.getView().invokeOperation("refresh");
+//        }
+//
+//    }
+//
+//    public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
+//        super.closedCallBack(closedCallBackEvent);
+//        Object returnData = closedCallBackEvent.getReturnData();
+//        if (returnData != null) {
+//            if (!"assigninventory".equals(closedCallBackEvent.getActionId())) {
+//                if ("getmessage".equals(closedCallBackEvent.getActionId())) {
+//                    IAppCache cacheDepreCheck = AppCache.get("fa");
+//                    String title = (String)cacheDepreCheck.get("countingreport_message_title", String.class);
+//                    this.sendMessage(returnData.toString(), title);
+//                }
+//
+//            } else {
+//                DynamicObjectCollection proto = this.buildMulBasedata((ListSelectedRowCollection)returnData);
+//                DynamicObject[] selectDys = this.getSelectDynamicObjcet();
+//                CloneUtils c = new CloneUtils(true, true);
+//                DynamicObject[] var7 = selectDys;
+//                int var8 = selectDys.length;
+//
+//                for(int var9 = 0; var9 < var8; ++var9) {
+//                    DynamicObject dy = var7[var9];
+//                    List<DynamicObject> collection = new ArrayList(10);
+//                    Iterator var11 = proto.iterator();
+//
+//                    while(var11.hasNext()) {
+//                        DynamicObject protoDy = (DynamicObject)var11.next();
+//                        collection.add((DynamicObject)c.clone(((DynamicObject)proto.get(0)).getDataEntityType(), protoDy));
+//                    }
+//
+//                    dy.set("inventorychecker", collection);
+//                }
+//
+//                SaveServiceHelper.save(selectDys);
+//                this.getView().updateView();
+//            }
+//        }
+//    }
+//
+//    private DynamicObjectCollection buildMulBasedata(ListSelectedRowCollection selectedRows) {
+//        DynamicObjectCollection collection = new DynamicObjectCollection();
+//        MainEntityType mainInventory = EntityMetadataCache.getDataEntityType("fa_inventory_task");
+//        MulBasedataProp mulBasedataProp = (MulBasedataProp)mainInventory.findProperty("inventorychecker");
+//        DynamicObjectType dynamicCollectionItemPropertyType = mulBasedataProp.getDynamicCollectionItemPropertyType();
+//        Iterator var6 = selectedRows.iterator();
+//
+//        while(var6.hasNext()) {
+//            ListSelectedRow row = (ListSelectedRow)var6.next();
+//            DynamicObject dy = new DynamicObject(dynamicCollectionItemPropertyType);
+//            dy.set("fbasedataid", row.getPrimaryKeyValue());
+//            dy.set("fbasedataid_id", row.getPrimaryKeyValue());
+//            collection.add(dy);
+//        }
+//
+//        return collection;
+//    }
+//
+//    public static void inventoryAssign(Object[] pkArray) {
+//        QFilter filtersPk = new QFilter("id", "in", pkArray);
+//        DynamicObject[] inventoryTasks = BusinessDataServiceHelper.load("fa_inventory_task", "status", new QFilter[]{filtersPk});
+//        List<DynamicObject> inventoryTasksNeedChange = new ArrayList(inventoryTasks.length);
+//        DynamicObject[] var4 = inventoryTasks;
+//        int var5 = inventoryTasks.length;
+//
+//        for(int var6 = 0; var6 < var5; ++var6) {
+//            DynamicObject inventoryTask = var4[var6];
+//            inventoryTask.set("status", BillStatus.B.toString());
+//            inventoryTasksNeedChange.add(inventoryTask);
+//        }
+//
+//        if (inventoryTasksNeedChange.size() > 0) {
+//            SaveServiceHelper.save(((DynamicObject)inventoryTasksNeedChange.get(0)).getDataEntityType(), inventoryTasksNeedChange.toArray());
+//        }
+//
+//    }
+//
+//    private void sendMessage(String content, String title) {
+//        MessageInfo message = new MessageInfo();
+//        message.setType("message");
+//        if (StringUtils.isNotEmpty(title)) {
+//            message.setTitle(title);
+//        } else {
+//            message.setTitle(ResManager.loadKDString("人人资产-盘点", "FaInventoryTaskList_34", "fi-fa-formplugin", new Object[0]));
+//        }
+//
+//        List<Long> inventoryTaskPks = (List)SerializationUtils.fromJsonString(String.valueOf(this.getPageCache().get("inventoryTaskPks")), List.class);
+//        Iterator var5 = inventoryTaskPks.iterator();
+//
+//        while(var5.hasNext()) {
+//            Long inventoryTaskPk = (Long)var5.next();
+//            List<Long> assetInventors = this.getAssetInventors(inventoryTaskPk);
+//            message.setUserIds(assetInventors);
+//            message.setSenderId(ContextUtil.getUserId());
+//            message.setSendTime(new Date(System.currentTimeMillis()));
+//            message.setEntityNumber("fa_inventory_task");
+//            message.setBizDataId(inventoryTaskPk);
+//            message.setTag(ResManager.loadKDString("人人资产", "FaInventoryTaskList_35", "fi-fa-formplugin", new Object[0]));
+//            String clientUrl = UrlService.getDomainContextUrl();
+//            StringBuilder urlWithEncodedParams = new StringBuilder(clientUrl);
+//            if (!clientUrl.trim().endsWith("/")) {
+//                urlWithEncodedParams.append("/");
+//            }
+//
+//            String strMobContentUrl = "%sintegration/yzjShareOpen.do?mb_formId=fa_mobile_inventpage&pkId=%s&device=mob&accountId=%s";
+//            message.setMobContentUrl(String.format(strMobContentUrl, urlWithEncodedParams.toString(), inventoryTaskPk, RequestContext.get().getAccountId()));
+//            log.info("FaInventoryTaskList-message-MobContentUrl-is " + message.getMobContentUrl());
+//            String strContentUrl = "%sindex.html?formId=fa_inventory_task&pkId=%s";
+//            message.setContentUrl(String.format(strContentUrl, urlWithEncodedParams.toString(), inventoryTaskPk));
+//            log.info("FaInventoryTaskList-message-ContentUrl-is " + message.getContentUrl());
+//            message.setContent(content);
+//            log.info("FaInventoryTaskList-message-Content-is " + message.getContent());
+//            message.setPubaccNumber("systempubacc");
+//            MessageCenterServiceHelper.sendMessage(message);
+//            this.getView().showMessage(ResManager.loadKDString("发送普通消息给“系统级消息助手”成功。", "FaInventoryTaskList_36", "fi-fa-formplugin", new Object[0]));
+//        }
+//
+//    }
+//
+//    private List<Long> getAssetInventors(Long inventoryTaskPk) {
+//        Set<Long> assetInventors = new HashSet();
+//        String sic = Fa.join(",", new String[]{"realcard.headuseperson.id"});
+//        QFilter filters1 = new QFilter("inventorytask", "=", inventoryTaskPk);
+//        filters1.and("inventorystate", "=", BillStatus.B);
+//        DataSet dataSet = QueryServiceHelper.queryDataSet(FaInventoryTaskListNew.class.getName(), "fa_inventory_record", sic, new QFilter[]{filters1}, (String)null);
+//        Iterator var6 = dataSet.iterator();
+//
+//        while(var6.hasNext()) {
+//            Row row = (Row)var6.next();
+//            assetInventors.add(row.getLong("realcard.headuseperson.id"));
+//        }
+//
+//        return new ArrayList(assetInventors);
+//    }
+//
+//    public void beforeBindData(EventObject e) {
+//        super.beforeBindData(e);
+//    }
+//
+//    private void setDefaultQuerySelect(FilterContainerInitArgs filtercontainerinitargs) {
+//        List<FilterColumn> listFilterColumns = filtercontainerinitargs.getFilterContainerInitEvent().getCommonFilterColumns();
+//        Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
+//        Object schemeId = customParams.get("schemeId");
+//        Long userId = ContextUtil.getUserId();
+//        List<ComboItem> comboItemsStatus = new ArrayList();
+//        ComboItem a = new ComboItem(new LocaleString(ResManager.loadKDString("未下达", "FaInventoryTaskList_37", "fi-fa-formplugin", new Object[0])), BillStatus.A.toString());
+//        ComboItem b = new ComboItem(new LocaleString(ResManager.loadKDString("已下达", "FaInventoryTaskList_38", "fi-fa-formplugin", new Object[0])), BillStatus.B.toString());
+//        ComboItem c = new ComboItem(new LocaleString(ResManager.loadKDString("已生成", "FaInventoryTaskList_39", "fi-fa-formplugin", new Object[0])), "C");
+//        if (schemeId != null) {
+//            this.getPageCache().put("schemeIds", SerializationUtils.serializeToBase64(schemeId));
+//            ListIterator<FilterColumn> deleteListFilterColumns = listFilterColumns.listIterator();
+//
+//            while(deleteListFilterColumns.hasNext()) {
+//                String fieldName = ((FilterColumn)deleteListFilterColumns.next()).getFieldName();
+//                if ("inventsscopeid.inventschemeentry.name".equals(fieldName)) {
+//                    deleteListFilterColumns.remove();
+//                }
+//            }
+//
+//        } else {
+//            Iterator var29 = listFilterColumns.iterator();
+//
+//            while(true) {
+//                while(var29.hasNext()) {
+//                    FilterColumn listFilter = (FilterColumn)var29.next();
+//                    CommonFilterColumn commFilter = (CommonFilterColumn)listFilter;
+//                    String fieldName = commFilter.getFieldName();
+//                    if ("inventsscopeid.inventschemeentry.name".equals(fieldName)) {
+//                        Set<ComboItem> comboItemsTrys = new HashSet();
+//                        QFilter filtersUserid = new QFilter("inventperson", "=", userId);
+//                        filtersUserid.or(new QFilter("inventorychecker.fbasedataid", "=", userId));
+//                        QFilter filterStatus = new QFilter("status", "!=", "A");
+//                        QFilter filterStatusZ = new QFilter("status", "!=", "Z");
+//                        DynamicObjectCollection invenTasks = QueryServiceHelper.query("fa_inventory_task", "inventsscopeid", new QFilter[]{filtersUserid, filterStatus, filterStatusZ});
+//                        Set<Long> scopeIds = (Set)invenTasks.stream().map((s) -> {
+//                            return s.getLong("inventsscopeid");
+//                        }).collect(Collectors.toSet());
+//                        QFilter scopeIdsQ = new QFilter("id", "in", scopeIds);
+//                        DynamicObjectCollection invenschemeetry = QueryServiceHelper.query("fa_inventory_sope", "inventschemeentry", new QFilter[]{scopeIdsQ}, "createtime desc");
+//                        Set<Long> schemeIds = (Set)invenschemeetry.stream().map((s) -> {
+//                            return s.getLong("inventschemeentry");
+//                        }).collect(Collectors.toSet());
+//                        this.getPageCache().put("schemeIds", SerializationUtils.serializeToBase64(schemeIds));
+//                        QFilter schemeIdsQ = new QFilter("id", "in", schemeIds);
+//                        DynamicObjectCollection inventschemes = QueryServiceHelper.query("fa_inventscheme_new", "id,name,entryentity.splitfieldentity.splitfield splitfield", new QFilter[]{schemeIdsQ}, "createtime desc");
+//                        Iterator var25 = inventschemes.iterator();
+//
+//                        while(var25.hasNext()) {
+//                            DynamicObject inventscheme = (DynamicObject)var25.next();
+//                            ComboItem item = new ComboItem(new LocaleString(inventscheme.getString("name")), inventscheme.getString("id"));
+//                            comboItemsTrys.add(item);
+//                        }
+//
+//                        if (!CollectionUtils.isEmpty(inventschemes)) {
+//                            commFilter.setDefaultValue(((DynamicObject)inventschemes.get(0)).getString("id"));
+//                        }
+//
+//                        List<ComboItem> allInventoryName = new ArrayList(comboItemsTrys);
+//                        commFilter.setComboItems(allInventoryName);
+//                        commFilter.setMustInput(true);
+//                    } else if ("status".equals(fieldName)) {
+//                        comboItemsStatus.add(a);
+//                        comboItemsStatus.add(b);
+//                        comboItemsStatus.add(c);
+//                        commFilter.setComboItems(comboItemsStatus);
+//                    }
+//                }
+//
+//                return;
+//            }
+//        }
+//    }
+//
+//    private DynamicObject[] getSelectDynamicObjcet() {
+//        QFilter qfIds = new QFilter("id", "in", this.getSelectedRows().getPrimaryKeyValues());
+//        return BusinessDataServiceHelper.load("fa_inventory_task", "inventorychecker,inventperson,inventschemeid", new QFilter[]{qfIds});
+//    }
+//
+//    private void initbaseNameMap(Set<String> splitfields) {
+//        int k = 0;
+//        Iterator var3 = splitfields.iterator();
+//
+//        while(var3.hasNext()) {
+//            String splitfield = (String)var3.next();
+//            String columnName = "entrytext" + k++;
+//            this.baseNameMap.put(columnName, splitfield);
+//        }
+//
+//    }
+//
+//    private void setColumnVisible(Set<String> splitfields) {
+//        Iterator var2 = splitfields.iterator();
+//
+//        while(var2.hasNext()) {
+//            String splitfield = (String)var2.next();
+//            Iterator var4 = this.baseNameMap.entrySet().iterator();
+//
+//            while(var4.hasNext()) {
+//                Map.Entry<String, String> entry = (Map.Entry)var4.next();
+//                if (splitfield.equals(entry.getValue())) {
+//                    this.columnNames.add(entry.getKey());
+//                }
+//            }
+//        }
+//
+//        BillList list = (BillList)this.getControl("billlistap");
+//        FaInventoryUtils.setColumnVisible(list.getView(), this.columnNames);
+//    }
+//
+//    private void setColumnName() {
+//        BillList billList = (BillList)this.getView().getControl("billlistap");
+//        BeforeCreateListColumnsArgs args = billList.getBeforeCreateListColumnsArgs();
+//        if (null != args) {
+//            Iterator var3 = this.columnNames.iterator();
+//
+//            while(var3.hasNext()) {
+//                String columnName = (String)var3.next();
+//                String entityId = (String)this.baseNameMap.get(columnName);
+//                Map<String, Object> map = (Map)this.baseEntityIdMap.get(entityId);
+//                IListColumn listColumn = billList.getBeforeCreateListColumnsArgs().getListColumn(columnName);
+//                if (null != listColumn && null != map.get("displayName")) {
+//                    listColumn.setCaption((LocaleString)map.get("displayName"));
+//                }
+//            }
+//
+//        }
+//    }
+//
+//    private class FaInventoryTaskListProvide extends ListDataProvider {
+//        private FaInventoryTaskListProvide() {
+//        }
+//
+//        public DynamicObjectCollection getData(int start, int limit) {
+//            DynamicObjectCollection rows = super.getData(start, limit);
+//            Map<String, Set<Long>> queryMap = new HashMap(FaInventoryTaskListNew.this.baseEntityIdMap.size(), 1.0F);
+//            Iterator var5 = FaInventoryTaskListNew.this.baseEntityIdMap.keySet().iterator();
+//
+//            while(var5.hasNext()) {
+//                String s = (String)var5.next();
+//                queryMap.put(s, new HashSet());
+//            }
+//
+//            var5 = rows.iterator();
+//
+//            while(var5.hasNext()) {
+//                DynamicObject row = (DynamicObject)var5.next();
+//                Map<String, Set<Long>> baseDataMap = new HashMap(16);
+//                String splitFieldObj = row.getString("splitfieldvalue");
+//                if (StringUtils.isNotEmpty(splitFieldObj)) {
+//                    baseDataMap = FaInventoryUtils.transferSplitFieldValue(splitFieldObj);
+//                }
+//
+//                Iterator var9 = ((Map)baseDataMap).entrySet().iterator();
+//
+//                while(var9.hasNext()) {
+//                    Map.Entry<String, Set<Long>> entry = (Map.Entry)var9.next();
+//                    Set<Long> ids = (Set)queryMap.get(entry.getKey());
+//                    ids.addAll((Collection)entry.getValue());
+//                    queryMap.put(entry.getKey(), ids);
+//                }
+//
+//                FaInventoryTaskListNew.this.idAndBaseDataMap.put(row.getLong("id"), baseDataMap);
+//            }
+//
+//            FaInventoryUtils.setResultMapValue(queryMap, FaInventoryTaskListNew.this.baseEntityIdMap, FaInventoryTaskListNew.this.resultMap);
+//            return rows;
+//        }
+//    }
+//}

+ 43 - 6
src/main/java/fi/fa/opplugin/BusProcessBillOpPlugin.java

@@ -10,6 +10,9 @@ import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 
+import java.util.Arrays;
+import java.util.List;
+
 //业务处理单
 public class BusProcessBillOpPlugin extends AbstractOperationServicePlugIn {
     @Override
@@ -19,8 +22,9 @@ public class BusProcessBillOpPlugin extends AbstractOperationServicePlugIn {
             if (StringUtils.equals(e.getOperationKey(),"audit")) {
                 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
                 if ("D".equals(info.getString("nckd_detailtype"))) {
+                    //资产报废
                     for (DynamicObject nckd_entryentity6 : info.getDynamicObjectCollection("nckd_entryentity6")) {
-                        String  number = nckd_entryentity6.getDynamicObject("nckd_basedatafield").getString("number");
+                        String number = nckd_entryentity6.getDynamicObject("nckd_basedatafield").getString("number");
                         if (!StringUtils.isEmpty(number)) {
                             //查询e管家实物卡片清单
                             QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number);
@@ -32,7 +36,22 @@ public class BusProcessBillOpPlugin extends AbstractOperationServicePlugIn {
                                 SaveServiceHelper.save(new DynamicObject[]{cardInfo});
                             }
                         }
-
+                    }
+                } else if ("N".equals(info.getString("nckd_detailtype"))) {
+                    //资产变更明细
+                    for (DynamicObject nckd_entryentity681 : info.getDynamicObjectCollection("nckd_entryentity681")) {
+                        //变更后存放地点
+                        String nckd_textfield45 = nckd_entryentity681.getString("nckd_textfield45");
+                        if(!StringUtils.isEmpty(nckd_textfield45)) {
+                            Long id = nckd_entryentity681.getDynamicObject("nckd_basedatafield21").getLong("id");
+                            //查询e管家实物卡片清单
+                            QFilter filter = new QFilter("id", QCP.equals,id);
+                            DynamicObject[] cardObjects = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
+                            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[0].getPkValue(), cardObjects[0].getDynamicObjectType().getName());
+                            //回写e管家实物清单字段
+                            cardInfo.set("nckd_storeplace", nckd_textfield45);//是否报废
+                            SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                        }
                     }
                 }
 
@@ -70,11 +89,27 @@ public class BusProcessBillOpPlugin extends AbstractOperationServicePlugIn {
                             for (int j = 0; j < cardObjects.length; j++) {
                                 DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[j].getPkValue(), cardObjects[j].getDynamicObjectType().getName());
                                 //回写e管家实物清单字段
-                                cardInfo.set("nckd_discard", "0");//是否报废
+                                cardInfo.set("nckd_discard", "0");
                                 SaveServiceHelper.save(new DynamicObject[]{cardInfo});
                             }
                         }
-
+                    }
+                }else if ("N".equals(info.getString("nckd_detailtype"))) {
+                    //资产变更明细
+                    for (DynamicObject nckd_entryentity681 : info.getDynamicObjectCollection("nckd_entryentity681")) {
+                        //变更后存放地点
+                        String nckd_textfield45 = nckd_entryentity681.getString("nckd_textfield45");
+                        String nckd_textfield42 = nckd_entryentity681.getString("nckd_textfield42");
+                        if(!StringUtils.isEmpty(nckd_textfield45)) {
+                            Long id = nckd_entryentity681.getDynamicObject("nckd_basedatafield21").getLong("id");
+                            //查询e管家实物卡片清单
+                            QFilter filter = new QFilter("id", QCP.equals,id);
+                            DynamicObject[] cardObjects = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
+                            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[0].getPkValue(), cardObjects[0].getDynamicObjectType().getName());
+                            //回写e管家实物清单字段
+                            cardInfo.set("nckd_storeplace", nckd_textfield42);
+                            SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                        }
                     }
                 }
 
@@ -99,7 +134,8 @@ public class BusProcessBillOpPlugin extends AbstractOperationServicePlugIn {
                 }
             } else if (StringUtils.equals(e.getOperationKey(),"delete")) {
                 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-                if ("D".equals(info.getString("nckd_detailtype"))) {
+                List<String> list = Arrays.asList("D", "E", "N");
+                if (list.contains(info.getString("nckd_detailtype"))) {
                     String type = info.getString("nckd_source_type");
                     Long nckd_mid_assert = info.getLong("nckd_mid_assert");
                     if (!StringUtils.isEmpty(type)) {
@@ -109,7 +145,8 @@ public class BusProcessBillOpPlugin extends AbstractOperationServicePlugIn {
                         for (int j = 0; j < midObjects.length; j++) {
                             DynamicObject midInfo = BusinessDataServiceHelper.loadSingle(midObjects[j].getPkValue(), midObjects[j].getDynamicObjectType().getName());
                             //回写e管家实物清单字段
-                            midInfo.set("nckd_flag", "0");//是否报废
+                            midInfo.set("nckd_flag", "0");
+                            midInfo.set("nckd_ywcl", 0);
                             SaveServiceHelper.save(new DynamicObject[]{midInfo});
                         }
                     }

+ 2 - 0
src/main/java/fi/fa/opplugin/RealCardBillOpPlugin.java

@@ -57,6 +57,7 @@ public class RealCardBillOpPlugin extends AbstractOperationServicePlugIn {
                                 for (int k = 0; k < htDynamicObjects.length; k++) {
                                     DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName());
                                     htInfo.set("nckd_real_card", info.getString("number"));
+                                    htInfo.set("nckd_real_card_id", info.getLong("id"));
                                     SaveServiceHelper.save(new DynamicObject[]{htInfo});
                                 }
                             }
@@ -99,6 +100,7 @@ public class RealCardBillOpPlugin extends AbstractOperationServicePlugIn {
                                 for (int k = 0; k < htDynamicObjects.length; k++) {
                                     DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName());
                                     htInfo.set("nckd_real_card", null);
+                                    htInfo.set("nckd_real_card_id", null);
                                     SaveServiceHelper.save(new DynamicObject[]{htInfo});
                                 }
                             }

+ 1 - 0
src/main/java/fi/fa/opplugin/RealCardF7OpPlugin.java

@@ -50,6 +50,7 @@ public class RealCardF7OpPlugin extends AbstractFormPlugin implements BeforeF7Se
             QFilter qFilter = new QFilter("nckd_orgfield.id", QCP.equals, assetunit.getLong("id"));
             // 表过滤条件
             ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
+            showParameter.setShowApproved(false);
             showParameter.getListFilterParameter().setFilter(qFilter);
         }
     }

+ 72 - 41
src/main/java/fi/fa/opplugin/utils/ChangeDataUtils.java

@@ -134,6 +134,8 @@ public class ChangeDataUtils {
         String billno = info.getString("number");//源单编号
         String dispatchType = info.getString("nckd_dispatch_type");//调拨类型
         String nckd_card_real_code = info.getString("nckd_card_number");
+        String nckd_storeplace = info.getString("nckd_storeplace");
+        String user = info.getString("nckd_used_user");
         String[] asset = nckd_card_real_code.split(",");
         if (nckd_card_real_code.isEmpty()) {
             return "单据" + billno + "未绑定资产信息,生成调拨单失败";
@@ -150,56 +152,75 @@ public class ChangeDataUtils {
 
         //组织相同则处理
         if (isSame) {
+            //经费系统实物卡片编码
+            List<String> cardNumberList = new ArrayList<>();
+            //经费系统实物卡片关联的e管家实物卡片编码
+            List<String> eCardNumberList = new ArrayList<>();
+            //numberList 中有而 eCardNumberList 中没有的元素
+            List<String> missingInECard = new ArrayList<>();
             String e_orgId = Arrays.stream(asset).map(item -> item.split(":")[1]).collect(Collectors.toList()).get(0);
             //查询e管家实物卡片清单
             QFilter filter = new QFilter("number", QCP.in,numberList);
-            DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
-            if (dynamicObjects.length == 0 || dynamicObjects.length != numberList.size()) {
+            DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id,nckd_card_real_code",new QFilter[] {filter});
+            //查询e管家实物卡片关联的经费系统实物卡片
+            for (DynamicObject eCard : dynamicObjects) {
+                String cardNumber = eCard.getString("nckd_card_real_code");
+                cardNumberList.add(cardNumber);
+            }
+            //再查经费系统实物卡片关联的e管家实物卡片
+            QFilter filter1 = new QFilter("nckd_card_real_code", QCP.in,cardNumberList);
+            DynamicObject[] edynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter1});
+            //获取e管家实物卡片编码
+            for (DynamicObject eCard : edynamicObjects) {
+                String number = eCard.getString("number");
+                eCardNumberList.add(number);
+            }
+            //对比中间表关联的e管家实物卡片和查询到的e管家实物卡片
+            if (eCardNumberList.size() > numberList.size()) {
                 return "单据"+billno+"绑定的资产有未同步至星瀚的数据,生成调拨单失败";
+            } else if (eCardNumberList.size() == numberList.size()) {
+                boolean areEqual = areListsEqual(numberList, eCardNumberList);
+                if (!areEqual) {
+                    return "单据"+billno+"绑定的资产与经费系统实物卡片绑定的资产不一致,生成调拨单失败";
+                }
             }else {
-                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType().getName());
-                //获取星瀚资产编码,查询关联的e管家实物卡片清单数量
-                String code  = cardInfo.getString("nckd_card_real_code");
-                if (StringUtils.isEmpty(code)) {
-                    //星瀚未生成实物卡片,更新实物卡片清单数据-查询组织对照表
-                    Long orgId = getOrg(e_orgId);
-                    if (ObjectUtils.isNotEmpty(orgId) && ("0".equals(dispatchType))) {
-                        //更新归属机构,归属部门,使用人
-                        for (int a = 0; a < dynamicObjects.length ; a++) {
-                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
-                            ecardInfoList.set("nckd_orgfield", orgId);
-                            ecardInfoList.set("nckd_dept", getOrg(info.getString("nckd_dept_in")));
-                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
-                        }
-                    }else if (ObjectUtils.isNotEmpty(orgId) && "1".equals(dispatchType)) {
-                        //更新是否报废为是
-                        for (int a = 0; a < dynamicObjects.length ; a++) {
-                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
-                            ecardInfoList.set("nckd_dept", getOrg(info.getString("nckd_dept_in")));
-                            ecardInfoList.set("nckd_use_name", info.getString("user"));
-                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
-                        }
+                // 检查 eCardNumberList 是否有 numberList 没有的元素
+                for (String eCard : eCardNumberList) {
+                    if (!numberList.contains(eCard)) {
+                        return "单据"+billno+"绑定的资产与经费系统实物卡片绑定的资产不一致,生成调拨单失败";
                     }
-                    else if (ObjectUtils.isNotEmpty(orgId) && "2".equals(dispatchType)) {
-                        //更新是否报废为是
-                        for (int a = 0; a < dynamicObjects.length ; a++) {
-                            DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
-                            ecardInfoList.set("nckd_discard",1);
-                            SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
-                        }
-                    } else {
-                        return "资产信息的组织在组织对照表中未查询到数据,生成调拨单失败";
+                }
+
+                for (String number : numberList) {
+                    if (!eCardNumberList.contains(number)) {
+                        missingInECard.add(number);
                     }
-                    return "星瀚系统未生成实物卡片,已更新e管家实物卡片清单";
+                }
+            }
+            //查询未匹配到的e管家实物卡片做更新
+            QFilter filter2 = new QFilter("number", QCP.in,missingInECard);
+            DynamicObject[] missingObject = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter2});
+            Long deptId = getOrg(info.getString("nckd_dept_in"));
+            Long orgId = getRelation(deptId);
+            for (DynamicObject object : missingObject) {
+                DynamicObject eCardInfo = BusinessDataServiceHelper.loadSingle(object.getPkValue(), object.getDynamicObjectType().getName());
+                if ("0".equals(dispatchType)) {
+                    //调出单更新组织部门人员存放地点
+                    eCardInfo.set("nckd_orgfield", orgId);
+                    eCardInfo.set("nckd_dept", deptId);
+                    eCardInfo.set("nckd_local", nckd_storeplace);
+                    eCardInfo.set("nckd_use_name", user);
+
+                } else if ("1".equals(dispatchType)) {
+                    //变更单更新部门人员存放地点
+                    eCardInfo.set("nckd_dept", deptId);
+                    eCardInfo.set("nckd_local", nckd_storeplace);
+                    eCardInfo.set("nckd_use_name", user);
                 }else {
-                    //查询e管家实物卡片清单
-                    QFilter qfilter = new QFilter("nckd_card_real_code", QCP.equals,code);
-                    DynamicObject[] cardObject = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {qfilter});
-                    //e管家推送的清单和星瀚系统保存的清单数量不一致,返回错误信息并且不能生成调拨单
-                    if (cardObject.length > 0 && asset.length != cardObject.length) {
-                        return "单据"+billno+"绑定的资产信息与星瀚实物卡片数量不一致,生成调拨单失败";
-                    }
+                    //更新是否报废为是
+                    eCardInfo.set("nckd_discard", 1);
                 }
+                SaveServiceHelper.save(new DynamicObject[]{eCardInfo});
             }
         }else {
             //资产信息组织不同
@@ -222,4 +243,14 @@ public class ChangeDataUtils {
         }
         return codeList;
     }
+
+    public static boolean areListsEqual(List<String> list1, List<String> list2) {
+        for (int i = 0; i < list1.size(); i++) {
+            if (!list1.get(i).equals(list2.get(i))) {
+                return false; // 发现元素不相同
+            }
+        }
+        return true; // 所有元素相同
+    }
+
 }

+ 6 - 6
src/main/java/kd/bos/login/thirdauth/app/ZSBGAuthtication.java

@@ -1,6 +1,6 @@
 package kd.bos.login.thirdauth.app;
 
-//import com.jxbank.sso.des.LockDesUtil;
+import com.jxbank.sso.des.LockDesUtil;
 import kd.bos.dc.api.model.Account;
 
 import javax.servlet.http.HttpServletRequest;
@@ -24,11 +24,11 @@ public class ZSBGAuthtication extends ThirdAppAuthtication{
         result.setSucceed(false);
         if(user!=null && !"".equals(user)){
             String token = request.getParameter("token");
-//            if (LockDesUtil.isTheRightDate(user, token)) {//调用第三方jar包方法验证token和user一致
-//                result.setUserType(UserType.WORKER_NUMBER);
-//                result.setSucceed(true);
-//                result.setUserFlag(user);
-//            }
+            if (LockDesUtil.isTheRightDate(user, token)) {//调用第三方jar包方法验证token和user一致
+                result.setUserType(UserType.WORKER_NUMBER);
+                result.setSucceed(true);
+                result.setUserFlag(user);
+            }
         }
 
         return result;

+ 17 - 10
src/main/java/kd/bos/newdevportal/table/TableListPlugin.java

@@ -1,5 +1,7 @@
 package kd.bos.newdevportal.table;
 
+import cfca.org.slf4j.Logger;
+import cfca.org.slf4j.LoggerFactory;
 import kd.bos.dataentity.utils.StringUtils;
 import kd.bos.db.DB;
 import kd.bos.db.DBRoute;
@@ -22,6 +24,7 @@ import java.util.stream.Collectors;
  * @version 1.0
  */
 public class TableListPlugin extends TableManagerListPlugin {
+    public static final Logger log = LoggerFactory.getLogger(TableListPlugin.class);
     public void registerListener(EventObject e) {
         super.registerListener(e);
         this.addItemClickListeners(new String[]{"toolbarap"});
@@ -36,21 +39,26 @@ public class TableListPlugin extends TableManagerListPlugin {
             // 统计成功和失败的次数
             int successCount = 0;
             int failureCount = 0;
-            for (ListSelectedRow detail : list) {
-                Object pk = detail.getPrimaryKeyValue();
+            for (int i = 0; i < list.size(); i++) {
+                Object pk = list.get(i).getPrimaryKeyValue();
                 String pkStr = String.valueOf(pk);
                 String[] info = pkStr.split("@@");
                 if (info.length < 2) {
                     failureCount++; // 如果数据不正确,增加失败计数
                     continue; // 跳过此条记录,继续处理下一条
                 }
-                //获取数据字典明细
-                String tablename = info[0];//表名称
-                String entityId = info[1];//id
-                String dbroute = EntityMetadataCache.getDataEntityType(MetadataDao.getEntityNumberById(info[1])).getDBRouteKey();
-                // 根据 dbroute 将数据分组
-                entityIdGroups.computeIfAbsent(dbroute, k -> new ArrayList<>()).add(pkStr);
+                try {
+                    //获取数据字典明细
+                    String tablename = info[0];//表名称
+                    String entityId = info[1];//id
+                    String dbroute = EntityMetadataCache.getDataEntityType(MetadataDao.getEntityNumberById(info[1])).getDBRouteKey();
+                    // 根据 dbroute 将数据分组
+                    entityIdGroups.computeIfAbsent(dbroute, k -> new ArrayList<>()).add(pkStr);
+                } catch (Exception e) {
+                    log.info(info[0] + "添加注释失败,错误原因:"+e.toString());
+                }
             }
+
             // 打印每个分组的 tablename
             for (Map.Entry<String, List<String >> entry : entityIdGroups.entrySet()) {
                 String dbroute = entry.getKey();
@@ -100,8 +108,7 @@ public class TableListPlugin extends TableManagerListPlugin {
                             DB.execute(route, sqlContent);
                             successCount++; // 增加成功计数
                         } catch (Exception e) {
-                            // 处理执行过程中可能出现的异常
-                            e.printStackTrace(); // 可以替换为日志记录
+                            log.info(tablename + "执行sql失败,错误原因:"+e.toString());
                             failureCount++; // 增加失败计数
                         }
                     }else {

+ 0 - 266
src/main/java/kd/imc/rim/ApiHttpUtils.java

@@ -1,266 +0,0 @@
-package kd.imc.rim;
-
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import javassist.Loader;
-import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.orm.query.QCP;
-import kd.bos.orm.query.QFilter;
-import kd.bos.script.annotations.KSObject;
-import kd.bos.servicehelper.BusinessDataServiceHelper;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Base64;
-import java.util.Date;
-import java.util.Iterator;
-
-
-@KSObject
-public class ApiHttpUtils {
-
-    public static String Posthttp(String url, String Params){
-        // 获得Http客户端
-        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
-        // 创建Post请求
-        //设置请求路径
-        HttpPost httpPost = new HttpPost(url);
-        httpPost.setHeader("Content-type", "application/json;charset=utf-8");
-        JSONObject object = new JSONObject();
-        JSONObject head = new JSONObject();
-        head.put("mesgtype","bills_crop_base64");
-        head.put("channelcode","JSX");
-        Date date = new Date();
-        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
-        String formatDate = dateFormat.format(date);
-        head.put("channeldate",formatDate);
-        LocalDateTime now = LocalDateTime.now();
-        DateTimeFormatter hHmmss = DateTimeFormatter.ofPattern("HHmmss");
-        DateTimeFormatter yyyyMMddHHmmssSSSS = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSSS");
-        String channeltime = now.format(hHmmss);
-        String hHmmssSSS1 = now.format(yyyyMMddHHmmssSSSS);
-        head.put("channeltime",channeltime);
-        head.put("channelserno",hHmmssSSS1);
-        head.put("bron","");
-        head.put("tellerno","");
-        head.put("reserve","");
-        head.put("dealcode","");
-        head.put("dealmsg","");
-        head.put("App_key","XYK_DEJ_Key");
-        head.put("APP_secret","XYK_DEJ_SECRET");
-        JSONObject body = new JSONObject();
-        body.put("file_base64",Params);
-        object.put("head",head);
-        object.put("body",body);
-        StringEntity entity = new StringEntity(object.toString(), ContentType.APPLICATION_JSON);
-        httpPost.setEntity(entity);
-        // 响应模型(发送post请求)
-        CloseableHttpResponse response = null;
-        try {
-            response = httpClient.execute(httpPost);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        // 从响应模型中获取响应实体
-        HttpEntity responseEntity = response.getEntity();
-        JSONObject jsonObject = new JSONObject();
-        if (responseEntity != null) {
-            try {
-                jsonObject = JSON.parseObject(EntityUtils.toString(response.getEntity()));
-                JSONArray jsonArray = jsonObject.getJSONObject("boby").getJSONArray("object_list");
-                return jsonArray.toJSONString();
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        // 释放资源
-        if (httpClient != null) {
-            try {
-                httpClient.close();
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        if (response != null) {
-            try {
-                response.close();
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return "";
-    }
-
-    public static String HttpPostExample () {
-        try { // 图片路径
-             String imagePath = "path_to_your_image_file.jpg";
-            // 将图片转换为Base64编码
-             byte[] imageBytes = java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(imagePath));
-            String base64Image = Base64.getEncoder().encodeToString(imageBytes);
-            // 创建URL对象
-            URL url = new URL("http://10.3.2.70:8115");
-             //打开HTTP连接
-             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-             connection.setRequestMethod("POST");
-             connection.setRequestProperty("Content-Type", "application/json");
-             connection.setRequestProperty("channelcode", "your_channel_code");
-             connection.setRequestProperty("channeldate", "your_channel_date");
-             connection.setDoOutput(true); // 将Base64编码的图片作为请求体发送
-             try (OutputStream os = connection.getOutputStream())
-             { os.write(base64Image.getBytes()); os.flush(); }
-             //检查响应代码
-             int responseCode = connection.getResponseCode();
-             if (responseCode == HttpURLConnection.HTTP_OK) {
-             System.out.println("Request was successful.");
-             } else { System.out.println("Request failed. Response Code: " + responseCode); }
-            // 关闭连接
-            connection.disconnect(); }
-             catch (Exception e) { e.printStackTrace(); }
-        return null;
-    }
-    public static String toFiledata(String Params) throws Exception {
-        //组装发票数据结构 !
-        JSONObject json = new JSONObject();//返回最外层json
-        json.put("errcode","0000");
-        json.put("traceId","");
-        json.put("description","操作成功");
-        JSONObject data = new JSONObject();//数据层json
-        json.put("batchNo","");
-        JSONArray recoginitionData = new JSONArray();//数据层数组
-        if("".equals(Params)){return null;};
-        JSONArray objects = JSONArray.parseArray(Params);
-        for(int a=0;a<objects.size();a++){
-            Object object = objects.get(a);
-            JSONObject respenjson = (JSONObject) JSONObject.toJSON(object);
-            String type_description = respenjson.getString("type_description");//增值税电子普通发票  行程单  通用定额发票 火车票
-            if("".equals(type_description)){return null;};
-            JSONArray itemList = respenjson.getJSONArray("item_list");
-            JSONObject item_list = new JSONObject();
-            for (int i=0;i<itemList.size();i++){
-                Object obj = itemList.get(i);
-                JSONObject respenjsons = (JSONObject) JSONObject.toJSON(obj);
-                String key = respenjsons.get("key").toString();// 获得key
-                String value = respenjsons.get("value").toString();// 获得value
-                item_list.put(key,value);
-            }
-            if("行程单".equals(type_description)){
-                JSONArray flight_data_list = respenjson.getJSONArray("flight_data_list");
-                for (int i=0;i<flight_data_list.size();i++){
-                    Object obj = flight_data_list.get(i);
-                    JSONArray xcobj = JSONArray.parseArray(obj.toString());
-                    for(int c=0;c<xcobj.size();c++){
-                        Object objc = flight_data_list.get(c);
-                        JSONObject respenjsons = (JSONObject) JSONObject.toJSON(objc);
-                        String key = respenjsons.get("key").toString();// 获得key
-                        String value = respenjsons.get("value").toString();// 获得value
-                        item_list.put(key,value);
-                    }
-                }
-            }
-                QFilter nckd_File = new QFilter("nckd_filetype", QCP.equals, type_description);
-                DynamicObject nckd_FileData = BusinessDataServiceHelper.loadSingle("nckd_filedataconvert", "id,nckd_filetype", new QFilter[]{nckd_File});
-                JSONObject Filedata = FileData(nckd_FileData,item_list);
-                recoginitionData.add(Filedata);
-        }
-        data.put("recoginitionData",recoginitionData);
-        json.put("data",data);
-        return json.toString();
-    }
-
-    //增值税电子普通发票
-    public static JSONObject FileData(DynamicObject nckd_FileData,JSONObject item_list) throws Exception {
-        JSONObject fileObj = new JSONObject();//实际数据json
-        for (DynamicObject entryentity : nckd_FileData.getDynamicObjectCollection("nckd_treeentryentity")) {
-            String nckd_keingde = entryentity.getString("nckd_keingde");
-            String nckd_ocr = entryentity.getString("nckd_ocr");
-            String nckd_acquiesce = entryentity.getString("nckd_acquiesce");
-            if(!"".equals(nckd_ocr) && nckd_ocr!=null){
-                fileObj.put(nckd_keingde,item_list.getString(nckd_ocr));
-            }else if(!"".equals(nckd_acquiesce) && nckd_ocr!=null){
-                fileObj.put(nckd_keingde,nckd_acquiesce);
-            }else {
-                fileObj.put(nckd_keingde,"");
-            }
-        }
-        return fileObj;
-    }
-    //机票行程单
-    public static String jpxcd(JSONObject item_list) throws Exception {
-
-        return null;
-    }
-    //火车票
-    public static String hcp(JSONObject item_list) throws Exception {
-        //组装发票数据结构 !
-        JSONObject json = new JSONObject();//返回最外层json
-        json.put("errcode","0000");
-        json.put("traceId","");
-        json.put("description","操作成功");
-        JSONObject data = new JSONObject();//数据层json
-        json.put("batchNo","");
-        JSONArray recoginitionData = new JSONArray();//数据层数组
-        JSONObject fileObj = new JSONObject();//实际数据json
-        fileObj.put("canBeDeduction","");//0
-        fileObj.put("stationGetOn",item_list.getString("departure_station"));//出发站  ocr字段:departure_station
-        fileObj.put("passengerName",item_list.getString("passenger_name"));//乘客 ocr字段:passenger_name
-        fileObj.put("signStatus","");//0
-        fileObj.put("downloadUrl","");//下载地址链接
-        fileObj.put("fileHash","");//文件哈希值
-        fileObj.put("seatNumber",item_list.getString("seat_number"));//座位 ocr字段:seat_number
-        fileObj.put("localUrl","");//预览链接
-        fileObj.put("trainNum",item_list.getString("train_number"));//车次编号  ocr字段:train_number
-        fileObj.put("trainTime","");//
-        fileObj.put("stationGetOff",item_list.getString("arrival_station"));//目的地 ocr字段:arrival_station
-        fileObj.put("deductionStatus",1);
-        fileObj.put("invoiceType","9");//发票类型
-        fileObj.put("isRepeat",false);//是否重复
-        fileObj.put("pixel","");//未知
-        fileObj.put("oriImageSize","");//未知
-        fileObj.put("pdfToImgSnapshotUrl","");//“”
-        fileObj.put("orientation","0");//null
-        fileObj.put("batchNo","");//
-        fileObj.put("warningCode","1");//
-        fileObj.put("originalState",0);//
-        fileObj.put("originalUrl","");//""
-        fileObj.put("invoiceDate",item_list.getString("departure_date"));//乘车日期  ocr字段:departure_date
-        fileObj.put("serialNo","");//
-        fileObj.put("seat",item_list.getString("class"));//几等座 ocr字段:class
-        fileObj.put("totalAmount",item_list.getString("price"));//票价  ocr字段:price
-        fileObj.put("taxRate","");//
-        fileObj.put("customerIdentityNum",item_list.getString("passenger_id"));//身份证 ocr字段 passenger_id
-        fileObj.put("oriOrientation","0");//
-        fileObj.put("oriRegion","0");//
-        fileObj.put("rotationAngle","");//未知字段
-        fileObj.put("snapshotUrl","");//
-        fileObj.put("imageSerialNo","");//未知字段
-        fileObj.put("printingSequenceNo",item_list.getString("number"));//发票号码 ocr字段 number
-        fileObj.put("recognitionSerialNo","");//
-        fileObj.put("businessType",1);//未知字段
-        fileObj.put("region","");//
-        //值拼接完成后开始set数据结构e
-        recoginitionData.add(fileObj);
-        data.put("recoginitionData",recoginitionData);
-        json.put("data",data);
-        return json.toJSONString();
-    }
-    //通用定额发票
-    public static String tydefp(JSONObject item_list) throws Exception {
-
-        return null;
-    }
-}

+ 0 - 205
src/main/java/kd/imc/rim/AwsRecognitionServiceEx.java

@@ -1,205 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package kd.imc.rim;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.google.common.collect.Maps;
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import kd.bos.dataentity.resource.ResManager;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.util.StringUtils;
-import kd.imc.rim.common.constant.InputInvoiceTypeEnum;
-import kd.imc.rim.common.invoice.model.ConvertFieldUtil;
-import kd.imc.rim.common.invoice.query.convert.impl.AirConvertService;
-import kd.imc.rim.common.invoice.recognitionnew.RecognitionService;
-import kd.imc.rim.common.invoice.recognitionnew.model.RecognitionParam;
-import kd.imc.rim.common.invoice.recognitionnew.model.RecognitionResult;
-import kd.imc.rim.common.message.exception.MsgException;
-import kd.imc.rim.utils.FileOutputStreamExample;
-import org.apache.commons.compress.utils.Lists;
-
-public class AwsRecognitionServiceEx implements RecognitionService {
-    private static Log logger = LogFactory.getLog(AwsRecognitionServiceEx.class);
-    private static final int connectionTimeout = 3000;
-    private static final int readTimeout = 60000;
-
-    public AwsRecognitionServiceEx() {
-    }
-
-    public RecognitionResult recognitionInvoice(RecognitionParam recognitionParam) {
-        RecognitionResult recognitionResult = this.getResultFromDb(recognitionParam);
-        if (recognitionResult == null) {
-            recognitionResult = this.getResultFromAws(recognitionParam);
-        }
-
-        return recognitionResult;
-    }
-
-    private RecognitionResult getResultFromAws(RecognitionParam recognitionParam) {
-        RecognitionResult recognitionResult = new RecognitionResult();
-        Map<String, Object> extMap = recognitionParam.getExtMap();
-        Map<String, Object> bodyMap = Maps.newHashMap();
-        bodyMap.put("eid", extMap.get("eid") + "");
-        bodyMap.put("taxNo", extMap.get("taxNo") + "");
-        bodyMap.put("recogType", recognitionParam.getRecogType());
-        bodyMap.put("overseaAppCode", recognitionParam.getAppCode());
-        String fileUrl = recognitionParam.getFileUrl();
-        String imgStrToBase64 = FileOutputStreamExample.getImgStrToBase64(fileUrl);
-        try {
-            String serviceType = this.getServiceType(recognitionParam);
-            Map<String, String> headers = Maps.newHashMap();
-            boolean overseaFlag = false;
-            if (!"".equals(imgStrToBase64)) {
-                long start = System.currentTimeMillis();
-                String url = "http://10.3.2.70:8115/cci_ai/service/v1/receipt_crop_and_recog";
-                String valueFileName;
-                ByteArrayInputStream valueInputStream = recognitionParam.getFileByteArrayInputStream();
-                valueFileName = recognitionParam.getFileName();
-                int retryTimes = 1;
-                for(int times = 1; times <= retryTimes; ++times) {
-                    logger.info("aws识别bodyMap:{}", bodyMap);
-                    String result = ApiHttpUtils.Posthttp(url, imgStrToBase64);
-                    result=ApiHttpUtils.toFiledata(result);
-                    logger.info("aws识别接口返回结果{}:{}", times, result);
-                    boolean reTry = false;
-                    if (!StringUtils.isNotEmpty(result)) {
-                        break;
-                    }
-
-                    JSONArray recognitionArray = this.getRecoginitionData(recognitionResult, result, overseaFlag);
-                    if (recognitionArray == null) {
-                        break;
-                    }
-
-                    boolean saveFlag = true;
-
-                    for(int i = 0; i < recognitionArray.size(); ++i) {
-                        JSONObject invoiceInfo = recognitionArray.getJSONObject(i);
-                        if ("1".equals(invoiceInfo.getString("defaultOther"))) {
-                            saveFlag = false;
-                            if (times < retryTimes) {
-                                reTry = true;
-                                throw new MsgException("0002", ResManager.loadKDString("aws识别异常", "AwsRecognitionService_0", "imc-rim-common", new Object[0]));
-                            }
-                        }
-
-                        this.setResultValue(invoiceInfo);
-                    }
-
-                    if (!reTry) {
-                        if (saveFlag) {
-                            this.saveRecognition(recognitionParam, serviceType, result, System.currentTimeMillis() - start);
-                        }
-
-                        recognitionResult.setData(this.convertRecognition(recognitionArray));
-                        break;
-                    }
-                }
-            } else {
-                recognitionResult.setData(new ArrayList(1));
-            }
-
-            return recognitionResult;
-        } catch (Throwable var22) {
-            logger.error("AwsRecognitionService exception:", var22);
-            if (var22 instanceof MsgException) {
-                throw new MsgException(((MsgException)var22).getErrorCode(), ((MsgException)var22).getErrorMsg());
-            } else {
-                throw new MsgException("0001", ResManager.loadKDString("aws识别异常", "AwsRecognitionService_0", "imc-rim-common", new Object[0]));
-            }
-        }
-    }
-
-    private RecognitionResult getResultFromDb(RecognitionParam recognitionParam) {
-        RecognitionResult recognitionResult = new RecognitionResult();
-        String serviceType = this.getServiceType(recognitionParam);
-        String resultStr = this.getRecognitionResultFromDb(recognitionParam, serviceType);
-        if (StringUtils.isEmpty(resultStr)) {
-            return null;
-        } else {
-            boolean overseaFlag = false;
-            if (!resultStr.contains("recoginitionData")) {
-                overseaFlag = true;
-            }
-
-            JSONArray recognitionArray = this.getRecoginitionData(recognitionResult, resultStr, overseaFlag);
-            if (recognitionArray == null) {
-                return null;
-            } else {
-                for(int i = 0; i < recognitionArray.size(); ++i) {
-                    JSONObject invoiceInfo = recognitionArray.getJSONObject(i);
-                    this.setResultValue(invoiceInfo);
-                }
-
-                recognitionResult.setData(this.convertRecognition(recognitionArray));
-                return recognitionResult;
-            }
-        }
-    }
-
-    private JSONArray getRecoginitionData(RecognitionResult recognitionResult, String resultStr, boolean overseaFlag) {
-        if (StringUtils.isNotEmpty(resultStr)) {
-            JSONObject recognitionJson = JSONObject.parseObject(resultStr);
-            recognitionResult.setErrcode(recognitionJson.getString("errcode"));
-            recognitionResult.setDescription(recognitionJson.getString("description"));
-
-            try {
-                if (overseaFlag) {
-                    JSONArray data = recognitionJson.getJSONArray("data");
-
-                    for(int i = 0; i < data.size(); ++i) {
-                        JSONObject overseaInfo = data.getJSONObject(i);
-                        overseaInfo.put("invoiceType", InputInvoiceTypeEnum.OVERSEA_INVOICE.getAwsType());
-                    }
-
-                    return data;
-                }
-
-                JSONObject data = recognitionJson.getJSONObject("data");
-                if (data != null) {
-                    return data.getJSONArray("recoginitionData");
-                }
-            } catch (Exception var8) {
-                logger.info("getRecoginitionData exception:", var8);
-            }
-        }
-
-        return null;
-    }
-
-    private void setResultValue(JSONObject invoiceInfo) {
-        invoiceInfo.put("snapshotUrl", "");
-        invoiceInfo.put("kdcloudUrl", "");
-        invoiceInfo.put("downloadUrl", "");
-        Long invoiceType = InputInvoiceTypeEnum.getInvoiceTypeByAwsType(invoiceInfo.getString("invoiceType"));
-        invoiceInfo.put("invoiceType", invoiceType);
-        if (InputInvoiceTypeEnum.AIR_INVOICE.getCode().equals(invoiceType)) {
-            JSONArray items = invoiceInfo.getJSONArray("items");
-            if (items != null && items.size() > 0) {
-                JSONObject firstOne = items.getJSONObject(0);
-                invoiceInfo.put("seatGrade", firstOne.getString("seatGrade"));
-                invoiceInfo.put("flightNum", firstOne.getString("flightNum"));
-                invoiceInfo.put("seatGradeName", AirConvertService.convertSeatName(firstOne.getString("seatGrade")));
-            }
-        }
-
-    }
-
-    private List<Object> convertRecognition(JSONArray recognitionArray) {
-        List<Object> entityList = Lists.newArrayList();
-        ConvertFieldUtil.convertRecognitionEntity(entityList, recognitionArray, new String[]{"items"});
-        return entityList;
-    }
-
-    public String getServiceType(RecognitionParam recognitionParam) {
-        return "aws" + recognitionParam.getRecogType();
-    }
-}

+ 0 - 3226
src/main/java/kd/imc/rim/FpzsMainPluginEx.java

@@ -1,3226 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package kd.imc.rim;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.google.common.collect.Maps;
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.EventObject;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import kd.bos.cache.CacheFactory;
-import kd.bos.cache.TempFileCache;
-import kd.bos.context.RequestContext;
-import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.entity.LocaleString;
-import kd.bos.dataentity.metadata.IDataEntityProperty;
-import kd.bos.dataentity.resource.ResManager;
-import kd.bos.dataentity.serialization.SerializationUtils;
-import kd.bos.dataentity.utils.ObjectUtils;
-import kd.bos.dlock.DLock;
-import kd.bos.entity.EntityMetadataCache;
-import kd.bos.entity.MainEntityType;
-import kd.bos.entity.datamodel.ListSelectedRowCollection;
-import kd.bos.entity.datamodel.events.PropertyChangedArgs;
-import kd.bos.ext.form.control.CustomControl;
-import kd.bos.fileservice.FileItem;
-import kd.bos.fileservice.FileServiceFactory;
-import kd.bos.fileservice.enums.PreviewParams;
-import kd.bos.form.CloseCallBack;
-import kd.bos.form.ConfirmCallBackListener;
-import kd.bos.form.ConfirmTypes;
-import kd.bos.form.FormShowParameter;
-import kd.bos.form.IClientViewProxy;
-import kd.bos.form.IPageCache;
-import kd.bos.form.MessageBoxOptions;
-import kd.bos.form.MessageBoxResult;
-import kd.bos.form.ShowFormHelper;
-import kd.bos.form.ShowType;
-import kd.bos.form.cardentry.CardEntry;
-import kd.bos.form.container.Tab;
-import kd.bos.form.control.Button;
-import kd.bos.form.control.Control;
-import kd.bos.form.control.EntryGrid;
-import kd.bos.form.control.Label;
-import kd.bos.form.control.Toolbar;
-import kd.bos.form.control.events.ItemClickEvent;
-import kd.bos.form.control.events.RowClickEvent;
-import kd.bos.form.control.events.RowClickEventListener;
-import kd.bos.form.control.events.TabSelectEvent;
-import kd.bos.form.control.events.TabSelectListener;
-import kd.bos.form.control.events.UploadEvent;
-import kd.bos.form.control.events.UploadListener;
-import kd.bos.form.events.AfterDoOperationEventArgs;
-import kd.bos.form.events.BeforeClosedEvent;
-import kd.bos.form.events.ClosedCallBackEvent;
-import kd.bos.form.events.CustomEventArgs;
-import kd.bos.form.events.MessageBoxClosedEvent;
-import kd.bos.list.ListFilterParameter;
-import kd.bos.list.ListShowParameter;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.msgjet.MsgSendFactory;
-import kd.bos.mvc.cache.PageCache;
-import kd.bos.mvc.form.ClientViewProxy;
-import kd.bos.orm.query.QFilter;
-import kd.bos.orm.util.CollectionUtils;
-import kd.bos.servicehelper.BusinessDataServiceHelper;
-import kd.bos.servicehelper.QueryServiceHelper;
-import kd.bos.servicehelper.operation.DeleteServiceHelper;
-import kd.bos.servicehelper.operation.SaveServiceHelper;
-import kd.bos.url.UrlService;
-import kd.imc.rim.common.constant.AttachConstant;
-import kd.imc.rim.common.constant.CollectTypeEnum;
-import kd.imc.rim.common.constant.FpzsConstant;
-import kd.imc.rim.common.constant.InputInvoiceTypeEnum;
-import kd.imc.rim.common.helper.ExcelHelper;
-import kd.imc.rim.common.helper.ImcSaveServiceHelper;
-import kd.imc.rim.common.helper.RecognitionCheckHelper;
-import kd.imc.rim.common.invoice.fpzs.FpzsAwsService;
-import kd.imc.rim.common.invoice.fpzs.FpzsMainService;
-import kd.imc.rim.common.invoice.query.AttachQueryService;
-import kd.imc.rim.common.invoice.query.InvoiceQueryService;
-import kd.imc.rim.common.invoice.query.convert.impl.AirConvertService;
-import kd.imc.rim.common.invoice.recognition.impl.RecognitionCheckTask;
-import kd.imc.rim.common.invoice.save.InvoiceSaveResult;
-import kd.imc.rim.common.invoice.save.InvoiceSaveService;
-import kd.imc.rim.common.invoice.verify.VerifyService;
-import kd.imc.rim.common.invoice.verify.VerifyStatisticsService;
-import kd.imc.rim.common.invoice.verify.VerifyUtil;
-import kd.imc.rim.common.license.LicenseFormPlugin;
-import kd.imc.rim.common.message.exception.MsgException;
-import kd.imc.rim.common.service.DialogService;
-import kd.imc.rim.common.service.InvoiceAutoFillBillService;
-import kd.imc.rim.common.service.InvoiceLog;
-import kd.imc.rim.common.utils.BigDecimalUtil;
-import kd.imc.rim.common.utils.CacheHelper;
-import kd.imc.rim.common.utils.DynamicObjectUtil;
-import kd.imc.rim.common.utils.FileUploadUtils;
-import kd.imc.rim.common.utils.FileUtils;
-import kd.imc.rim.common.utils.InvoiceConfigUtils;
-import kd.imc.rim.common.utils.InvoiceConvertUtils;
-import kd.imc.rim.common.utils.RimConfigUtils;
-import kd.imc.rim.common.utils.UUID;
-import kd.imc.rim.common.utils.itextpdf.UrlServiceUtils;
-import kd.imc.rim.formplugin.fpzs.FpzsAttachService;
-import kd.imc.rim.formplugin.fpzs.operate.FpzsOperateService;
-import org.apache.commons.compress.utils.IOUtils;
-import org.apache.commons.compress.utils.Lists;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.Pair;
-
-public class FpzsMainPluginEx extends LicenseFormPlugin implements RowClickEventListener, UploadListener, TabSelectListener {
-    private static Log logger = LogFactory.getLog(FpzsMainPluginEx.class);
-    private Map<String, String> traceMap;
-    private static final String TEMPLATE_DIR = "templates";
-    private static final String TEMPLATE_NAME = "发票查验模板.xlsx";
-    private static final String ATTACH_PDF_ICON_NAME = "fpy_icon_pdf.png";
-    private static final String ATTACH_PDF_ICON_URL = "/rim/attach/fpy_icon_pdf.png";
-    private static final String OPERATE_ENTRY = "operate_entry";
-    private static final String OPERATE_ENTRY_ATTACH = "operate_entry_attach";
-    private static final String OPERATE_TYPE = "operate_type";
-    private static final String FLEX_INIT = "flex_init";
-    private static final String ALL_INVOICE = "all_invoice";
-    private static final String ADVCONAP_IMPORT = "advconap_import";
-    private static final String ADVCONAP_ERROR = "advconap_error";
-    private static final String ATTACH_PANNEL = "attach_panel";
-    private static final String ADVCONAP_ATTACH = "advconap_attach";
-    private static final String ATTACH_GRID_ENTRY = "attach_grid_entry";
-    private static final String ATTACH_CARD_ENTRY = "attach_card_entry";
-    private static final String TOOLBARAP_IMPORT = "toolbarap_import";
-    private static final String TOOLBARAP_ERROR = "toolbarap_error";
-    private static final String TOOLBARAP_ATTACH = "toolbarap_attach";
-    private static final String DELETE_IMPORT = "del_import";
-    private static final String EDIT_CLASS = "edit_class";
-    private static final String DELETE_ERROR = "del_error";
-    private static final String DELETE_ATTACH = "del_attach";
-    private static final String CLEAR_IMPORT = "clear_import";
-    private static final String CLEAR_ERROR = "clear_error";
-    private static final String CLEAR_ATTACH = "clear_attach";
-    private static final String CHOOSE_ATTACH_TYPE = "choose_attach_type";
-    private static final String ADD_ATTACH = "add_attach";
-    private static final String UPLOAD_INVOICE_ATTACH = "upload_invoice_attach";
-    private static final String UPLOAD_INVOICE_ATTACH2 = "upload_invoice_attach2";
-    private static final String INVOICE_CARD_ENTRY = "invoice_card_entry";
-    private static final String ERROR_INVOICE_CARD_ENTRY = "error_invoice_card_entry";
-    private static final String RADIO_FLEX = "radio_flex";
-    private static final String INVOICE_SWITCH_FLEX = "flexpanelap131";
-    private static final String RADIO_GROUP = "radiogroup";
-    private static final String EXCEL_DOWNLOAD = "excel_download";
-    private static final String BTN_IMPORT = "btn_import";
-    private static final String TAB_INVOICE = "tab_invoice";
-    private static final String TAB_ATTACH = "tab_attach";
-    private static final String TAB_OVERSEA = "tab_oversea";
-    private static final String LIST_ATTACH_BUTTON = "list_attach_button";
-    private static final String CARD_ATTACH_BUTTON = "pic_attach_button";
-    private static final String LIST_INVOICE_BUTTON = "list_invoice_button";
-    private static final String CARD_INVOICE_BUTTON = "card_invoice_button";
-    private static final String ATTACH_EDIT_BUTTON = "attach_edit_button";
-    private static final List<String> IMPORT_MSG_LIST = new ArrayList(Arrays.asList("import_filter_msg", "import_red_msg", "import_yellow_msg"));
-    private static final List<String> ERROR_MSG_LIST = new ArrayList(Arrays.asList("error_filter_msg", "error_red_msg", "error_yellow_msg"));
-    private static final String PAGE_COMPANY_INVOICE = "rim_fpzs_company_invoice";
-    private static final String ERROR_INVOICE_LIST = "error";
-    private static final String IMPORT_INVOICE_LIST = "import";
-    private static final String format = "###,##0.00";
-
-    public FpzsMainPluginEx() {
-    }
-
-    public void beforeClosed(BeforeClosedEvent e) {
-        String timeCache = "PollAwsTime" + this.getView().getPageId();
-        CacheHelper.remove(timeCache);
-        JSONObject customParam = FpzsMainService.cacheCustomParam(this);
-        String billType = customParam.getString("billType");
-        if ("personTicket".equals(billType)) {
-            this.doVerfiySave();
-        }
-
-    }
-
-    public void initialize() {
-        EntryGrid entryGrid = (EntryGrid)this.getView().getControl("operate_entry");
-        entryGrid.addRowClickListener(this);
-        EntryGrid entryGridAttach = (EntryGrid)this.getView().getControl("operate_entry_attach");
-        entryGridAttach.addRowClickListener(this);
-        Button excelDownload = (Button)this.getView().getControl("excel_download");
-        excelDownload.addClickListener(this);
-        Button importButton = (Button)this.getView().getControl("btn_import");
-        importButton.addClickListener(this);
-        Button uploadFile = (Button)this.getView().getControl("upload_file");
-        uploadFile.addUploadListener(this);
-        Button uploadInvoiceAttach = (Button)this.getView().getControl("upload_invoice_attach");
-        uploadInvoiceAttach.addUploadListener(this);
-        Button uploadInvoiceAttachUnimport = (Button)this.getView().getControl("upload_invoice_attach2");
-        uploadInvoiceAttachUnimport.addUploadListener(this);
-    }
-
-    public void registerListener(EventObject e) {
-        Tab tab = (Tab)this.getControl("tabap");
-        tab.addTabSelectListener(this);
-        this.addItemClickListeners(new String[]{"toolbarap_import", "toolbarap_error", "toolbarap_attach", "toolbarap_submit"});
-        this.addClickListeners(new String[]{"list_attach_button", "pic_attach_button", "list_invoice_button", "card_invoice_button", "buttonap"});
-        Toolbar attachLabel = (Toolbar)this.getControl("toolbarap_attach");
-        if (attachLabel != null) {
-            attachLabel.addUploadListener(this);
-        }
-
-    }
-
-    public void upload(UploadEvent evt) {
-        IPageCache pageCache = new PageCache(this.getView().getPageId());
-        String serialNo = pageCache.get("add_attach");
-        if (!StringUtils.isEmpty(serialNo)) {
-            pageCache.remove(serialNo);
-        }
-
-    }
-
-    public void afterUpload(UploadEvent evt) {
-        String callbackKey = evt.getCallbackKey();
-        if (callbackKey != null && ("add_attach".equals(callbackKey) || callbackKey.startsWith("upload_invoice_attach"))) {
-            ;
-        }
-    }
-
-    public void click(EventObject evt) {
-        Control properties = (Control)evt.getSource();
-        String clickKey = properties.getKey();
-        if ("excel_download".equals(clickKey)) {
-            if (InvoiceConfigUtils.isZhCn()) {
-                ExcelHelper.downloadTemplate(this, "templates", "发票查验模板.xlsx");
-            } else {
-                ExcelHelper.downloadTemplate(this, "templates", "invoicecheck.xlsx");
-            }
-        } else if ("buttonap".equals(clickKey)) {
-            this.checkClose();
-        } else if ("btn_import".equals(clickKey)) {
-            this.submitToBill();
-        } else if ("list_attach_button".equals(clickKey)) {
-            this.getView().getPageCache().remove("attach_list_model");
-            this.showAttachModel();
-        } else if ("pic_attach_button".equals(clickKey)) {
-            this.getView().getPageCache().put("attach_list_model", "card");
-            this.showAttachModel();
-        } else if ("list_invoice_button".equals(clickKey)) {
-            this.getView().getPageCache().remove("invoice_list_model");
-            this.showInvoiceModel();
-        } else if ("card_invoice_button".equals(clickKey)) {
-            this.getView().getPageCache().put("invoice_list_model", "card");
-            this.showInvoiceModel();
-        } else if ("add_attach".equals(properties.getKey())) {
-            this.getPageCache().remove("add_attach");
-            this.showAttachUpload();
-        }
-
-    }
-
-    private void checkClose() {
-        String verifySaveFlag = RimConfigUtils.getConfig("verify_save");
-        if (!"0".equals(verifySaveFlag)) {
-            this.getView().close();
-        } else {
-            JSONObject dataJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-            JSONArray invoiceData = new JSONArray();
-            Iterator<String> iterator = dataJson.keySet().iterator();
-
-            while(iterator.hasNext()) {
-                String key = (String)iterator.next();
-                JSONObject invoice = dataJson.getJSONObject(key);
-                if (!FpzsMainService.isFilter(invoice) && !invoice.isEmpty()) {
-                    invoiceData.add(invoice);
-                }
-            }
-
-            if (invoiceData.isEmpty()) {
-                this.getView().showTipNotification(ResManager.loadKDString("不存在符合导入的发票,请检查采集的发票是否合规", "FpzsMainPlugin_164", "imc-rim-formplugin", new Object[0]), 3000);
-            } else {
-                this.getView().showTipNotification(ResManager.loadKDString("操作成功", "ClassInvoiceService_4", "imc-rim-formplugin", new Object[0]), 3000);
-                this.getView().close();
-            }
-        }
-    }
-
-    private void doVerfiySave() {
-        String verifySaveFlag = RimConfigUtils.getConfig("verify_save");
-        boolean checkFlag = "0".equals(verifySaveFlag);
-        if (checkFlag) {
-            JSONObject dataJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-            Iterator<String> iterator = dataJson.keySet().iterator();
-            Long rimUser = FpzsMainService.getRimUser(FpzsMainService.getCustomParam(this));
-
-            while(iterator.hasNext()) {
-                String key = (String)iterator.next();
-                JSONObject invoice = dataJson.getJSONObject(key);
-                String errorLevel = invoice.getString("errorLevel");
-                String invoiceType = invoice.getString("invoiceType");
-                String serialNo = invoice.getString("serialNo");
-                VerifyUtil.updateDataStatus(errorLevel, serialNo, InputInvoiceTypeEnum.getInvoiceTypeByAwsType(invoiceType), Boolean.TRUE, rimUser);
-            }
-        }
-
-    }
-
-    private void submitToBill() {
-        Map<String, Object> param = FpzsMainService.getCustomParam(this);
-        Object linkKey = param.get("linkKey");
-        int attachTotal = this.getModel().getEntryRowCount("attach_grid_entry");
-        JSONObject returnData = new JSONObject();
-        JSONArray attachData = new JSONArray();
-        String billId = "billId";
-        if (!CollectionUtils.isEmpty(param)) {
-            billId = (String)param.get("billId");
-        }
-
-        AttachQueryService attachQueryService = new AttachQueryService();
-        String entityId = (String)param.get("entityId");
-        String resource = (String)param.get("resource");
-        JSONArray attachCacheArray = new JSONArray();
-
-        String key;
-        for(int i = 0; i < attachTotal; ++i) {
-            String serialNo = (String)this.getModel().getValue("serial_no3", i);
-            String attachId = (String)this.getModel().getValue("attachid", i);
-            JSONObject attach = new JSONObject(true);
-            attach.put("serialNo", serialNo);
-            attach.put("attachId", attachId);
-            attach.put("attachType", (String)this.getModel().getValue("attach_type", i));
-            String attachName = (String)this.getModel().getValue("attach_name", i);
-            attach.put("attachName", attachName);
-            key = (String)this.getModel().getValue("file_extension", i);
-            attach.put("fileExtension", key);
-            attach.put("originalFileName", attachName + '.' + key);
-            attach.put("attachNo", (String)this.getModel().getValue("attach_no", i));
-            attach.put("attachUrl", (String)this.getModel().getValue("attach_path", i));
-            attach.put("remark", (String)this.getModel().getValue("attach_remark", i));
-            attach.put("attachIcon", (String)this.getModel().getValue("attach_icon", i));
-            attach.put("uploadDate", this.getModel().getValue("upload_date", i));
-            Object pkValue = this.getModel().getValue("attach_category_grid");
-            Object pkValue2 = this.getModel().getValue("attach_categoryid");
-            attach.put("expenseId", billId);
-            DynamicObject attachCategory = (DynamicObject)this.getModel().getValue("attach_category_grid", i);
-            if (attachCategory != null) {
-                attach.put("attachCategory", attachCategory.getLong("id"));
-            }
-
-            attachCacheArray.add(attach);
-            JSONObject dataJson = new JSONObject();
-            dataJson.put("serialNo", serialNo);
-            dataJson.put("attachId", attachId);
-            dataJson.put("attachUrl", (String)this.getModel().getValue("attach_path", i));
-            dataJson.put("attachType", (String)this.getModel().getValue("attach_type", i));
-            dataJson.put("attachNo", (String)this.getModel().getValue("attach_no", i));
-            dataJson.put("attachName", (String)this.getModel().getValue("attach_name", i));
-            dataJson.put("remark", (String)this.getModel().getValue("attach_remark", i));
-            dataJson.put("attachSize", this.getModel().getValue("attach_size", i));
-            dataJson.put("attachIcon", this.getModel().getValue("attach_icon", i));
-            dataJson.put("uploadDate", this.getModel().getValue("upload_date", i));
-            attachData.add(dataJson);
-        }
-
-        attachQueryService.addFpzsAttach(billId, entityId, resource, attachCacheArray);
-        returnData.put("attachData", attachData);
-        JSONObject dataJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-        JSONArray invoiceData = new JSONArray();
-        JSONArray invoiceVerifyData = new JSONArray();
-        Iterator<String> iterator = dataJson.keySet().iterator();
-        Long rimUser = FpzsMainService.getRimUser(param);
-
-        while(iterator.hasNext()) {
-            key = (String)iterator.next();
-            JSONObject invoice = dataJson.getJSONObject(key);
-            invoiceVerifyData.add(invoice);
-            String errorLevel = invoice.getString("errorLevel");
-            String invoiceType = invoice.getString("invoiceType");
-            String serialNo = invoice.getString("serialNo");
-            VerifyUtil.updateDataStatus(errorLevel, serialNo, InputInvoiceTypeEnum.getInvoiceTypeByAwsType(invoiceType), Boolean.TRUE, rimUser);
-            if (!FpzsMainService.isFilter(invoice) && !invoice.isEmpty()) {
-                if (!"expense_pc".equals(param.get("resource"))) {
-                    invoice.remove("validateMessage_html");
-                }
-
-                invoiceData.add(invoice);
-            }
-        }
-
-        this.saveVerifyResult(invoiceVerifyData);
-        if (attachTotal < 1 && invoiceData.isEmpty()) {
-            this.getView().showTipNotification(ResManager.loadKDString("不存在符合导入单据的发票,请检查是否已采集发票或采集的发票是否合规", "FpzsMainPlugin_108", "imc-rim-formplugin", new Object[0]), 3000);
-        } else {
-            returnData.put("invoiceData", invoiceData);
-            Object pushType = param.get("pushType");
-            logger.info("发票助手导入单据的数据:{}", returnData);
-            InvoiceLog.insertExpenseLog(ResManager.loadKDString("发票助手导入单据", "FpzsMainPlugin_109", "imc-rim-formplugin", new Object[0]), String.valueOf(param.get("billId")), String.valueOf(param.get("billNo")), returnData.toJSONString());
-            if (pushType != null) {
-                if (ObjectUtils.isEmpty(linkKey)) {
-                    logger.info("发票助手导入单据的linkKey为空:{}-{}", String.valueOf(param.get("billId")), String.valueOf(param.get("billNo")));
-                    return;
-                }
-
-                if ("socket".equals(pushType.toString())) {
-                    MsgSendFactory.getSender().send(linkKey.toString(), returnData.toJSONString());
-                } else if ("poll".equals(pushType.toString())) {
-                    CacheHelper.put("rim_push:" + linkKey, returnData.toJSONString(), 120);
-                }
-            } else {
-                InvoiceAutoFillBillService iafbs = new InvoiceAutoFillBillService();
-                iafbs.autoFill(this.getView(), returnData);
-                this.getView().returnDataToParent(returnData);
-                this.getView().close();
-            }
-
-        }
-    }
-
-    public void itemClick(ItemClickEvent evt) {
-        String item = evt.getItemKey();
-        if ("del_import".equals(item)) {
-            this.showDeleteConfirm(ResManager.loadKDString("你确定要删除选中发票吗?", "FpzsMainPlugin_110", "imc-rim-formplugin", new Object[0]), "delete_import_invoice_List");
-        } else if ("del_error".equals(item)) {
-            this.showDeleteConfirm(ResManager.loadKDString("你确定要删除选中发票吗?", "FpzsMainPlugin_110", "imc-rim-formplugin", new Object[0]), "delete_error_invoice_List");
-        } else if ("del_attach".equals(item)) {
-            this.showDeleteConfirm(ResManager.loadKDString("你确定要删除选中附件吗?", "FpzsMainPlugin_111", "imc-rim-formplugin", new Object[0]), "del_attach");
-        } else if ("clear_import".equals(item)) {
-            this.showDeleteConfirm(ResManager.loadKDString("你确定要清空可导入发票列表吗?", "FpzsMainPlugin_112", "imc-rim-formplugin", new Object[0]), "clear_import_invoice_List");
-        } else if ("clear_error".equals(item)) {
-            this.showDeleteConfirm(ResManager.loadKDString("你确定要清空不可导入发票列表吗?", "FpzsMainPlugin_113", "imc-rim-formplugin", new Object[0]), "clear_error_invoice_List");
-        } else if ("clear_attach".equals(item)) {
-            this.showDeleteConfirm(ResManager.loadKDString("你确定要清空当前列表吗?", "FpzsMainPlugin_114", "imc-rim-formplugin", new Object[0]), "clear_attach");
-        } else if ("choose_attach_type".equals(item)) {
-            this.showAttachTypeBase();
-        } else if ("bar_excel".equals(item)) {
-            if (InvoiceConfigUtils.isZhCn()) {
-                ExcelHelper.downloadTemplate(this, "templates", "发票查验模板.xlsx");
-            } else {
-                ExcelHelper.downloadTemplate(this, "templates", "invoicecheck.xlsx");
-            }
-        } else if ("bar_import".equals(item)) {
-            this.submitToBill();
-        } else if ("edit_class".equals(item)) {
-            this.getView().setEnable(Boolean.FALSE, new String[]{"edit_class"});
-            this.operateCustomTable("import", "editClass");
-        }
-
-    }
-
-    public void afterCreateNewData(EventObject eventObject) {
-        this.getView().setVisible(Boolean.FALSE, new String[]{"all_invoice"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"advconap_import"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"advconap_error"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"attach_panel"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"flexpanelap11"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"attach_panel"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"flexpanelap12"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"edit_class"});
-        this.progressBarVisible(false, (String[])null);
-        CustomControl scannerControl = (CustomControl)this.getControl("custom_scanner");
-        ScannerServiceEx.init(scannerControl, this.getView().getPageId());
-        JSONObject customParam = FpzsMainService.cacheCustomParam(this);
-        String billType = customParam.getString("billType");
-        if (StringUtils.isEmpty(billType)) {
-            billType = "fpzs";
-        }
-
-        if ("personTicket".equals(billType)) {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap12"});
-            this.getView().setVisible(Boolean.FALSE, new String[]{"flexpanelap6"});
-            this.getView().setVisible(Boolean.TRUE, new String[]{"edit_class"});
-        }
-
-        Boolean showOversea = FpzsMainService.showOperateFpzs(this, billType, "tab_oversea");
-        Boolean showInvoice = FpzsMainService.showOperateFpzs(this, billType, "tab_invoice");
-        Boolean showAttach = FpzsMainService.showOperateFpzs(this, billType, "tab_attach");
-        this.getView().setVisible(Boolean.FALSE, new String[]{"tab_invoice", "tab_oversea", "tab_attach", "flexpanelap11", "flexpanelap1"});
-        Boolean isInvoiceFlex = Boolean.FALSE;
-        Tab invoiceTab = (Tab)this.getView().getControl("tabap");
-        if (showInvoice) {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"tab_invoice"});
-            this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap1"});
-            isInvoiceFlex = Boolean.TRUE;
-            invoiceTab.activeTab("tab_invoice");
-        }
-
-        if (showOversea) {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"tab_oversea"});
-            this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap1"});
-            isInvoiceFlex = Boolean.TRUE;
-        }
-
-        if (!showInvoice && showAttach) {
-            this.getView().setVisible(Boolean.FALSE, new String[]{"flexpanelap1"});
-            this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap11"});
-            invoiceTab.activeTab("tab_attach");
-        }
-
-        if (isInvoiceFlex && showAttach) {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"tab_attach"});
-        }
-
-        if (!isInvoiceFlex && showAttach) {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"tab_attach"});
-            this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap11"});
-            invoiceTab.activeTab("tab_attach");
-        }
-
-        if (!showInvoice && !showAttach && showOversea) {
-            this.getView().setVisible(Boolean.FALSE, new String[]{"tab_invoice"});
-            this.getView().setVisible(Boolean.FALSE, new String[]{"tab_attach"});
-            invoiceTab.activeTab("tab_oversea");
-        }
-
-        if (!showInvoice && !showAttach && !showOversea) {
-            this.getView().showErrorNotification(ResManager.loadKDString("没有发票采集相关权限,请联系管理员", "FpzsMainPlugin_115", "imc-rim-formplugin", new Object[0]));
-            this.getView().setVisible(Boolean.FALSE, new String[]{"radio_flex"});
-        }
-
-    }
-
-    public void entryRowClick(RowClickEvent evt) {
-        Control source = (Control)evt.getSource();
-        String key = source.getKey();
-        if ("operate_entry".equals(key) || "operate_entry_attach".equals(key)) {
-            Integer selectRow = evt.getRow();
-            String operateType = (String)this.getModel().getValue("operate_type", selectRow);
-            if ("operate_entry_attach".equals(key)) {
-                operateType = (String)this.getModel().getValue("operate_type_attach", selectRow);
-            }
-
-            FpzsOperateService service = FpzsOperateService.newInstance(this, operateType);
-            if (service != null) {
-                this.getView().getPageCache().put("operate_type", operateType);
-                service.operate();
-            }
-        }
-
-    }
-
-    public void customEvent(CustomEventArgs e) {
-        String eventName = e.getEventName();
-        String eventArgs = e.getEventArgs();
-        if ("pushData".equals(eventName) || "onMessage".equals(eventName)) {
-            this.dealWebSoceketMsag(eventArgs);
-        }
-
-        if ("onError".equals(eventName)) {
-            this.getView().getPageCache().remove("linkkey");
-            this.getView().showTipNotification(eventArgs, 10000);
-        }
-
-        if ("scanner_fail".equals(eventName)) {
-            if (ScannerServiceEx.scannerFail(this, eventArgs)) {
-                this.scannerProcess("uploadFinish");
-            }
-        } else {
-            JSONObject json;
-            String name;
-            String cache;
-            String description;
-            String url;
-            JSONObject businessParam;
-            String traceId;
-            if ("scanner_success".equals(eventName)) {
-                if (!StringUtils.isEmpty(eventArgs)) {
-                    json = JSON.parseObject(eventArgs);
-                    JSONObject data = json.getJSONObject("data");
-                    name = data.getString("url");
-                    cache = data.getString("name");
-                    description = this.getView().getPageCache().get("operate_type");
-                    logger.info("扫描仪上传成功:" + description + "," + name + "," + cache);
-                    if (!"operate_attach_scanner".equals(description)) {
-                        url = this.getView().getPageId();
-                        businessParam = FpzsMainService.getBusinessParam(url, CollectTypeEnum.PC_SCANNER.getCode());
-                        businessParam.put("uploadIndex", ScannerServiceEx.getUploadIndex(data));
-                        ScannerServiceEx.recognitionInvoice("fpzs", this.getView().getPageId(), name, cache, businessParam, FpzsMainService.getCustomParam(this));
-                    } else {
-                        url = null;
-
-                        try {
-                            JSONArray upload = new JSONArray();
-                            businessParam = new JSONObject();
-                            businessParam.put("url", name);
-                            businessParam.put("name", cache);
-                            businessParam.put("resource", "scanner");
-                            upload.add(businessParam);
-                            traceId = this.getView().getPageId();
-                            Boolean lockFlag = Boolean.FALSE;
-                            DLock lock = DLock.create("updateAttachView" + traceId, ResManager.loadKDString("更新附件页面锁", "FpzsMainPlugin_116", "imc-rim-formplugin", new Object[0]));
-                            Throwable var15 = null;
-
-                            try {
-                                int times = 0;
-
-                                while(times < 30) {
-                                    ++times;
-                                    if (lock.tryLock(500L)) {
-                                        try {
-
-                                            this.updateAttachView(upload);
-                                            lockFlag = Boolean.TRUE;
-                                            break;
-                                        } finally {
-                                            lock.unlock();
-                                        }
-                                    }
-                                }
-                            } catch (Throwable var33) {
-                                var15 = var33;
-                                throw var33;
-                            } finally {
-                                if (lock != null) {
-                                    if (var15 != null) {
-                                        try {
-                                            lock.close();
-                                        } catch (Throwable var31) {
-                                            var15.addSuppressed(var31);
-                                        }
-                                    } else {
-                                        lock.close();
-                                    }
-                                }
-
-                            }
-
-                            if (!lockFlag) {
-                                this.getView().showErrorNotification(String.format(ResManager.loadKDString("附件上传失败:%1$s", "FpzsMainPlugin_117", "imc-rim-formplugin", new Object[0]), cache));
-                            }
-                        } catch (Exception var35) {
-                            logger.error("扫描仪上传附件失败", var35);
-                            this.getView().showErrorNotification(ResManager.loadKDString("附件上传失败", "FpzsMainPlugin_118", "imc-rim-formplugin", new Object[0]));
-                        }
-                    }
-                }
-            } else if ("scanner_uploadFinish".equals(e.getEventName())) {
-                if (!ScannerServiceEx.uploadFinish(eventArgs)) {
-                    String operateType = this.getView().getPageCache().get("operate_type");
-                    logger.info("扫描仪上传结束:" + operateType);
-                    if (!"operate_attach_scanner".equals(operateType)) {
-                        this.scannerProcess("uploadFinish");
-                    }
-                }
-            } else if ("datagrid_deleteRow".equals(e.getEventName())) {
-                this.deleteInvoiceRow(eventArgs);
-            } else if ("datagrid_clearTable".equals(eventName)) {
-                this.clearInvoiceTable(eventArgs);
-            } else {
-                String type;
-                if ("datagrid_click".equals(eventName)) {
-                    json = JSON.parseObject(eventArgs);
-                    type = json.getString("clickkey");
-                    name = json.getString("rowkey");
-                    if ("viewInvoice".equals(type)) {
-                        this.showInvoiceEdit(name);
-                    } else if ("addAttach".equals(type)) {
-                        this.getPageCache().put("add_attach", name);
-                        this.showAttachUpload();
-                    }
-                } else if ("dialog".equals(eventName)) {
-                    this.scannerProcess("dialog");
-                } else if ("uploadfile_upload".equals(eventName)) {
-                    json = JSON.parseObject(eventArgs);
-                    type = json.getString("status");
-                    name = json.getString("name");
-                    cache = json.getString("errcode");
-                    description = json.getString("description");
-                    if ("success".equals(type) && !"40002".equals(cache)) {
-                        url = json.getString("url");
-                        String pageId = this.getView().getPageId();
-                        logger.info("uploadfile_upload{},{}", pageId, RequestContext.get().getTraceId());
-                        businessParam = FpzsMainService.getBusinessParam(pageId, CollectTypeEnum.PC_UPLOAD.getCode());
-                        businessParam.put("uploadIndex", ScannerServiceEx.getUploadIndex(json));
-                        ScannerServiceEx.recognitionInvoice("fpzs", this.getView().getPageId(), url, name, businessParam, FpzsMainService.getCustomParam(this));
-                        traceId = RequestContext.get().getTraceId();
-                        if (this.traceMap == null || this.traceMap.get(traceId) == null) {
-                            this.scannerProcess("upload");
-                        }
-
-                        if (this.traceMap == null) {
-                            this.traceMap = new HashMap(16);
-                        } else if (this.traceMap.size() > 1) {
-                            this.traceMap.clear();
-                        }
-
-                        this.traceMap.put(traceId, "1");
-                    } else if ("40002".equals(cache)) {
-                        this.getView().showErrorNotification(String.format(ResManager.loadKDString("文件:%1$s上传失败,不支持的文件类型", "FpzsMainPlugin_119", "imc-rim-formplugin", new Object[0]), name));
-                    } else if (StringUtils.isEmpty(description)) {
-                        this.getView().showErrorNotification(String.format(ResManager.loadKDString("文件:%1$s上传失败", "FpzsMainPlugin_120", "imc-rim-formplugin", new Object[0]), name));
-                    } else {
-                        this.getView().showErrorNotification(String.format(ResManager.loadKDString("文件:%1$s上传失败:%2$s", "FpzsMainPlugin_121", "imc-rim-formplugin", new Object[0]), name, description));
-                    }
-                } else if ("interval".equals(eventName)) {
-                    json = JSON.parseObject(eventArgs);
-                    type = json.getString("eventName");
-                    name = json.getString("linkKey");
-                    if (!StringUtils.isEmpty(name) && "pooling".equals(type)) {
-                        cache = CacheHelper.get(name);
-                        if (!StringUtils.isEmpty(cache)) {
-                            this.dealWebSoceketMsag(cache);
-                            CacheHelper.remove(name);
-                        }
-                    }
-                } else if ("datagrid_editClass".equals(eventName)) {
-                    this.editClass(eventArgs);
-                }
-            }
-        }
-
-    }
-
-    public void dealWebSoceketMsag(String eventArgs) {
-        logger.info("onMessage:{}", eventArgs);
-        JSONObject result = null;
-
-        try {
-            result = JSON.parseObject(eventArgs);
-        } catch (Exception var19) {
-            return;
-        }
-
-        if (null != result) {
-            String resource = result.getString("resource");
-            JSONObject data = result.getJSONObject("data");
-            if (null != data) {
-                JSONArray invoiceData = data.getJSONArray("invoiceData");
-                JSONArray attachIds = data.getJSONArray("attachIds");
-                if (StringUtils.isEmpty(resource) || CollectionUtils.isEmpty(attachIds) && CollectionUtils.isEmpty(invoiceData)) {
-                    ArrayList invoiceIds;
-                    InvoiceSaveResult saveResult;
-                    JSONArray fids;
-                    if (!CollectionUtils.isEmpty(invoiceData)) {
-                        String pageId = this.getView().getPageId();
-                        JSONObject businessParam = FpzsMainService.getBusinessParam(pageId, CollectTypeEnum.WEIXIN.getCode());
-                        invoiceIds = new ArrayList(16);
-                        StringBuilder sb = new StringBuilder();
-
-                        for(int i = 0; i < invoiceData.size(); ++i) {
-                            JSONObject invoiceJson = invoiceData.getJSONObject(i);
-                            InvoiceSaveService service = InvoiceSaveService.newInstance(invoiceJson.getString("invoiceType"));
-                            if (service != null) {
-                                Long invoiceType = InputInvoiceTypeEnum.getInvoiceTypeByAwsType(service.getInvoiceType() + "");
-                                invoiceJson.putAll(businessParam);
-                                if (InputInvoiceTypeEnum.AIR_INVOICE.getCode().equals(invoiceType)) {
-                                    invoiceJson.put("seatGradeName", AirConvertService.convertSeatName(invoiceJson.getString("seatGrade")));
-                                }
-
-                                boolean dealAttachRelation = true;
-                                String originalState;
-                                if (InvoiceConvertUtils.isSaleListInvoiceType(invoiceType)) {
-                                    String checkStatus = invoiceJson.getString("checkStatus");
-                                    if ("1".equals(checkStatus)) {
-                                        RecognitionCheckHelper.markSaleListByCheckResult(invoiceJson);
-                                    } else {
-                                        RecognitionCheckHelper.markSaleListInvoice(invoiceJson);
-                                    }
-
-                                    originalState = invoiceJson.getString("originalState");
-                                    if ("1".equals(originalState)) {
-                                        invoiceJson.put("salelistComplete", "0");
-                                        dealAttachRelation = false;
-                                    }
-                                }
-
-                                try {
-                                    saveResult = service.save(invoiceJson);
-                                    if (dealAttachRelation && "1".equals(invoiceJson.getString("isSaleListInvoice"))) {
-                                        RecognitionCheckHelper recognitionCheckHelper = new RecognitionCheckHelper();
-                                        recognitionCheckHelper.dealInvoiceAttachRelation(invoiceJson);
-                                    }
-
-                                    invoiceIds.add((Long)saveResult.getMainId());
-                                } catch (MsgException var18) {
-                                    originalState = String.format(ResManager.loadKDString("第%1$s个发票处理失败:%2$s", "FpzsMainPlugin_162", "imc-rim-formplugin", new Object[0]), i + 1, var18.getMessage());
-                                    sb.append(originalState).append(';');
-                                }
-                            }
-                        }
-
-                        if (sb.length() > 0) {
-                            this.getView().showTipNotification(sb.toString());
-                        }
-
-                        this.showSelectInvoice(invoiceIds, (List)null, (JSONArray)null);
-                    } else {
-                        fids = data.getJSONArray("fids");
-                        if (!CollectionUtils.isEmpty(fids)) {
-                            List<String> awsSerialList = new ArrayList(fids.size());
-                            invoiceIds = new ArrayList(fids.size());
-
-                            for(int i = 0; i < fids.size(); ++i) {
-                                String seri = fids.getString(i);
-                                awsSerialList.add(seri);
-                            }
-
-                            String pageId = this.getView().getPageId();
-                            JSONObject businessParam = FpzsMainService.getBusinessParam(pageId, CollectTypeEnum.WEIXIN.getCode());
-                            FpzsAwsService awsService = new FpzsAwsService();
-
-                            try {
-                                Map<String, InvoiceSaveResult> syncResult = awsService.syncInvoiceFromAws(businessParam.getLong("org_id"), awsSerialList, businessParam);
-                                if (syncResult != null) {
-                                    Iterator var14 = syncResult.entrySet().iterator();
-
-                                    while(var14.hasNext()) {
-                                        Map.Entry<String, InvoiceSaveResult> entry = (Map.Entry)var14.next();
-                                        saveResult = (InvoiceSaveResult)entry.getValue();
-                                        invoiceIds.add((Long)saveResult.getMainId());
-                                    }
-
-                                    this.showSelectInvoice(invoiceIds, (List)null, (JSONArray)null);
-                                }
-                            } catch (IOException var20) {
-                                this.getView().showErrorNotification(String.format(ResManager.loadKDString("同步发票失败%1$s", "FpzsMainPlugin_122", "imc-rim-formplugin", new Object[0]), var20.getMessage()));
-                            }
-                        }
-                    }
-
-                    fids = data.getJSONArray("attachmentData");
-                    JSONArray newAttachIds = this.saveAwsAttach(fids);
-                    this.updateAttachList(newAttachIds, (List)null);
-                } else {
-                    List<Long> invoiceIds = new ArrayList(16);
-                    if (!CollectionUtils.isEmpty(invoiceData)) {
-                        for(int i = 0; i < invoiceData.size(); ++i) {
-                            invoiceIds.add(invoiceData.getLong(i));
-                        }
-
-                        this.showSelectInvoice(invoiceIds, (List)null, (JSONArray)null);
-                    }
-
-                    this.updateAttachList(attachIds, invoiceIds);
-                }
-
-                this.getView().getPageCache().remove("qrCodePage");
-            }
-        }
-    }
-
-    public void tabSelected(TabSelectEvent tabSelectEvent) {
-        String tab = tabSelectEvent.getTabKey();
-        this.getPageCache().put("tabSelect", tab);
-        String entityId = this.getView().getEntityId();
-        if (tab.equalsIgnoreCase("tab_invoice") || tab.equalsIgnoreCase("tab_oversea")) {
-            JSONObject customParam = FpzsMainService.cacheCustomParam(this);
-            String billType = customParam.getString("billType");
-            Boolean showInvoice = FpzsMainService.showOperateFpzs(this, billType, tab);
-            if (!showInvoice) {
-                this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap11"});
-                this.getView().setVisible(Boolean.FALSE, new String[]{"flexpanelap1"});
-            }
-
-            if (!showInvoice && "tab_invoice".equals(tab)) {
-                this.getView().setVisible(Boolean.FALSE, new String[]{"tab_invoice"});
-            } else if (!showInvoice && "tab_oversea".equals(tab)) {
-                this.getView().setVisible(Boolean.FALSE, new String[]{"tab_oversea"});
-            }
-
-            JSONObject pcConfigMap = FpzsMainService.getOperateConfigMap(billType, "pc_config_tag");
-            String invoiceUploadType = (String)pcConfigMap.get("operate_upload");
-            String invoiceUploadPermItem = (String)FpzsConstant.createPermMap().get("operate_upload");
-            String overseaUploadType = (String)pcConfigMap.get("pc_oversea_file_upload");
-            String overseaUploadPermItem = (String)FpzsConstant.createPermMap().get("pc_oversea_file_upload");
-            Boolean allowInvoiceUpload = FpzsMainService.getPermissionResult(invoiceUploadType, invoiceUploadPermItem, entityId);
-            Boolean allowOverseaUpload = FpzsMainService.getPermissionResult(overseaUploadType, overseaUploadPermItem, entityId);
-            CustomControl uploadControl = (CustomControl)this.getControl("custom_upload");
-            String title;
-            if (allowOverseaUpload && tab.equalsIgnoreCase("tab_oversea")) {
-                title = "";
-                ScannerServiceEx.initUpload(uploadControl, true, title);
-            } else if (!allowOverseaUpload && tab.equalsIgnoreCase("tab_oversea")) {
-                ScannerServiceEx.removeUpload(uploadControl);
-            }
-
-            if (allowInvoiceUpload && tab.equalsIgnoreCase("tab_invoice")) {
-                title = "";
-                ScannerServiceEx.initUpload(uploadControl, true, title);
-            } else if (!allowInvoiceUpload && tab.equalsIgnoreCase("tab_invoice")) {
-                ScannerServiceEx.removeUpload(uploadControl);
-            }
-        }
-
-        this.showFlex();
-    }
-
-    public void propertyChanged(PropertyChangedArgs e) {
-        IDataEntityProperty proper = e.getProperty();
-        if ("radiogroup".equals(proper.getName())) {
-            this.showSelectInvoice((List)null, (List)null, (JSONArray)null);
-        }
-
-    }
-
-    public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
-        super.afterDoOperation(afterDoOperationEventArgs);
-        String operateKey = afterDoOperationEventArgs.getOperateKey();
-        String serialNo;
-        if ("upload_attach".equals(operateKey)) {
-            serialNo = this.getInvoiceCardSerialNo("invoice_card_entry");
-            if (StringUtils.isNotEmpty(serialNo)) {
-                this.getPageCache().put("add_attach", serialNo);
-            }
-
-            this.showAttachUpload();
-        }
-
-        if ("upload_attach_unimport".equals(operateKey)) {
-            serialNo = this.getInvoiceCardSerialNo("error_invoice_card_entry");
-            if (StringUtils.isNotEmpty(serialNo)) {
-                this.getPageCache().put("add_attach", serialNo);
-            }
-
-            this.showAttachUpload();
-        }
-
-        if ("invoice_view".equals(operateKey)) {
-            serialNo = this.getInvoiceCardSerialNo("invoice_card_entry");
-            if (StringUtils.isNotEmpty(serialNo)) {
-                this.showInvoiceEdit(serialNo);
-            }
-        }
-
-        if ("invoice_view_unimport".equals(operateKey)) {
-            serialNo = this.getInvoiceCardSerialNo("error_invoice_card_entry");
-            if (StringUtils.isNotEmpty(serialNo)) {
-                this.showInvoiceEdit(serialNo);
-            }
-        }
-
-        if ("delete_attach".equals(operateKey)) {
-            this.deleteCurrentEntry("attach_grid_entry");
-        }
-
-        if ("edit_attach".equals(operateKey)) {
-            this.showAttachEdit();
-        }
-
-    }
-
-    public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
-        String actionId = closedCallBackEvent.getActionId();
-        Object returnData = closedCallBackEvent.getReturnData();
-        Map callBackReturn;
-        List invoiceIds;
-        if (returnData != null && "rim_fpzs_company_invoice".equals(actionId)) {
-            callBackReturn = (Map)returnData;
-            invoiceIds = (List)callBackReturn.get("invoiceIds");
-            this.showSelectInvoice(invoiceIds, (List)null, (JSONArray)null);
-            String isPerson = (String)callBackReturn.get("isPerson");
-            if ("1".equals(isPerson)) {
-                this.addPersonalAttach(invoiceIds);
-            }
-        } else if (returnData != null && "rim_fpzs_attach_list".equals(actionId)) {
-            callBackReturn = (Map)returnData;
-            Object[] attachIds = (Object[])((Object[])callBackReturn.get("attachIds"));
-            if (ObjectUtils.isEmpty(attachIds)) {
-                return;
-            }
-
-            DynamicObject[] attachs = BusinessDataServiceHelper.load(attachIds, EntityMetadataCache.getDataEntityType("rim_attach"));
-            this.showAttachs(attachs, "");
-            int attachCount = this.getModel().getEntryRowCount("attach_grid_entry");
-            this.showAttachFlex(attachCount);
-        } else if (returnData != null && "rim_inv_collect_enter".equals(actionId)) {
-            callBackReturn = (Map)returnData;
-            if (null != callBackReturn.get("invoiceIds")) {
-                invoiceIds = (List)callBackReturn.get("invoiceIds");
-                this.showSelectInvoice(invoiceIds, (List)null, (JSONArray)null);
-            }
-        } else if (returnData != null && "rim_fpzs_attach_edit".equals(actionId)) {
-            callBackReturn = (Map)returnData;
-            this.updateAttachData(callBackReturn);
-        } else if (returnData != null && "rim_inv_collect_edit".equals(actionId)) {
-            callBackReturn = (Map)returnData;
-            logger.info("修改结果:" + SerializationUtils.toJsonString(returnData));
-            this.updateInvoiceData(callBackReturn);
-        } else if (returnData != null && "rim_san_gun".equals(actionId)) {
-            callBackReturn = (Map)returnData;
-            invoiceIds = (List)callBackReturn.get("invoiceIds");
-            this.showSelectInvoice(invoiceIds, (List)null, (JSONArray)null);
-        } else {
-            JSONArray mainIds;
-            if (returnData != null && "retryCallback".equals(actionId)) {
-                callBackReturn = (Map)returnData;
-                mainIds = JSONArray.parseArray(callBackReturn.get("successData").toString());
-                logger.info("发票助手采集重试处理完毕:" + mainIds);
-                if (mainIds.size() > 0) {
-                    invoiceIds = new ArrayList(8);
-                    List<Long> uncheckInvoiceIds = new ArrayList(8);
-                    JSONArray showInvoiceArray = new JSONArray();
-                    int invoiceIndex = 0;
-
-                    for(int invoiceSize = mainIds.size(); invoiceIndex < invoiceSize; ++invoiceIndex) {
-                        JSONObject invoice = mainIds.getJSONObject(invoiceIndex);
-                        String mainId = invoice.getString("mainId");
-                        String unCheckId = invoice.getString("unCheckId");
-                        if (StringUtils.isNotEmpty(unCheckId)) {
-                            uncheckInvoiceIds.add(Long.valueOf(unCheckId));
-                        } else if (StringUtils.isNotEmpty(mainId)) {
-                            invoiceIds.add(Long.valueOf(mainId));
-                        } else {
-                            showInvoiceArray.add(invoice);
-                        }
-                    }
-
-                    this.showSelectInvoice(invoiceIds, uncheckInvoiceIds, showInvoiceArray);
-                }
-            } else {
-                JSONArray uncheckIds;
-                if (returnData != null && "rim_attach_upload".equals(actionId)) {
-                    callBackReturn = (Map)returnData;
-                    if (!ObjectUtils.isEmpty(callBackReturn.get("uploadUrls"))) {
-                        String uploadUrlsStr = callBackReturn.get("uploadUrls").toString();
-                        uncheckIds = JSONArray.parseArray(uploadUrlsStr);
-                        Tab tabAp = (Tab)this.getControl("tabap");
-                        tabAp.activeTab("tab_attach");
-                        this.updateAttachView(uncheckIds);
-                    }
-                } else if (returnData != null && "bdm_attach_type".equals(actionId)) {
-                    ListSelectedRowCollection selectedRows = (ListSelectedRowCollection)returnData;
-                    this.modifyAttachType(selectedRows);
-                } else if (returnData != null && "editclass_callback".equals(actionId)) {
-                    callBackReturn = (Map)returnData;
-                    mainIds = (JSONArray)callBackReturn.get("mainIds");
-                    uncheckIds = (JSONArray)callBackReturn.get("uncheckIds");
-                    JSONArray showArray = new JSONArray();
-                    Iterator var8;
-                    Object uncheckId;
-                    JSONObject obj;
-                    if (!CollectionUtils.isEmpty(mainIds)) {
-                        var8 = mainIds.iterator();
-
-                        while(var8.hasNext()) {
-                            uncheckId = var8.next();
-                            obj = new JSONObject();
-                            obj.put("mainId", uncheckId);
-                            showArray.add(obj);
-                        }
-                    }
-
-                    if (!CollectionUtils.isEmpty(uncheckIds)) {
-                        var8 = uncheckIds.iterator();
-
-                        while(var8.hasNext()) {
-                            uncheckId = var8.next();
-                            obj = new JSONObject();
-                            obj.put("unCheckId", uncheckId);
-                            showArray.add(obj);
-                        }
-                    }
-
-                    this.showTipRefresh(showArray, false);
-                }
-            }
-        }
-
-        FpzsOperateService service = FpzsOperateService.newInstance(this, actionId);
-        if (service != null) {
-            service.closedCallBack(closedCallBackEvent);
-        }
-
-    }
-
-    public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
-        String callBackId = messageBoxClosedEvent.getCallBackId();
-        if ("downJsScanner".equals(callBackId)) {
-            if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-                ScannerServiceEx.downJsScanner(this);
-            }
-        } else if ("del_attach".equals(callBackId)) {
-            if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-                this.deleteEntryData("attach_grid_entry", false);
-            }
-        } else if ("clear_attach".equals(callBackId)) {
-            if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-                this.deleteEntryData("attach_grid_entry", true);
-            }
-        } else if ("clear_import_invoice_List".equals(callBackId)) {
-            if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-                this.operateCustomTable("import", "clearTable");
-            }
-        } else if ("clear_error_invoice_List".equals(callBackId)) {
-            if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-                this.operateCustomTable("error", "clearTable");
-            }
-        } else if ("delete_import_invoice_List".equals(callBackId)) {
-            if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-                this.operateCustomTable("import", "deleteRow");
-            }
-        } else if ("delete_error_invoice_List".equals(callBackId)) {
-            if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-                this.operateCustomTable("error", "deleteRow");
-            }
-        } else if ("editclass_callback".equals(callBackId) && MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
-            FormShowParameter param = new FormShowParameter();
-            param.getOpenStyle().setShowType(ShowType.Modal);
-            param.setFormId("rim_chose_invoice_class");
-            CloseCallBack closeCallBack = new CloseCallBack(this, "editclass_callback");
-            param.setCloseCallBack(closeCallBack);
-            String cacheMainIds = this.getView().getPageCache().get("cache_mainIds");
-            String cacheUncheckIds = this.getView().getPageCache().get("cache_uncheckIds");
-            JSONArray mainIds = JSONArray.parseArray(cacheMainIds);
-            JSONArray uncheckIds = JSONArray.parseArray(cacheUncheckIds);
-            param.setCustomParam("mainIds", mainIds);
-            param.setCustomParam("uncheckIds", uncheckIds);
-            this.getView().showForm(param);
-        }
-
-    }
-
-    private void clearInvoiceTable(String eventArgs) {
-        JSONObject json = JSON.parseObject(eventArgs);
-        String tableId = json.getString("tableId");
-        String tableType = tableId.indexOf("error") >= 0 ? "error" : "import";
-        JSONObject dataJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-        JSONArray invoiceVerifyData2 = new JSONArray();
-        if (dataJson != null) {
-            Iterator<Map.Entry<String, Object>> iterator = dataJson.entrySet().iterator();
-
-            while(iterator.hasNext()) {
-                Map.Entry<String, Object> entry = (Map.Entry)iterator.next();
-                String key = (String)entry.getKey();
-                JSONObject obj = dataJson.getJSONObject(key);
-                Boolean filterFlag = FpzsMainService.isFilter(obj);
-                String serialNo = obj.getString("serialNo");
-                if ("error".equals(tableType) && filterFlag) {
-                    invoiceVerifyData2.add(obj);
-                    iterator.remove();
-                }
-
-                if ("import".equals(tableType) && !filterFlag) {
-                    invoiceVerifyData2.add(obj);
-                    iterator.remove();
-                }
-            }
-
-            this.saveInvoiceDataCache(dataJson.toJSONString());
-            this.saveVerifyResult(invoiceVerifyData2);
-            this.showFlex();
-        }
-
-    }
-
-    private JSONArray getSelectedCardInvoice(String tableId) {
-        JSONArray array = new JSONArray();
-        CardEntry errorCardEntry;
-        int[] errorSelectedRows;
-        int i;
-        String serialNo;
-        if (StringUtils.isNotEmpty(tableId) && tableId.endsWith("import")) {
-            errorCardEntry = (CardEntry)this.getControl("invoice_card_entry");
-            errorSelectedRows = errorCardEntry.getSelectRows();
-            if (errorSelectedRows == null || errorSelectedRows.length == 0) {
-                this.getView().showTipNotification(ResManager.loadKDString("请先选择需要删除的发票", "FpzsMainPlugin_123", "imc-rim-formplugin", new Object[0]), 2000);
-                return array;
-            }
-
-            for(i = 0; i < errorSelectedRows.length; ++i) {
-                serialNo = this.getModel().getValue("import_serial_no", errorSelectedRows[i]).toString();
-                array.add(serialNo);
-            }
-        } else if (StringUtils.isNotEmpty(tableId) && tableId.endsWith("error")) {
-            errorCardEntry = (CardEntry)this.getControl("error_invoice_card_entry");
-            errorSelectedRows = errorCardEntry.getSelectRows();
-            if (errorSelectedRows == null || errorSelectedRows.length == 0) {
-                this.getView().showTipNotification(ResManager.loadKDString("请先选择需要删除的发票", "FpzsMainPlugin_123", "imc-rim-formplugin", new Object[0]), 2000);
-                return array;
-            }
-
-            for(i = 0; i < errorSelectedRows.length; ++i) {
-                serialNo = this.getModel().getValue("error_serial_no", errorSelectedRows[i]).toString();
-                array.add(serialNo);
-            }
-        }
-
-        return array;
-    }
-
-    private void deleteCardInvoiceRow(String tableId, JSONArray array) {
-        if (array == null || array.size() == 0) {
-            array = this.getSelectedCardInvoice(tableId);
-        }
-
-        DynamicObjectCollection invoiceCardDatas = this.getModel().getEntryEntity("invoice_card_entry");
-        DynamicObjectCollection errorInvoiceCardDatas = this.getModel().getEntryEntity("error_invoice_card_entry");
-        ArrayList errorIndexList;
-        int i;
-        Iterator var7;
-        DynamicObject errorInvoiceCardData;
-        int[] errorIndex;
-        int m;
-        if (!CollectionUtils.isEmpty(invoiceCardDatas) && StringUtils.isNotEmpty(tableId) && tableId.endsWith("import")) {
-            errorIndexList = new ArrayList(invoiceCardDatas.size());
-            i = 0;
-            var7 = invoiceCardDatas.iterator();
-
-            while(var7.hasNext()) {
-                errorInvoiceCardData = (DynamicObject)var7.next();
-                if (errorInvoiceCardData != null) {
-                    String importSerialNo = errorInvoiceCardData.getString("import_serial_no");
-                    if (array.size() > 0 && array.contains(importSerialNo)) {
-                        errorIndexList.add(i);
-                    }
-
-                    ++i;
-                }
-            }
-
-            if (!CollectionUtils.isEmpty(errorIndexList)) {
-                errorIndex = new int[errorIndexList.size()];
-
-                for(m = 0; m < errorIndex.length; ++m) {
-                    errorIndex[m] = (Integer)errorIndexList.get(m);
-                }
-
-                this.getView().getModel().deleteEntryRows("invoice_card_entry", errorIndex);
-            }
-        }
-
-        if (!CollectionUtils.isEmpty(errorInvoiceCardDatas) && StringUtils.isNotEmpty(tableId) && tableId.endsWith("error")) {
-            errorIndexList = new ArrayList(errorInvoiceCardDatas.size());
-            i = 0;
-            var7 = errorInvoiceCardDatas.iterator();
-
-            while(var7.hasNext()) {
-                errorInvoiceCardData = (DynamicObject)var7.next();
-                if (errorInvoiceCardData != null) {
-                    if (array.contains(errorInvoiceCardData.getString("error_serial_no"))) {
-                        errorIndexList.add(i);
-                    }
-
-                    ++i;
-                }
-            }
-
-            if (!CollectionUtils.isEmpty(errorIndexList)) {
-                errorIndex = new int[errorIndexList.size()];
-
-                for(m = 0; m < errorIndex.length; ++m) {
-                    errorIndex[m] = (Integer)errorIndexList.get(m);
-                }
-
-                this.getView().getModel().deleteEntryRows("error_invoice_card_entry", errorIndex);
-            }
-        }
-
-    }
-
-    private void deleteInvoiceRow(String eventArgs) {
-        JSONObject json = JSON.parseObject(eventArgs);
-        String tableId = json.getString("tableId");
-        new JSONArray();
-        JSONArray array = json.getJSONArray("rows");
-        if (CollectionUtils.isEmpty(array)) {
-            this.getView().showTipNotification(ResManager.loadKDString("请先选择需要删除的发票", "FpzsMainPlugin_123", "imc-rim-formplugin", new Object[0]), 2000);
-        } else {
-            this.updateInvoiceCache(array);
-            this.deleteCardInvoiceRow(tableId, array);
-            this.showFlex();
-        }
-    }
-
-    private void updateInvoiceCache(JSONArray array) {
-        JSONObject dataJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-        JSONArray invoiceVerifyData = new JSONArray();
-        if (dataJson != null) {
-            for(int i = 0; i < array.size(); ++i) {
-                invoiceVerifyData.add(dataJson.getJSONObject(array.getString(i)));
-                dataJson.remove(array.getString(i));
-            }
-
-            if (!dataJson.isEmpty()) {
-                String pageId = this.getView().getPageId();
-                Map<String, Object> customParam = FpzsMainService.getCustomParam(this);
-                VerifyService.verifySequenceNo(customParam, dataJson);
-                FpzsMainService.updateInvoiceGrid(this, dataJson);
-            }
-
-            this.saveInvoiceDataCache(dataJson.toJSONString());
-            this.saveVerifyResult(invoiceVerifyData);
-        }
-
-    }
-
-    private String getInvoiceCardSerialNo(String invoiceEntry) {
-        String serialNo = null;
-        String invoiceModel = this.getView().getPageCache().get("invoice_list_model");
-        if (!StringUtils.isEmpty(invoiceModel) && "card".equals(invoiceModel)) {
-            int rowIndex = this.getModel().getEntryCurrentRowIndex(invoiceEntry);
-            if ("invoice_card_entry".equals(invoiceEntry)) {
-                serialNo = this.getModel().getValue("import_serial_no", rowIndex).toString();
-            } else if ("error_invoice_card_entry".equals(invoiceEntry)) {
-                serialNo = this.getModel().getValue("error_serial_no", rowIndex).toString();
-            }
-
-            return serialNo;
-        } else {
-            return serialNo;
-        }
-    }
-
-    private int[] getSelectedRows(String entryId) {
-        if (StringUtils.isEmpty(entryId)) {
-            return null;
-        } else {
-            int[] selectedAttachRows = null;
-            if ("attach_grid_entry".equals(entryId)) {
-                String attachModel = this.getView().getPageCache().get("attach_list_model");
-                if (StringUtils.isEmpty(attachModel)) {
-                    EntryGrid entryGrid = (EntryGrid)this.getControl("attach_grid_entry");
-                    selectedAttachRows = entryGrid.getSelectRows();
-                } else {
-                    CardEntry entryCard = (CardEntry)this.getControl("attach_card_entry");
-                    selectedAttachRows = entryCard.getSelectRows();
-                }
-            }
-
-            return selectedAttachRows;
-        }
-    }
-
-    private void modifyAttachType(ListSelectedRowCollection selectedBaseDataRows) {
-        int[] selectedAttachRows = this.getSelectedRows("attach_grid_entry");
-        if (selectedAttachRows != null && selectedAttachRows.length != 0) {
-            List<Long> selectedAttachIds = new ArrayList(selectedAttachRows.length);
-
-            for(int i = 0; i < selectedAttachRows.length; ++i) {
-                Long attachId = Long.parseLong(this.getModel().getValue("attachid", selectedAttachRows[i]).toString());
-                selectedAttachIds.add(attachId);
-            }
-
-            QFilter attachFilter = new QFilter("id", "in", selectedAttachIds);
-            DynamicObject[] attachObjs = BusinessDataServiceHelper.load("rim_attach", "id, update_time, attach_category", attachFilter.toArray());
-            if (attachObjs != null && attachObjs.length != 0) {
-                JSONArray newAttachArray = new JSONArray();
-                Object attachCategoryPk = selectedBaseDataRows.getPrimaryKeyValues()[0];
-                List<DynamicObject> listCategoryAttach = new ArrayList(8);
-                DynamicObject[] var9 = attachObjs;
-                int var10 = attachObjs.length;
-
-                String attachCategoryNumber;
-                for(int var11 = 0; var11 < var10; ++var11) {
-                    DynamicObject attachObj = var9[var11];
-                    JSONObject newAttachInfo = new JSONObject();
-                    attachCategoryNumber = attachObj.getString("attach_category.number");
-                    if ("F014".equals(attachCategoryNumber)) {
-                        listCategoryAttach.add(attachObj);
-                    } else {
-                        attachObj.set("attach_category", attachCategoryPk);
-                        attachObj.set("update_time", new Date());
-                        newAttachInfo.put("id", attachObj.get("id"));
-                        newAttachInfo.put("attach_category", attachCategoryPk);
-                        newAttachArray.add(newAttachInfo);
-                    }
-                }
-
-                if (listCategoryAttach.size() > 0) {
-                    this.getView().showTipNotification(ResManager.loadKDString("销货清单附件类型不允许修改", "FpzsMainPlugin_126", "imc-rim-formplugin", new Object[0]));
-                }
-
-                ImcSaveServiceHelper.update(attachObjs);
-                this.updateAttachCache(newAttachArray);
-                DynamicObject attachTypeObj = BusinessDataServiceHelper.loadSingle(attachCategoryPk, "bdm_attach_type");
-                String simplifyName = attachTypeObj.getString("simplify_name");
-                String attachId = attachTypeObj.getString("id");
-
-                for(int i = 0; i < selectedAttachRows.length; ++i) {
-                    DynamicObject categoryObj = (DynamicObject)this.getModel().getValue("attach_category_grid", selectedAttachRows[i]);
-                    attachCategoryNumber = categoryObj.getString("number");
-                    if (!"F014".equals(attachCategoryNumber)) {
-                        this.getModel().setValue("attach_category", simplifyName, selectedAttachRows[i]);
-                        this.getModel().setValue("attach_category_grid", attachId, selectedAttachRows[i]);
-                    }
-                }
-
-            } else {
-                this.getView().showErrorNotification(ResManager.loadKDString("找不到附件信息", "FpzsMainPlugin_125", "imc-rim-formplugin", new Object[0]));
-            }
-        } else {
-            this.getView().showErrorNotification(ResManager.loadKDString("未选中任何数据", "FpzsMainPlugin_124", "imc-rim-formplugin", new Object[0]));
-        }
-    }
-
-    private void showAttachTypeBase() {
-        String attachModel = this.getView().getPageCache().get("attach_list_model");
-        int[] selectedRows = null;
-        EntryGrid entryGrid;
-        if (StringUtils.isEmpty(attachModel)) {
-            entryGrid = (EntryGrid)this.getControl("attach_grid_entry");
-            selectedRows = entryGrid.getSelectRows();
-        } else {
-            entryGrid = (EntryGrid)this.getControl("attach_card_entry");
-            selectedRows = entryGrid.getSelectRows();
-        }
-
-        if (selectedRows != null && selectedRows.length != 0) {
-            int listAttachCount = 0;
-
-            for(int i = 0; i < selectedRows.length; ++i) {
-                int index = selectedRows[i];
-                DynamicObject category = (DynamicObject)this.getModel().getValue("attach_category_grid", index);
-                String number = category.getString("number");
-                if ("F014".equals(number)) {
-                    ++listAttachCount;
-                }
-            }
-
-            if (listAttachCount == selectedRows.length) {
-                this.getView().showTipNotification(ResManager.loadKDString("销货清单类型不允许修改", "FpzsMainPlugin_128", "imc-rim-formplugin", new Object[0]));
-            } else {
-                ListShowParameter listShowParameter = ShowFormHelper.createShowListForm("bdm_attach_type", false);
-                listShowParameter.setShowUsed(true);
-                listShowParameter.setShowApproved(true);
-                listShowParameter.setHasRight(true);
-                ListFilterParameter listFilterParameter = new ListFilterParameter();
-                QFilter enableFilter = (new QFilter("enable", "=", "1")).and("number", "!=", "F014");
-                listFilterParameter.setFilter(enableFilter);
-                listShowParameter.setListFilterParameter(listFilterParameter);
-                CloseCallBack closeCallBack = new CloseCallBack(this, "bdm_attach_type");
-                listShowParameter.setCloseCallBack(closeCallBack);
-                this.getView().showForm(listShowParameter);
-            }
-        } else {
-            this.getView().showErrorNotification(ResManager.loadKDString("请选择需要修改分类的附件", "FpzsMainPlugin_127", "imc-rim-formplugin", new Object[0]));
-        }
-    }
-
-    private JSONArray saveAwsAttach(JSONArray attachmentDatas) {
-        JSONArray newAttachIds = new JSONArray();
-        if (!CollectionUtils.isEmpty(attachmentDatas)) {
-            for(int i = 0; i < attachmentDatas.size(); ++i) {
-                JSONObject attachmentData = (JSONObject)attachmentDatas.get(i);
-                if (!ObjectUtils.isEmpty(attachmentData)) {
-                    QFilter attachNoFilter = new QFilter("attach_no", "=", attachmentData.getString("serialNo"));
-                    DynamicObject attachObj = QueryServiceHelper.queryOne("rim_attach", "id", attachNoFilter.toArray());
-                    if (!ObjectUtils.isEmpty(attachObj)) {
-                        newAttachIds.add(attachObj.getLong("id"));
-                    } else {
-                        attachObj = BusinessDataServiceHelper.newDynamicObject("rim_attach");
-                        attachObj.set("attach_no", attachmentData.getString("serialNo"));
-                        attachObj.set("attach_type", attachmentData.getString("attachmentType"));
-                        attachObj.set("create_time", attachmentData.getDate("gatherTime"));
-                        attachObj.set("attach_name", attachmentData.getString("attachmentName"));
-                        String originalFileName = null;
-                        String awsLocalUrl = attachmentData.getString("localUrl");
-                        String awsSnapshotUrl = attachmentData.getString("snapshotUrl");
-                        String url = null;
-                        String fileExtension = "";
-                        String localUrl = FileUtils.downLoadAndUpload(awsLocalUrl);
-                        String snapshotUrl = FileUtils.downLoadAndUpload(awsSnapshotUrl);
-                        if (StringUtils.isNotBlank(attachmentData.getString("originalFileName"))) {
-                            originalFileName = attachmentData.getString("originalFileName");
-                        } else {
-                            originalFileName = attachmentData.getString("attachmentName");
-                        }
-
-                        if (!StringUtils.isEmpty(awsLocalUrl)) {
-                            fileExtension = awsLocalUrl.substring(awsLocalUrl.lastIndexOf(46) + 1);
-                            originalFileName = originalFileName.concat(".").concat(fileExtension);
-                            url = awsLocalUrl;
-                        } else if (!StringUtils.isEmpty(awsSnapshotUrl)) {
-                            fileExtension = awsSnapshotUrl.substring(awsSnapshotUrl.lastIndexOf(46) + 1);
-                            originalFileName = originalFileName.concat(fileExtension);
-                            url = snapshotUrl;
-                        }
-
-                        String fileHash = null;
-                        if (StringUtils.isNotBlank(url)) {
-                            InputStream inputStream = null;
-
-                            try {
-                                inputStream = FileUtils.getInputStreamByGet(url);
-                                fileHash = FileUtils.getSHA256(inputStream);
-                            } catch (Exception var26) {
-                                logger.error("读取附件失败", var26);
-                            } finally {
-                                if (inputStream != null) {
-                                    try {
-                                        inputStream.close();
-                                    } catch (IOException var25) {
-                                        logger.error("获取aws文件的hash值失败", var25);
-                                    }
-                                }
-
-                            }
-                        }
-
-                        attachObj.set("attach_hash_value", fileHash);
-                        attachObj.set("original_name", originalFileName);
-                        attachObj.set("update_time", new Date());
-                        attachObj.set("snapshot_url", snapshotUrl);
-                        attachObj.set("attach_url", localUrl);
-                        attachObj.set("user", RequestContext.get().getUserId());
-                        attachObj.set("rim_user", FpzsMainService.getCustomParam(this).get("rim_user"));
-                        DynamicObject saveObj = (DynamicObject)SaveServiceHelper.save(new DynamicObject[]{attachObj})[0];
-                        if (!ObjectUtils.isEmpty(saveObj)) {
-                            newAttachIds.add(saveObj.getLong("id"));
-                        }
-                    }
-                }
-            }
-        }
-
-        return newAttachIds;
-    }
-
-    private void updateAttachList(JSONArray attachIds, List<Long> invoiceIds) {
-        String pageId = this.getView().getPageId();
-        Set<String> attachSet = new HashSet(16);
-        Set<Long> attachLongSet = new HashSet(16);
-        if (!CollectionUtils.isEmpty(attachIds)) {
-            for(int i = 0; i < attachIds.size(); ++i) {
-                attachSet.add(attachIds.getString(i));
-                attachLongSet.add(attachIds.getLong(i));
-            }
-        }
-
-        JSONObject cache = FpzsMainService.getInvoiceDataCache(pageId);
-        QFilter serialFilter = new QFilter("relation_id", "in", cache.keySet());
-        QFilter typeFilter = new QFilter("relation_type", "=", "2");
-        DynamicObjectCollection attachCollection = QueryServiceHelper.query("rim_attach_relation", "attach_id,relation_id", new QFilter[]{serialFilter, typeFilter});
-        Map<String, String> attachRelaion = new HashMap(16);
-        Iterator var11 = attachCollection.iterator();
-
-        while(var11.hasNext()) {
-            DynamicObject obj = (DynamicObject)var11.next();
-            String attaId = obj.getString("attach_id");
-            attachSet.add(attaId);
-            attachRelaion.put(attaId, obj.getString("relation_id"));
-        }
-
-        DynamicObject obj;
-        if (!CollectionUtils.isEmpty(invoiceIds)) {
-            QFilter relationFilter = new QFilter("attach_id", "in", attachSet);
-            QFilter type3Filter = new QFilter("relation_type", "=", "3");
-            DynamicObjectCollection attach3Collection = QueryServiceHelper.query("rim_attach_relation", "attach_id,relation_id", new QFilter[]{relationFilter, type3Filter});
-            if (!CollectionUtils.isEmpty(attach3Collection)) {
-                QFilter idFilter = new QFilter("id", "in", invoiceIds);
-                DynamicObjectCollection collection = QueryServiceHelper.query("rim_invoice", "id,serial_no", new QFilter[]{idFilter});
-                if (!CollectionUtils.isEmpty(collection)) {
-                    Map<String, Long> serialMap = new HashMap(collection.size());
-                    Iterator var17 = collection.iterator();
-
-                    while(var17.hasNext()) {
-                        obj = (DynamicObject)var17.next();
-                        serialMap.put(obj.getString("serial_no"), obj.getLong("id"));
-                    }
-
-                    var17 = attach3Collection.iterator();
-
-                    while(var17.hasNext()) {
-                        obj = (DynamicObject)var17.next();
-                        String serialNo = obj.getString("relation_id");
-                        Long invoiceId = (Long)serialMap.get(serialNo);
-                        if (invoiceId != null && invoiceIds.contains(invoiceId)) {
-                            String attaId = obj.getString("attach_id");
-                            attachRelaion.put(attaId, serialNo);
-                        }
-                    }
-                }
-            }
-        }
-
-        if (!CollectionUtils.isEmpty(attachSet)) {
-            int count = this.getModel().getEntryRowCount("attach_grid_entry");
-            Set<String> existsAttach = new HashSet(16);
-
-            for(int i = 0; i < count; ++i) {
-                String attachId = String.valueOf(this.getModel().getValue("attachid", i));
-                existsAttach.add(attachId);
-                attachSet.remove(attachId);
-                String serialNo = (String)attachRelaion.get(attachId);
-                if (!StringUtils.isEmpty(serialNo)) {
-                    this.getModel().setValue("serial_no3", serialNo, i);
-                }
-            }
-
-            MainEntityType mainEntityType = EntityMetadataCache.getDataEntityType("rim_attach");
-            DynamicObject[] dynamicObject = BusinessDataServiceHelper.load(attachLongSet.toArray(), mainEntityType);
-            DynamicObject[] var33 = dynamicObject;
-            int var34 = dynamicObject.length;
-
-            for(int var35 = 0; var35 < var34; ++var35) {
-                obj = var33[var35];
-                Long attachId = obj.getLong("id");
-                if (existsAttach.add(String.valueOf(attachId))) {
-                    if (obj.get("attach_category") != null && obj.get("attach_category.id") != null) {
-                        obj.set("attach_category", obj.get("attach_category.id"));
-                    } else {
-                        obj.set("attach_category", AttachConstant.ATTACH_OTHER_CATEGORY_ID);
-                    }
-
-                    this.updateAttachModel(obj, (String)attachRelaion.get(String.valueOf(attachId)));
-                }
-            }
-
-            this.showFlex();
-        }
-
-    }
-
-    private void updateAttachView(JSONArray uploadUrls) {
-        if (!CollectionUtils.isEmpty(uploadUrls)) {
-            logger.info("附件上传请求参数:{}", uploadUrls);
-            IPageCache pageCache = new PageCache(this.getView().getPageId());
-            String serialNo = pageCache.get("add_attach");
-            if (!StringUtils.isEmpty(serialNo)) {
-                this.getPageCache().remove("add_attach");
-            }
-
-            Map<String, Object> customParam = FpzsMainService.getCustomParam(this);
-            TempFileCache tempFileCache = CacheFactory.getCommonCacheFactory().getTempFileCache();
-            Long userId = Long.valueOf(RequestContext.get().getUserId());
-
-            int attachCount;
-            for(attachCount = 0; attachCount < uploadUrls.size(); ++attachCount) {
-                Map<String, Object> urlObj = (Map)uploadUrls.get(attachCount);
-                if (!CollectionUtils.isEmpty(urlObj)) {
-                    Object resource = urlObj.get("resource");
-                    DynamicObject attachObject = null;
-                    String strUrl = urlObj.get("url").toString();
-                    String originalName = urlObj.get("name").toString();
-                    String fileName = StringUtils.substring(originalName.substring(0, originalName.lastIndexOf(46)), 0, 80);
-                    if (StringUtils.isEmpty(fileName)) {
-                        this.getView().showErrorNotification(ResManager.loadKDString("请注意,文件名称不能为空", "FpzsMainPlugin_129", "imc-rim-formplugin", new Object[0]));
-                    } else {
-                        String fileExtension = originalName.substring(originalName.lastIndexOf(46) + 1);
-                        if (StringUtils.isEmpty(fileExtension)) {
-                            this.getView().showErrorNotification(ResManager.loadKDString("无法识别文件格式,请确认文件是否正常", "FpzsMainPlugin_130", "imc-rim-formplugin", new Object[0]));
-                        } else {
-                            String fileFormat = FileUtils.getFileType(originalName);
-                            String attachHash = null;
-                            boolean isTempFile = false;
-                            if (!ObjectUtils.isEmpty(resource) && "scanner".equals(resource.toString())) {
-                                attachObject = this.newAttachDynamicObj();
-                                attachHash = FileUploadUtils.getSHA256FromAttach(strUrl);
-                                logger.info("【发票助手上传附件】-url地址:{}hash值:{},文件名:{}", new Object[]{strUrl, attachHash, originalName});
-                            } else {
-                                try {
-                                    isTempFile = strUrl.startsWith("http");
-                                } catch (Exception var31) {
-                                    logger.error("临时文件判断异常:", var31);
-                                    isTempFile = false;
-                                }
-
-                                if (isTempFile) {
-                                    attachHash = FileUploadUtils.getSHA256FromCache(strUrl);
-                                } else {
-                                    attachHash = FileUploadUtils.getSHA256FromAttach(strUrl);
-                                }
-
-                                attachObject = this.newAttachDynamicObj();
-                                logger.info("上传附件临时文件,isTempFlie:{},url:{}", isTempFile, strUrl);
-                                if (isTempFile) {
-                                    InputStream inputStream = null;
-
-                                    try {
-                                        inputStream = tempFileCache.getInputStream(strUrl);
-                                        strUrl = FileUploadUtils.upload(FileUploadUtils.getInvoiceDir("attach") + attachHash + '.' + fileFormat, originalName, inputStream);
-                                        if (StringUtils.isEmpty(strUrl)) {
-                                            this.getView().showTipNotification(String.format(ResManager.loadKDString("%1$s文件上传失败,请重试", "FpzsMainPlugin_131", "imc-rim-formplugin", new Object[0]), originalName), 2000);
-                                            continue;
-                                        }
-                                    } catch (Exception var32) {
-                                        logger.error("临时文件上传异常:", var32);
-                                        this.getView().showTipNotification(String.format(ResManager.loadKDString("%1$s文件上传超时,请重试", "FpzsMainPlugin_132", "imc-rim-formplugin", new Object[0]), originalName), 2000);
-                                        continue;
-                                    } finally {
-                                        if (inputStream != null) {
-                                            try {
-                                                inputStream.close();
-                                            } catch (IOException var30) {
-                                                logger.error("附件文件流关闭失败:", var30);
-                                            }
-                                        }
-
-                                    }
-                                }
-                            }
-
-                            attachObject.set("update_time", new Date());
-                            attachObject.set("attach_hash_value", attachHash);
-                            attachObject.set("attach_url", strUrl);
-                            if (ObjectUtils.isEmpty(attachObject.get("attach_category")) && ObjectUtils.isEmpty(attachObject.get("attach_category.id"))) {
-                                attachObject.set("attach_category", AttachConstant.ATTACH_OTHER_CATEGORY_ID);
-                            } else if (!ObjectUtils.isEmpty(attachObject.get("attach_category.id"))) {
-                                attachObject.set("attach_category", attachObject.getLong("attach_category.id"));
-                            }
-
-                            String iconImage = "";
-                            if (!"pdf".equalsIgnoreCase(fileFormat) && !"ofd".equalsIgnoreCase(fileFormat)) {
-                                if (!"doc".equalsIgnoreCase(fileFormat) && !"docx".equalsIgnoreCase(fileFormat)) {
-                                    if (!"xls".equalsIgnoreCase(fileFormat) && !"xlsx".equalsIgnoreCase(fileFormat)) {
-                                        if ("pptx".equalsIgnoreCase(fileFormat)) {
-                                            attachObject.set("attach_type", "7");
-                                        } else if ("txt".equalsIgnoreCase(fileFormat)) {
-                                            attachObject.set("attach_type", "8");
-                                        } else {
-                                            attachObject.set("attach_type", "2");
-                                        }
-                                    } else {
-                                        attachObject.set("attach_type", "6");
-                                    }
-                                } else {
-                                    attachObject.set("attach_type", "5");
-                                }
-                            } else {
-                                iconImage = FpzsAttachService.getAttachIconUrl(strUrl);
-                                attachObject.set("icon_url", iconImage);
-                                attachObject.set("snapshot_url", iconImage);
-                                if ("pdf".equalsIgnoreCase(fileFormat)) {
-                                    attachObject.set("attach_type", "1");
-                                } else {
-                                    attachObject.set("attach_type", "4");
-                                }
-                            }
-
-                            attachObject.set("file_extension", fileExtension);
-                            attachObject.set("attach_name", fileName);
-                            attachObject.set("remark", urlObj.get("description"));
-                            attachObject.set("original_name", fileName + '.' + fileExtension);
-                            DynamicObject attachSaveObject = (DynamicObject)SaveServiceHelper.save(new DynamicObject[]{attachObject})[0];
-                            JSONObject attachInfo = new JSONObject(DynamicObjectUtil.dynamicObject2Map(attachSaveObject));
-                            JSONArray attachArray = new JSONArray();
-                            attachArray.add(attachInfo);
-                            if (!StringUtils.isEmpty(serialNo)) {
-                                this.saveAttachRelation(serialNo, attachObject.getPkValue().toString());
-                            }
-
-                            String pageId = this.getView().getPageId();
-                            FpzsMainService.cacheAttachList(pageId, SerializationUtils.toJsonString(attachArray));
-                            this.updateAttachModel(attachObject, serialNo);
-                        }
-                    }
-                }
-            }
-
-            attachCount = this.getModel().getEntryRowCount("attach_grid_entry");
-            this.showAttachFlex(attachCount);
-            this.calculationSum();
-        }
-    }
-
-    private void addPersonalAttach(List<Long> invoiceIds) {
-        QFilter qFilter = new QFilter("id", "in", invoiceIds);
-        DynamicObjectCollection objects = QueryServiceHelper.query("rim_invoice", "serial_no", qFilter.toArray());
-        if (!CollectionUtils.isEmpty(objects)) {
-            Iterator var4 = objects.iterator();
-
-            while(var4.hasNext()) {
-                DynamicObject object = (DynamicObject)var4.next();
-                this.addPersonalAttach(object.getString("serial_no"));
-            }
-        }
-
-    }
-
-    private void addPersonalAttach(String serialNo) {
-        AttachQueryService attachQueryService = new AttachQueryService();
-        DynamicObject[] attachs = attachQueryService.getAttachsByInvoiceSerialNo(serialNo);
-        this.showAttachs(attachs, serialNo);
-    }
-
-    private void showAttachs(DynamicObject[] attachs, String serialNo) {
-        if (!ObjectUtils.isEmpty(attachs)) {
-            Set<String> existsSet = new HashSet(8);
-            int count = this.getModel().getEntryRowCount("attach_grid_entry");
-            if (count > 0) {
-                for(int i = 0; i < count; ++i) {
-                    existsSet.add(String.valueOf(this.getModel().getValue("attachid", i)));
-                }
-            }
-
-            JSONArray attachArray = new JSONArray();
-            DynamicObject[] var6 = attachs;
-            int var7 = attachs.length;
-
-            for(int var8 = 0; var8 < var7; ++var8) {
-                DynamicObject attach = var6[var8];
-                String attachId = String.valueOf(attach.getLong("id"));
-                if (existsSet.add(attachId)) {
-                    attachArray.add(DynamicObjectUtil.dynamicObject2Map(attach));
-                    this.updateAttachModel(attach, serialNo);
-                }
-            }
-
-            String pageId = this.getView().getPageId();
-            FpzsMainService.cacheAttachList(pageId, SerializationUtils.toJsonString(attachArray));
-            this.calculationSum();
-        }
-
-    }
-
-    private String officeToPdf(String originalFileName, String officeUrl) {
-        Map<String, Object> preview = FileServiceFactory.getAttachmentFileService().preview(originalFileName, officeUrl, "userAgent");
-        this.getView().previewAttachment(preview);
-        String pdfUrl = "";
-        InputStream pdfInputStream = null;
-
-        try {
-            pdfInputStream = (InputStream)preview.get(PreviewParams.RESULT.getEnumName());
-            String fileName = originalFileName.substring(0, originalFileName.lastIndexOf(46));
-            String pdfFileName = fileName.concat(".pdf");
-            String pdfFilePath = "/rim/attach/pdf/" + pdfFileName;
-            pdfUrl = FileServiceFactory.getAttachmentFileService().upload(new FileItem(pdfFileName, pdfFilePath, pdfInputStream));
-        } catch (Exception var12) {
-            logger.info("发票助手-office文件转pdf失败:" + var12);
-            this.getView().showErrorNotification(ResManager.loadKDString("office文件转pdf失败,该文件将无法进行预览", "FpzsMainPlugin_133", "imc-rim-formplugin", new Object[0]));
-        } finally {
-            IOUtils.closeQuietly(pdfInputStream);
-        }
-
-        return pdfUrl;
-    }
-
-    private void saveAttachRelation(String serialNo, String attachPkValue) {
-        if (!StringUtils.isEmpty(serialNo)) {
-            QFilter attachRelationFilter = (new QFilter("attach_id", "=", attachPkValue)).and("relation_type", "=", "3").and("relation_id", "=", serialNo);
-            DynamicObjectCollection relations = QueryServiceHelper.query("rim_attach_relation", "id", attachRelationFilter.toArray());
-            if (relations == null || relations.size() == 0) {
-                DynamicObject relationObject = BusinessDataServiceHelper.newDynamicObject("rim_attach_relation");
-                relationObject.set("attach_id", attachPkValue);
-                relationObject.set("relation_type", "3");
-                relationObject.set("relation_id", serialNo);
-                SaveServiceHelper.save(new DynamicObject[]{relationObject});
-            }
-
-        }
-    }
-
-    private void updateAttachModel(DynamicObject attachObject, String serialNo) {
-        Object categoryId = DynamicObjectUtil.getDynamicObjectLongValue(attachObject.get("attach_category"));
-        QFilter categoryFilter = new QFilter("id", "=", categoryId);
-        DynamicObject attachCategory = QueryServiceHelper.queryOne("bdm_attach_type", "name,simplify_name", categoryFilter.toArray());
-        if (attachCategory == null) {
-            this.getView().showTipNotification(ResManager.loadKDString("找不到附件分类", "FpzsMainPlugin_134", "imc-rim-formplugin", new Object[0]));
-        } else {
-            String categorySimplifyName = attachCategory.getString("simplify_name");
-            String categoryName = attachCategory.getString("name");
-            if (StringUtils.isEmpty(categorySimplifyName)) {
-                categorySimplifyName = ResManager.loadKDString("其他", "FpzsMainPlugin_135", "imc-rim-formplugin", new Object[0]);
-            }
-
-            if (StringUtils.isEmpty(categoryName)) {
-                categoryName = ResManager.loadKDString("其他附件", "FpzsMainPlugin_136", "imc-rim-formplugin", new Object[0]);
-            }
-
-            int attachIndex = this.getModel().createNewEntryRow("attach_grid_entry");
-            String attachType = attachObject.getString("attach_type");
-            String fileExtension = attachObject.getString("file_extension");
-            this.getModel().setValue("attach_no", attachObject.get("attach_no"), attachIndex);
-            this.getModel().setValue("attach_type", attachType, attachIndex);
-            this.getModel().setValue("attach_name", attachObject.get("attach_name"), attachIndex);
-            Date uploadDate = attachObject.getDate("create_time");
-            uploadDate = (Date)Optional.ofNullable(uploadDate).orElseGet(() -> {
-                return new Date();
-            });
-            this.getModel().setValue("upload_date", uploadDate, attachIndex);
-            this.getModel().setValue("attach_path", attachObject.get("attach_url"), attachIndex);
-            this.getModel().setValue("original_name", attachObject.get("original_name"), attachIndex);
-            this.getModel().setValue("attach_icon", attachObject.get("icon_url"), attachIndex);
-            this.getModel().setValue("attach_no", attachObject.getString("attach_no"), attachIndex);
-            this.getModel().setValue("attach_category_grid", categoryId, attachIndex);
-            this.getModel().setValue("attach_categoryid", categoryId, attachIndex);
-            this.getModel().setValue("file_extension", fileExtension, attachIndex);
-            if (!StringUtils.isEmpty(serialNo)) {
-                this.getModel().setValue("serial_no3", serialNo, attachIndex);
-            }
-
-            this.getModel().setValue("attachid", attachObject.getPkValue(), attachIndex);
-            this.getModel().setValue("attach_remark", attachObject.getString("remark"), attachIndex);
-            int attachCardIndex = this.getModel().createNewEntryRow("attach_card_entry");
-            this.getModel().setValue("attach_category", categorySimplifyName, attachCardIndex);
-            this.getModel().setValue("attach_name_grid", attachObject.get("attach_name"), attachCardIndex);
-            String imageUrl = this.getAttachSnapshotUrl(attachObject);
-            this.getModel().setValue("attach_image_grid", imageUrl, attachCardIndex);
-        }
-    }
-
-    private String getAttachSnapshotUrl(DynamicObject attachObject) {
-        String attachType = attachObject.getString("attach_type");
-        String imageUrl = "";
-        String domain = UrlService.getDomainContextUrl();
-        if (!"1".equals(attachType) && !"4".equals(attachType)) {
-            if ("8".equals(attachType)) {
-                imageUrl = domain.concat("/icons/pc/label/fpy_txt.png");
-            } else if ("5".equals(attachType)) {
-                imageUrl = domain.concat("/icons/pc/label/fpy_word_doc.png");
-            } else if ("6".equals(attachType)) {
-                imageUrl = domain.concat("/icons/pc/label/fpy_excel_xls.png");
-            } else if ("7".equals(attachType)) {
-                imageUrl = domain.concat("/icons/pc/label/fpy_ppt.png");
-            } else if (!"3".equals(attachType)) {
-                imageUrl = UrlServiceUtils.getDownloadUrl(attachObject.get("attach_url").toString());
-            }
-        } else {
-            imageUrl = UrlServiceUtils.getDownloadUrl(attachObject.get("icon_url").toString());
-        }
-
-        return imageUrl;
-    }
-
-    private DynamicObject newAttachDynamicObj() {
-        Long userId = Long.valueOf(RequestContext.get().getUserId());
-        Map<String, Object> customParam = FpzsMainService.getCustomParam(this);
-        DynamicObject attachObject = BusinessDataServiceHelper.newDynamicObject("rim_attach");
-        attachObject.set("create_time", new Date());
-        attachObject.set("update_time", new Date());
-        attachObject.set("user", userId);
-        attachObject.set("rim_user", customParam.get("rim_user"));
-        String attachNo = UUID.randomUUID();
-        attachObject.set("attach_no", attachNo);
-        attachObject.set("attach_category", AttachConstant.ATTACH_OTHER_CATEGORY_ID);
-        return attachObject;
-    }
-
-    private void showAttachUpload() {
-        FormShowParameter showParameter = new FormShowParameter();
-        showParameter.setShowTitle(true);
-        showParameter.setFormId("rim_attach_upload");
-        showParameter.getOpenStyle().setShowType(ShowType.Modal);
-        CloseCallBack closeCallBack = new CloseCallBack(this, "rim_attach_upload");
-        showParameter.setCloseCallBack(closeCallBack);
-        this.getView().showForm(showParameter);
-    }
-
-    private Boolean showSelectInvoice(List<Long> invoiceIds, List<Long> unchekInvoiceIds, JSONArray invoiceArray) {
-        JSONArray showArray = new JSONArray();
-        Iterator var5;
-        Long id;
-        JSONObject obj;
-        if (!CollectionUtils.isEmpty(invoiceIds)) {
-            var5 = invoiceIds.iterator();
-
-            while(var5.hasNext()) {
-                id = (Long)var5.next();
-                obj = new JSONObject();
-                obj.put("mainId", id);
-                showArray.add(obj);
-            }
-        }
-
-        if (!CollectionUtils.isEmpty(unchekInvoiceIds)) {
-            var5 = unchekInvoiceIds.iterator();
-
-            while(var5.hasNext()) {
-                id = (Long)var5.next();
-                obj = new JSONObject();
-                obj.put("unCheckId", id);
-                showArray.add(obj);
-            }
-        }
-
-        if (!CollectionUtils.isEmpty(invoiceArray)) {
-            showArray.addAll(invoiceArray);
-        }
-
-        this.refreshInvoiceList(showArray);
-        return Boolean.TRUE;
-    }
-
-    private void refreshInvoiceList(JSONArray invoiceArray) {
-        this.showTipRefresh(invoiceArray, true);
-    }
-
-    private void showTipRefresh(JSONArray invoiceArray, boolean isShowTips) {
-        JSONArray attachArray = (JSONArray)invoiceArray.stream().filter((f) -> {
-            JSONObject info = (JSONObject)f;
-            String attach_no = info.getString("attach_no");
-            return StringUtils.isNotEmpty(attach_no);
-        }).collect(Collectors.toCollection(JSONArray::new));
-        invoiceArray.removeAll(attachArray);
-        Pair<JSONObject, Boolean> cachePair = FpzsMainService.cacheInvoiceList(this.getView().getPageId(), FpzsMainService.getCustomParam(this), invoiceArray, attachArray);
-        JSONObject invoiceJson = (JSONObject)cachePair.getLeft();
-        if (!ObjectUtils.isEmpty(invoiceJson)) {
-            FpzsMainService.updateInvoiceGrid(this, invoiceJson);
-            this.updateInvoiceCard(invoiceJson);
-        }
-
-        JSONObject data = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-        Map<String, String> attIdSerialMap = Maps.newLinkedHashMap();
-        Iterator var8 = data.entrySet().iterator();
-
-        while(true) {
-            JSONObject invoiceInfo;
-            List attachList;
-            do {
-                do {
-                    if (!var8.hasNext()) {
-                        JSONArray attachCache = FpzsMainService.getAttachDataCache(this.getView().getPageId());
-                        if (attachCache.size() != 0) {
-                            this.getModel().deleteEntryData("attach_grid_entry");
-                            this.getModel().deleteEntryData("attach_card_entry");
-                            Iterator var19 = attachCache.iterator();
-
-                            while(var19.hasNext()) {
-                                Object attach = var19.next();
-                                JSONObject attachJson = (JSONObject)attach;
-                                String id = attachJson.getString("id");
-                                Iterator var23 = attIdSerialMap.entrySet().iterator();
-
-                                while(var23.hasNext()) {
-                                    Map.Entry<String, String> entry = (Map.Entry)var23.next();
-                                    if (id.equals(entry.getKey())) {
-                                        attachJson.put("serial_no", entry.getValue());
-                                    }
-                                }
-
-                                this.handleAttachCategory(attachJson);
-                                int row = this.getModel().createNewEntryRow("attach_grid_entry");
-                                this.getModel().setValue("attachid", attachJson.get("id"), row);
-                                this.getModel().setValue("attach_category_grid", attachJson.get("attach_category"), row);
-                                this.getModel().setValue("attach_name", attachJson.get("attach_name"), row);
-                                this.getModel().setValue("serial_no3", attachJson.get("serial_no"), row);
-                                this.getModel().setValue("attach_type", attachJson.get("attach_type"), row);
-                                this.getModel().setValue("upload_date", attachJson.getDate("create_time"), row);
-                                this.getModel().setValue("attach_remark", attachJson.get("remark"), row);
-                                this.getModel().setValue("attach_path", attachJson.get("attach_url"), row);
-                                this.getModel().setValue("file_extension", attachJson.get("file_extension"), row);
-                                this.getModel().setValue("attach_no", attachJson.get("attach_no"), row);
-                                int attachGridIndex = this.getModel().createNewEntryRow("attach_card_entry");
-                                String simplify_name = attachJson.getString("simplify_name");
-                                if (StringUtils.isEmpty(simplify_name)) {
-                                    Long attachCategoryId = DynamicObjectUtil.getDynamicObjectLongValue(attachJson.get("attach_category"));
-                                    DynamicObject attachTypeObj = BusinessDataServiceHelper.loadSingle(attachCategoryId, "bdm_attach_type");
-                                    simplify_name = attachTypeObj.getString("simplify_name");
-                                }
-
-                                this.getModel().setValue("attach_category", simplify_name, attachGridIndex);
-                                this.getModel().setValue("attach_name_grid", attachJson.get("attach_name"), attachGridIndex);
-                                DynamicObject attachObj = BusinessDataServiceHelper.newDynamicObject("rim_attach");
-                                attachObj = DynamicObjectUtil.jsonToDynamicObject(attachJson, attachObj);
-                                String imageUrl = this.getAttachSnapshotUrl(attachObj);
-                                this.getModel().setValue("attach_image_grid", imageUrl, attachGridIndex);
-                            }
-                        }
-
-                        this.showFlex();
-                        if ((Boolean)cachePair.getRight() && isShowTips) {
-                            this.getView().showSuccessNotification(ResManager.loadKDString("发票已存在列表", "FpzsMainPlugin_137", "imc-rim-formplugin", new Object[0]));
-                        }
-
-                        return;
-                    }
-
-                    Map.Entry<String, Object> entry = (Map.Entry)var8.next();
-                    invoiceInfo = (JSONObject)entry.getValue();
-                    attachList = (List)invoiceInfo.get("attachList");
-                } while(attachList == null);
-            } while(attachList.size() == 0);
-
-            Iterator var12 = attachList.iterator();
-
-            while(var12.hasNext()) {
-                Map<String, Object> attachInfo = (Map)var12.next();
-                String id = (String)attachInfo.get("id");
-                attIdSerialMap.put(id, invoiceInfo.getString("serialNo"));
-            }
-        }
-    }
-
-    private void handleAttachCategory(JSONObject attachJson) {
-        if (ObjectUtils.isEmpty(attachJson.get("attach_category")) && ObjectUtils.isEmpty(attachJson.get("attach_category.id")) && ObjectUtils.isEmpty(attachJson.get("attach_category_id"))) {
-            attachJson.put("attach_category", AttachConstant.ATTACH_OTHER_CATEGORY_ID);
-        } else if (!ObjectUtils.isEmpty(attachJson.get("attach_category_id"))) {
-            attachJson.put("attach_category", attachJson.getLong("attach_category_id"));
-        } else if (!ObjectUtils.isEmpty(attachJson.get("attach_category.id"))) {
-            attachJson.put("attach_category", attachJson.getLong("attach_category.id"));
-        }
-
-    }
-
-    private void updateInvoiceCard(JSONObject invoiceArray) {
-        this.getModel().deleteEntryData("invoice_card_entry");
-        this.getModel().deleteEntryData("error_invoice_card_entry");
-        JSONObject obj;
-        Boolean isFilter;
-        int cardIndex;
-        if (!ObjectUtils.isEmpty(invoiceArray)) {
-            for(Iterator var2 = invoiceArray.entrySet().iterator(); var2.hasNext(); this.showWarningAndEdit(isFilter, obj, cardIndex)) {
-                Map.Entry<String, Object> entry = (Map.Entry)var2.next();
-                obj = (JSONObject)entry.getValue();
-                String invoiceType = obj.getString("invoiceType");
-                String level = (String)obj.get("errorLevel");
-                String snapshotUrl = obj.getString("snapshotUrl");
-                String imageUrl = UrlServiceUtils.getDownloadUrl(snapshotUrl);
-                String serialNo = obj.getString("serialNo");
-                isFilter = FpzsMainService.isFilter(obj);
-                if (isFilter) {
-                    cardIndex = this.getModel().createNewEntryRow("error_invoice_card_entry");
-                    this.getModel().setValue("error_invoice_card_image", imageUrl, cardIndex);
-                    this.getModel().setValue("error_serial_no", serialNo, cardIndex);
-                } else {
-                    cardIndex = this.getModel().createNewEntryRow("invoice_card_entry");
-                    this.getModel().setValue("invoice_card_image", imageUrl, cardIndex);
-                    this.getModel().setValue("import_serial_no", serialNo, cardIndex);
-                }
-            }
-        }
-
-    }
-
-    private void createTips(String entry, String verifyMessage, int index, String key) {
-        ClientViewProxy client = (ClientViewProxy)this.getView().getService(IClientViewProxy.class);
-        Map<String, Object> pmap = new HashMap(2);
-        Map<String, Object> operateHoverPropMap = new HashMap(4);
-        Map<String, Object> tips = new HashMap(2);
-        tips.put("type", "text");
-        if (verifyMessage != null && verifyMessage.length() > 3) {
-            verifyMessage = verifyMessage.substring(0, verifyMessage.length() - 3);
-        }
-
-        tips.put("content", new LocaleString(verifyMessage));
-        tips.put("showIcon", Boolean.TRUE);
-        operateHoverPropMap.put("tips", tips);
-        operateHoverPropMap.put("text", "");
-        pmap.put(key, operateHoverPropMap);
-        client.invokeControlMethod(entry, "setCustomProperties", new Object[]{index, pmap});
-    }
-
-    private void showWarningAndEdit(Boolean isFilter, JSONObject invoiceObj, int index) {
-        String entry = "invoice_card_entry";
-        if (isFilter) {
-            entry = "error_invoice_card_entry";
-        }
-
-        CardEntry cardEntry = (CardEntry)this.getControl(entry);
-        String level = (String)invoiceObj.get("errorLevel");
-        String verifyResultHtml = invoiceObj.getString("validateMessage_html");
-        String verifyMessage = invoiceObj.getString("validateMessage");
-        JSONArray verifyResultArray = invoiceObj.getJSONArray("verifyResult");
-        StringBuilder filterMsg = new StringBuilder();
-        StringBuilder redMsg = new StringBuilder();
-        StringBuilder yellowMsg = new StringBuilder();
-        String showAttachUpload;
-        if (verifyResultArray != null && verifyResultArray.size() > 0) {
-            for(int i = 0; i < verifyResultArray.size(); ++i) {
-                JSONObject verifyResult = verifyResultArray.getJSONObject(i);
-                if (verifyResult != null) {
-                    showAttachUpload = verifyResult.getString("config");
-                    String msg = verifyResult.getString("msg");
-                    if ("0".equals(showAttachUpload)) {
-                        if (StringUtils.isEmpty(filterMsg) && !StringUtils.isEmpty(msg)) {
-                            filterMsg.append(ResManager.loadKDString("严重警示:", "FpzsMainPlugin_159", "imc-rim-formplugin", new Object[0])).append("\r\n\t");
-                            filterMsg.append(msg);
-                        } else if (!StringUtils.isEmpty(filterMsg) && !StringUtils.isEmpty(msg)) {
-                            filterMsg.append("\r\n\t").append(msg);
-                        }
-                    } else if ("1".equals(showAttachUpload)) {
-                        if (StringUtils.isEmpty(redMsg) && !StringUtils.isEmpty(msg)) {
-                            redMsg.append(ResManager.loadKDString("中度警示:", "FpzsMainPlugin_160", "imc-rim-formplugin", new Object[0])).append("\r\n\t");
-                            redMsg.append(msg);
-                        } else if (!StringUtils.isEmpty(redMsg) && !StringUtils.isEmpty(msg)) {
-                            redMsg.append("\r\n\t").append(msg);
-                        }
-                    } else if ("2".equals(showAttachUpload)) {
-                        if (StringUtils.isEmpty(yellowMsg) && !StringUtils.isEmpty(msg)) {
-                            yellowMsg.append(ResManager.loadKDString("轻度提醒:", "FpzsMainPlugin_161", "imc-rim-formplugin", new Object[0])).append("\r\n\t");
-                            yellowMsg.append(msg);
-                        } else if (!StringUtils.isEmpty(yellowMsg) && !StringUtils.isEmpty(msg)) {
-                            yellowMsg.append("\r\n\t").append(msg);
-                        }
-                    }
-                }
-            }
-        }
-
-        StringBuilder allMsg = new StringBuilder();
-        if (!StringUtils.isEmpty(filterMsg)) {
-            if (!StringUtils.isEmpty(allMsg)) {
-                allMsg.append("\r\n");
-            }
-
-            allMsg.append(filterMsg);
-        }
-
-        if (!StringUtils.isEmpty(redMsg)) {
-            if (!StringUtils.isEmpty(allMsg)) {
-                allMsg.append("\r\n");
-            }
-
-            allMsg.append(redMsg);
-        }
-
-        if (!StringUtils.isEmpty(yellowMsg)) {
-            if (!StringUtils.isEmpty(allMsg)) {
-                allMsg.append("\r\n");
-            }
-
-            allMsg.append(yellowMsg);
-        }
-
-        if ("0".equals(level)) {
-            if (isFilter) {
-                if (StringUtils.isEmpty(allMsg) && !StringUtils.isEmpty(verifyResultHtml) && verifyResultHtml.contains(ResManager.loadKDString("发票必要字段缺失", "FpzsMainPlugin_141", "imc-rim-formplugin", new Object[0]))) {
-                    allMsg.append(ResManager.loadKDString("严重警示:", "FpzsMainPlugin_159", "imc-rim-formplugin", new Object[0])).append("\r\n\t").append(ResManager.loadKDString("发票必要字段缺失,请编辑补全", "FpzsMainPlugin_142", "imc-rim-formplugin", new Object[0])).append("\r\n\t");
-                }
-
-                this.createTips(entry, allMsg.toString(), index, "error_filter_msg");
-                this.showTipsTag(isFilter, "error_filter_msg", index);
-            } else {
-                this.createTips(entry, allMsg.toString(), index, "import_filter_msg");
-                this.showTipsTag(isFilter, "import_filter_msg", index);
-            }
-        } else if ("1".equals(level)) {
-            if (isFilter) {
-                this.createTips(entry, allMsg.toString(), index, "error_red_msg");
-                this.showTipsTag(isFilter, "error_red_msg", index);
-            } else {
-                this.createTips(entry, allMsg.toString(), index, "import_red_msg");
-                this.showTipsTag(isFilter, "import_red_msg", index);
-            }
-        } else if ("2".equals(level)) {
-            if (isFilter) {
-                this.createTips(entry, allMsg.toString(), index, "error_yellow_msg");
-                this.showTipsTag(isFilter, "error_yellow_msg", index);
-            } else {
-                this.createTips(entry, allMsg.toString(), index, "import_yellow_msg");
-                this.showTipsTag(isFilter, "import_yellow_msg", index);
-            }
-        } else {
-            this.showTipsTag(isFilter, "null", index);
-        }
-
-        Boolean canEdit = FpzsMainService.canEdit(invoiceObj);
-        showAttachUpload = this.getPageCache().get("showAttachUpload");
-        boolean allowAttachUpload = StringUtils.isEmpty(showAttachUpload) || !"false".equals(showAttachUpload);
-        if (isFilter) {
-            if (canEdit) {
-                cardEntry.setChildVisible(true, index, new String[]{"error_edit_button"});
-                cardEntry.setChildVisible(false, index, new String[]{"error_view_button"});
-            } else {
-                cardEntry.setChildVisible(false, index, new String[]{"error_edit_button"});
-                cardEntry.setChildVisible(true, index, new String[]{"error_view_button"});
-            }
-
-            if (allowAttachUpload) {
-                cardEntry.setChildVisible(true, index, new String[]{"error_upload_attach"});
-            } else {
-                cardEntry.setChildVisible(false, index, new String[]{"error_upload_attach"});
-            }
-
-        } else {
-            if (canEdit) {
-                cardEntry.setChildVisible(true, index, new String[]{"import_edit_button"});
-                cardEntry.setChildVisible(false, index, new String[]{"import_view_button"});
-            } else {
-                cardEntry.setChildVisible(false, index, new String[]{"import_edit_button"});
-                cardEntry.setChildVisible(true, index, new String[]{"import_view_button"});
-            }
-
-            if (allowAttachUpload) {
-                cardEntry.setChildVisible(true, index, new String[]{"import_upload_attach"});
-            } else {
-                cardEntry.setChildVisible(false, index, new String[]{"import_upload_attach"});
-            }
-
-        }
-    }
-
-    private void showTipsTag(Boolean isFilter, String tagKey, int index) {
-        String entry = "invoice_card_entry";
-        CardEntry cardEntry;
-        Iterator var6;
-        String msgKey;
-        if (isFilter) {
-            entry = "error_invoice_card_entry";
-            cardEntry = (CardEntry)this.getControl(entry);
-            var6 = ERROR_MSG_LIST.iterator();
-
-            while(var6.hasNext()) {
-                msgKey = (String)var6.next();
-                if (msgKey.equals(tagKey)) {
-                    cardEntry.setChildVisible(true, index, new String[]{msgKey});
-                } else {
-                    cardEntry.setChildVisible(false, index, new String[]{msgKey});
-                }
-            }
-        } else {
-            cardEntry = (CardEntry)this.getControl(entry);
-            var6 = IMPORT_MSG_LIST.iterator();
-
-            while(var6.hasNext()) {
-                msgKey = (String)var6.next();
-                if (msgKey.equals(tagKey)) {
-                    cardEntry.setChildVisible(true, index, new String[]{msgKey});
-                } else {
-                    cardEntry.setChildVisible(false, index, new String[]{msgKey});
-                }
-            }
-        }
-
-    }
-
-    private void showInvoiceEdit(String serialNo) {
-        FormShowParameter param = new FormShowParameter();
-        param.setCaption(ResManager.loadKDString("发票预览", "FpzsMainPlugin_143", "imc-rim-formplugin", new Object[0]));
-        Map<String, Object> customParams = new HashMap(8);
-        JSONObject cacheJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-        JSONObject invoiceJson = cacheJson.getJSONObject(serialNo);
-        if (ObjectUtils.isEmpty(invoiceJson)) {
-            Map<String, DynamicObject> mainDetailMap = VerifyUtil.queryInvoiceDynamicObjectBySerialNo(serialNo);
-            DynamicObject detail = (DynamicObject)mainDetailMap.get("detail");
-
-            try {
-                invoiceJson = JSON.parseObject(JSON.toJSONString(detail));
-            } catch (Exception var10) {
-                this.getView().showTipNotification(ResManager.loadKDString("页面数据已过期,请重新采集!", "FpzsMainPlugin_144", "imc-rim-formplugin", new Object[0]), 5000);
-                return;
-            }
-        }
-
-        if (ObjectUtils.isEmpty(invoiceJson)) {
-            this.getView().showTipNotification(ResManager.loadKDString("页面数据已过期,请重新采集!", "FpzsMainPlugin_144", "imc-rim-formplugin", new Object[0]), 5000);
-        } else {
-            this.setInvoiceFiled(invoiceJson);
-            int invoiceIndex = 0;
-            customParams.put("invoice", invoiceJson);
-            customParams.put("row", Integer.valueOf(invoiceIndex));
-            if (FpzsMainService.canEdit(invoiceJson)) {
-                customParams.put("editAllow", Boolean.TRUE);
-                param.setCaption(ResManager.loadKDString("发票编辑", "FpzsMainPlugin_145", "imc-rim-formplugin", new Object[0]));
-            }
-
-            String pageId = this.getView().getPageId();
-            JSONObject businessParam = FpzsMainService.getBusinessParam(pageId, CollectTypeEnum.PC_UPLOAD.getCode());
-            invoiceJson.put("org_id", businessParam.getString("org_id"));
-            invoiceJson.put("rim_user", businessParam.get("rim_user"));
-            param.setCustomParams(customParams);
-            param.getOpenStyle().setShowType(ShowType.Modal);
-            param.setFormId("rim_inv_collect_edit");
-            CloseCallBack closeCallBack = new CloseCallBack(this, "rim_inv_collect_edit");
-            param.setCloseCallBack(closeCallBack);
-            this.getView().showForm(param);
-        }
-    }
-
-    private void setInvoiceFiled(JSONObject invoiceJson) {
-        String serialNo = invoiceJson.getString("serialNo");
-        if (!StringUtils.isBlank(serialNo)) {
-            QFilter qFilter = new QFilter("serial_no", "=", serialNo);
-            InvoiceQueryService invoiceQueryService = new InvoiceQueryService();
-            DynamicObjectCollection collection = invoiceQueryService.findByFilter("collect_type", qFilter);
-            if (!CollectionUtils.isEmpty(collection)) {
-                invoiceJson.put("collect_type", ((DynamicObject)collection.get(0)).getString("collect_type"));
-            }
-
-        }
-    }
-
-    private void showAttachEdit() {
-        FormShowParameter param = new FormShowParameter();
-        Map<String, Object> customParams = new HashMap(8);
-        int attachIndex = 0;
-        String attachModel = this.getView().getPageCache().get("attach_list_model");
-        if (StringUtils.isEmpty(attachModel)) {
-            attachIndex = this.getModel().getEntryCurrentRowIndex("attach_grid_entry");
-        } else {
-            attachIndex = this.getModel().getEntryCurrentRowIndex("attach_card_entry");
-        }
-
-        DynamicObject obj = this.getModel().getEntryRowEntity("attach_grid_entry", attachIndex);
-        customParams.put("attach_name", obj.getString("attach_name"));
-        customParams.put("attach_remark", obj.getString("attach_remark"));
-        customParams.put("file_extension", obj.get("file_extension"));
-        Date uploadDate = obj.getDate("upload_date");
-        customParams.put("update_time", uploadDate);
-        customParams.put("attach_type", obj.getInt("attach_type"));
-        customParams.put("attachid", obj.getLong("attachid"));
-        customParams.put("url", obj.getString("attach_path"));
-        customParams.put("attach_category", obj.getString("attach_categoryid"));
-        param.setCustomParams(customParams);
-        param.getOpenStyle().setShowType(ShowType.Modal);
-        param.setFormId("rim_fpzs_attach_edit");
-        CloseCallBack closeCallBack = new CloseCallBack(this, "rim_fpzs_attach_edit");
-        param.setCloseCallBack(closeCallBack);
-        this.getView().showForm(param);
-    }
-
-    private void updateAttachData(Map<String, Object> returnData) {
-        int attachIndex = this.getCurrentAttachIndex();
-        Object attachName = returnData.get("attach_name");
-        Object remark = returnData.get("attach_remark");
-        Object attachCategory = returnData.get("attach_category");
-        this.getModel().setValue("attach_name", attachName, attachIndex);
-        this.getModel().setValue("attach_type", returnData.get("attach_type"), attachIndex);
-        this.getModel().setValue("attach_remark", remark, attachIndex);
-        this.getModel().setValue("attach_category_grid", returnData.get("attach_category"), attachIndex);
-        this.getModel().setValue("attach_category", returnData.get("attach_category_simplify"), attachIndex);
-        this.getModel().setValue("attach_name_grid", returnData.get("attach_name"), attachIndex);
-        JSONObject attachInfo = new JSONObject();
-        attachInfo.put("attach_name", attachName);
-        attachInfo.put("remark", remark);
-        attachInfo.put("attach_category", attachCategory);
-        attachInfo.put("id", this.getModel().getValue("attachid", attachIndex));
-        JSONArray updatedAttachArray = new JSONArray();
-        updatedAttachArray.add(attachInfo);
-        this.updateAttachCache(updatedAttachArray);
-    }
-
-    private void updateAttachCache(JSONArray newAttachArray) {
-        String pageId = this.getView().getPageId();
-        JSONArray attachDataCache = FpzsMainService.getAttachDataCache(pageId);
-        if (attachDataCache != null && attachDataCache.size() != 0 && newAttachArray != null && newAttachArray.size() != 0) {
-            Boolean isUpdated = Boolean.FALSE;
-
-            for(int i = 0; i < attachDataCache.size(); ++i) {
-                JSONObject oldAttachInfo = attachDataCache.getJSONObject(i);
-                Long oldId = oldAttachInfo.getLong("id");
-
-                for(int j = 0; j < newAttachArray.size(); ++j) {
-                    JSONObject newAttachInfo = newAttachArray.getJSONObject(j);
-                    Long newId = newAttachInfo.getLong("id");
-                    if (oldId.equals(newId)) {
-                        String attachName = newAttachInfo.getString("attach_name");
-                        Long attachCategoryId = newAttachInfo.getLong("attach_category");
-                        String remark = newAttachInfo.getString("remark");
-                        if (!StringUtils.isEmpty(attachName)) {
-                            oldAttachInfo.put("attach_name", attachName);
-                        }
-
-                        if (!StringUtils.isEmpty(remark)) {
-                            oldAttachInfo.put("remark", remark);
-                        }
-
-                        if (!ObjectUtils.isEmpty(attachCategoryId)) {
-                            oldAttachInfo.put("attach_category", attachCategoryId);
-                        }
-
-                        isUpdated = Boolean.TRUE;
-                        break;
-                    }
-                }
-            }
-
-            if (isUpdated) {
-                FpzsMainService.setAttachDataCache(pageId, attachDataCache.toJSONString());
-            }
-
-        }
-    }
-
-    private int getCurrentAttachIndex() {
-        String attachModel = this.getView().getPageCache().get("attach_list_model");
-        int attachIndex = 0;
-        if (StringUtils.isEmpty(attachModel)) {
-            attachIndex = this.getModel().getEntryCurrentRowIndex("attach_grid_entry");
-        } else {
-            attachIndex = this.getModel().getEntryCurrentRowIndex("attach_card_entry");
-        }
-
-        return attachIndex;
-    }
-
-    private void updateInvoiceData(Map<String, Object> returnData) {
-        JSONObject dataJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-        if (dataJson == null) {
-            dataJson = new JSONObject();
-        }
-
-        JSONObject invoice = (JSONObject)returnData.get("invoice");
-        String oldSerialNo = (String)returnData.get("oldSerialNo");
-        String newSerialNo = invoice.getString("serialNo");
-        JSONObject oldInvoice = dataJson.getJSONObject(oldSerialNo);
-        Long mainId;
-        if (oldInvoice != null) {
-            mainId = BigDecimalUtil.transDecimal(oldInvoice.get("uploadSeq")).longValue();
-            if (mainId >= 0L) {
-                invoice.put("uploadSeq", mainId);
-            }
-        }
-
-        dataJson.put(newSerialNo, invoice);
-        if (!newSerialNo.equals(oldSerialNo)) {
-            dataJson.remove(oldSerialNo);
-        }
-
-        this.saveInvoiceDataCache(dataJson.toJSONString());
-        mainId = invoice.getLong("mainId");
-        Long unCheckId = invoice.getLong("unCheckId");
-        if (unCheckId != null) {
-            this.showSelectInvoice((List)null, (List)Stream.of(unCheckId).collect(Collectors.toList()), (JSONArray)null);
-        } else {
-            this.showSelectInvoice((List)Stream.of(mainId).collect(Collectors.toList()), (List)null, (JSONArray)null);
-        }
-
-    }
-
-    private void deleteCurrentEntry(String entryId) {
-        int attachIndex = this.getModel().getEntryCurrentRowIndex(entryId);
-        if ("attach_grid_entry".equals(entryId)) {
-            Object attachid = this.getModel().getValue("attachid", attachIndex);
-            if (attachid != null) {
-                Long attachId = Long.valueOf(attachid.toString());
-                QFilter deleteFilter = new QFilter("id", "=", attachId);
-                DeleteServiceHelper.delete("rim_attach", deleteFilter.toArray());
-            }
-
-            this.getModel().deleteEntryRow(entryId, attachIndex);
-            this.getModel().deleteEntryRow("attach_card_entry", attachIndex);
-            this.calculationSum();
-        } else {
-            this.getModel().deleteEntryRow(entryId, attachIndex);
-        }
-
-    }
-
-    private void showDeleteConfirm(String confirmMsg, String callBackId) {
-        Map<Integer, String> btnNameMaps = new HashMap(2);
-        btnNameMaps.put(MessageBoxResult.No.getValue(), ResManager.loadKDString("取消", "FpzsMainPlugin_146", "imc-rim-formplugin", new Object[0]));
-        btnNameMaps.put(MessageBoxResult.Yes.getValue(), ResManager.loadKDString("确认", "FpzsMainPlugin_147", "imc-rim-formplugin", new Object[0]));
-        this.getView().showConfirm(confirmMsg, "", MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener(callBackId), btnNameMaps);
-    }
-
-    private void deleteEntryData(String entryId, boolean clear) {
-        String pageId = this.getView().getPageId();
-        if (clear) {
-            if ("attach_grid_entry".equals(entryId)) {
-                this.deleteAttachRelation(Boolean.TRUE, (int[])null);
-            }
-
-            this.getModel().deleteEntryData(entryId);
-            FpzsMainService.removeAttachDataCache(pageId);
-        } else {
-            EntryGrid entryGrid = (EntryGrid)this.getControl(entryId);
-            int[] selectRows = entryGrid.getSelectRows();
-            if ("attach_grid_entry".equals(entryId)) {
-                selectRows = this.getSelectedRows("attach_grid_entry");
-            }
-
-            if (selectRows != null && selectRows.length >= 1) {
-                List<String> deleteAttachIds;
-                if ("attach_grid_entry".equals(entryId)) {
-                    deleteAttachIds = this.deleteAttachRelation(Boolean.FALSE, selectRows);
-                } else {
-                    deleteAttachIds = new ArrayList(selectRows.length);
-                }
-
-                this.getModel().deleteEntryRows(entryId, selectRows);
-                JSONArray attachDataCache = FpzsMainService.getAttachDataCache(pageId);
-                JSONArray newAttachDataCache = (JSONArray)attachDataCache.stream().filter((f) -> {
-                    JSONObject attachInfo = (JSONObject)f;
-                    String attach_id = attachInfo.getString("attach_id");
-                    return !deleteAttachIds.contains(attach_id);
-                }).collect(Collectors.toCollection(JSONArray::new));
-                FpzsMainService.setAttachDataCache(pageId, newAttachDataCache.toJSONString());
-            } else {
-                this.getView().showTipNotification(ResManager.loadKDString("请先选择记录", "FpzsMainPlugin_148", "imc-rim-formplugin", new Object[0]), 2000);
-            }
-        }
-
-        this.calculationSum();
-    }
-
-    private List<String> deleteAttachRelation(Boolean isClear, int[] selectRows) {
-        List<String> deleteAttachIds = new ArrayList(16);
-        List<String> deleteAttachSerialNos = new ArrayList(16);
-        int count;
-        if (!isClear && selectRows != null) {
-            for(count = 0; count < selectRows.length; ++count) {
-                deleteAttachIds.add(this.getModel().getValue("attachid", selectRows[count]).toString());
-                Object serialNoObj = this.getModel().getValue("serial_no3", selectRows[count]);
-                if (serialNoObj != null && !"".equals(serialNoObj)) {
-                    deleteAttachSerialNos.add(serialNoObj.toString());
-                }
-            }
-        } else {
-            count = this.getModel().getEntryRowCount("attach_grid_entry");
-
-            for(int i = 0; i < count; ++i) {
-                DynamicObject dynamicObject = (DynamicObject)this.getView().getModel().getEntryEntity("attach_grid_entry").get(i);
-                deleteAttachIds.add(dynamicObject.getString("attachid"));
-                Object serialNoObj = this.getModel().getValue("serial_no3", i);
-                if (serialNoObj != null && !"".equals(serialNoObj)) {
-                    deleteAttachSerialNos.add(serialNoObj.toString());
-                }
-            }
-        }
-
-        Map<String, Object> param = FpzsMainService.getCustomParam(this);
-        String billId = "billId";
-        if (!CollectionUtils.isEmpty(param)) {
-            billId = (String)param.get("billId");
-        }
-
-        QFilter serialNoFilter = new QFilter("relation_id", "in", deleteAttachSerialNos);
-        QFilter deleteFilter = new QFilter("attach_id", "in", deleteAttachIds);
-        QFilter relationTypeFilter = new QFilter("relation_type", "=", "3");
-        DeleteServiceHelper.delete("rim_attach_relation", new QFilter[]{deleteFilter, serialNoFilter, relationTypeFilter});
-        if (isClear) {
-            this.getModel().deleteEntryData("attach_card_entry");
-        } else {
-            this.getModel().deleteEntryRows("attach_card_entry", selectRows);
-        }
-
-        return deleteAttachIds;
-    }
-
-    private void showFlex() {
-        int attachCount = this.getModel().getEntryRowCount("attach_grid_entry");
-        String tab = "tab_invoice";
-        if (null != this.getPageCache().get("tabSelect")) {
-            tab = this.getPageCache().get("tabSelect");
-        }
-
-        if (!tab.equalsIgnoreCase("tab_invoice") && !tab.equalsIgnoreCase("tab_oversea")) {
-            if (tab.equalsIgnoreCase("tab_attach")) {
-                this.showAttachFlex(attachCount);
-            } else if (tab.equalsIgnoreCase("tab_oversea")) {
-                this.showInvoiceFlex(tab);
-            }
-        } else {
-            this.showInvoiceFlex(tab);
-        }
-
-        this.calculationSum();
-    }
-
-    private void showInvoiceFlex(String tab) {
-        int importCount = 0;
-        int errorCount = 0;
-        JSONObject dataJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-        logger.info("scannerProcess showFlex dataJson : " + dataJson);
-        if (dataJson == null) {
-            importCount = 0;
-            errorCount = 0;
-        } else {
-            Set<String> keySet = dataJson.keySet();
-            Iterator<String> iterator = keySet.iterator();
-
-            while(iterator.hasNext()) {
-                String key = (String)iterator.next();
-                JSONObject obj = dataJson.getJSONObject(key);
-                if (FpzsMainService.isFilter(obj)) {
-                    ++errorCount;
-                } else {
-                    ++importCount;
-                }
-            }
-        }
-
-        String flex_init_description = ResManager.loadKDString("请从左侧选择导入发票的方式。", "FpzsMainPlugin_149", "imc-rim-formplugin", new Object[0]);
-        String radioGroup = (String)this.getModel().getValue("radiogroup");
-        this.getView().setVisible(Boolean.FALSE, new String[]{"flexpanelap11"});
-        this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap1"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"attach_panel"});
-        this.getView().setVisible(Boolean.TRUE, new String[]{"radio_flex"});
-        this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap131"});
-        this.getView().setVisible(Boolean.TRUE, new String[]{"all_invoice"});
-        if (importCount <= 0 || !"1".equals(radioGroup) && !"2".equals(radioGroup)) {
-            this.getView().setVisible(Boolean.FALSE, new String[]{"advconap_import"});
-        } else {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"advconap_import"});
-        }
-
-        if (errorCount <= 0 || !"1".equals(radioGroup) && !"3".equals(radioGroup)) {
-            this.getView().setVisible(Boolean.FALSE, new String[]{"advconap_error"});
-        } else {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"advconap_error"});
-        }
-
-        if (importCount == 0 && errorCount == 0) {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"flex_init"});
-            this.getView().setVisible(Boolean.FALSE, new String[]{"all_invoice"});
-            this.getView().setVisible(Boolean.FALSE, new String[]{"advconap_import"});
-            this.getView().setVisible(Boolean.FALSE, new String[]{"advconap_error"});
-            this.getView().setVisible(Boolean.FALSE, new String[]{"attach_panel"});
-            this.getModel().setValue("flex_init_description", flex_init_description);
-        } else {
-            this.getView().setVisible(Boolean.FALSE, new String[]{"flex_init"});
-        }
-
-        this.showInvoiceModel();
-    }
-
-    private void showAttachFlex(int attachCount) {
-        this.getView().setVisible(Boolean.FALSE, new String[]{"flexpanelap1"});
-        this.getView().setVisible(Boolean.TRUE, new String[]{"flexpanelap11"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"all_invoice"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"advconap_import"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"advconap_error"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"radio_flex"});
-        this.getView().setVisible(Boolean.FALSE, new String[]{"flexpanelap131"});
-        if (attachCount > 0) {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"attach_panel"});
-        }
-
-        String flex_init_description = ResManager.loadKDString("请从左侧选择导入附件的方式。", "FpzsMainPlugin_150", "imc-rim-formplugin", new Object[0]);
-        if (attachCount == 0) {
-            this.getView().setVisible(Boolean.TRUE, new String[]{"flex_init"});
-            this.getView().setVisible(Boolean.FALSE, new String[]{"attach_panel"});
-            this.getModel().setValue("flex_init_description", flex_init_description);
-        } else {
-            this.getView().setVisible(Boolean.FALSE, new String[]{"flex_init"});
-        }
-
-        this.showAttachModel();
-    }
-
-    private void showInvoiceModel() {
-        String invoiceModel = this.getView().getPageCache().get("invoice_list_model");
-        Map<String, Object> falseCtrl = new HashMap(1);
-        falseCtrl.put("vi", 0);
-        Map<String, Object> trueCtrl = new HashMap(1);
-        trueCtrl.put("vi", 1);
-        if (StringUtils.isEmpty(invoiceModel)) {
-            this.getView().updateControlMetadata("list_invoice_flex", trueCtrl);
-            this.getView().updateControlMetadata("error_list_invoice_flex", trueCtrl);
-            this.getView().updateControlMetadata("error_card_invoice_flex", falseCtrl);
-            this.getView().updateControlMetadata("card_invoice_flex", falseCtrl);
-        } else {
-            this.getView().updateControlMetadata("list_invoice_flex", falseCtrl);
-            this.getView().updateControlMetadata("error_list_invoice_flex", falseCtrl);
-            this.getView().updateControlMetadata("error_card_invoice_flex", trueCtrl);
-            this.getView().updateControlMetadata("card_invoice_flex", trueCtrl);
-        }
-
-    }
-
-    private void showAttachModel() {
-        String attachModel = this.getView().getPageCache().get("attach_list_model");
-        if (StringUtils.isEmpty(attachModel)) {
-            this.getView().setVisible(Boolean.FALSE, new String[]{"picture_attach"});
-            this.getView().setVisible(Boolean.TRUE, new String[]{"list_attach"});
-        } else {
-            this.getView().setVisible(Boolean.FALSE, new String[]{"list_attach"});
-            this.getView().setVisible(Boolean.TRUE, new String[]{"picture_attach"});
-        }
-
-    }
-
-    private void calculationSum() {
-        JSONObject cacheJson = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-        BigDecimal importAmount = BigDecimal.ZERO;
-        BigDecimal importTaxAmount = BigDecimal.ZERO;
-        BigDecimal errorAmount = BigDecimal.ZERO;
-        BigDecimal errorTaxAmount = BigDecimal.ZERO;
-        int errorTotal = 0;
-        int importTotal = 0;
-        if (cacheJson != null) {
-            Iterator<String> iterator = cacheJson.keySet().iterator();
-
-            while(iterator.hasNext()) {
-                String key = (String)iterator.next();
-                JSONObject obj = cacheJson.getJSONObject(key);
-                BigDecimal objTotalAmount = BigDecimal.ZERO;
-                BigDecimal objTotalTaxAmount = BigDecimal.ZERO;
-
-                try {
-                    objTotalAmount = BigDecimalUtil.transDecimal(obj.getBigDecimal("totalAmount"));
-                    objTotalTaxAmount = BigDecimalUtil.transDecimal(obj.getBigDecimal("totalTaxAmount"));
-                } catch (Exception var16) {
-                    logger.info("合计金额计算失败,格式不正确:" + obj.get("totalAmount") + "," + obj.get("totalTaxAmount"));
-                }
-
-                if (FpzsMainService.isFilter(obj)) {
-                    ++errorTotal;
-                    errorAmount = errorAmount.add(objTotalAmount);
-                    errorTaxAmount = errorTaxAmount.add(objTotalTaxAmount);
-                } else {
-                    ++importTotal;
-                    importAmount = importAmount.add(objTotalAmount);
-                    importTaxAmount = importTaxAmount.add(objTotalTaxAmount);
-                }
-            }
-        }
-
-        int attachTotal = this.getModel().getEntryRowCount("attach_grid_entry");
-        Label labelapImportMsgCount = (Label)this.getView().getControl("labelap_import_msg_count");
-        Label labelapErrorMsgCount = (Label)this.getView().getControl("labelap_error_msg_count");
-        Label labelapAttachMsgCount = (Label)this.getView().getControl("labelap_attach_msg_count");
-        labelapImportMsgCount.setText(String.format(ResManager.loadKDString("共%1$s张,价税合计:%2$s元  税额:%3$s元", "FpzsMainPlugin_151", "imc-rim-formplugin", new Object[0]), importTotal, BigDecimalUtil.format(importAmount, "###,##0.00"), BigDecimalUtil.format(importTaxAmount, "###,##0.00")));
-        labelapErrorMsgCount.setText(String.format(ResManager.loadKDString("共%1$s张,价税合计:%2$s元  税额:%3$s元", "FpzsMainPlugin_151", "imc-rim-formplugin", new Object[0]), errorTotal, BigDecimalUtil.format(errorAmount, "###,##0.00"), BigDecimalUtil.format(errorTaxAmount, "###,##0.00")));
-        labelapAttachMsgCount.setText(String.format(ResManager.loadKDString("共%s份", "FpzsMainPlugin_152", "imc-rim-formplugin", new Object[0]), attachTotal));
-        Label labelapInvTotal = (Label)this.getView().getControl("labelap_inv_total");
-        Label labelapInvamountTotal = (Label)this.getView().getControl("labelap_invamount_total");
-        Label labelapInvtaxTotal = (Label)this.getView().getControl("labelap_invtax_total");
-        Label labelapAttachTotal = (Label)this.getView().getControl("labelap_attach_total");
-        labelapInvTotal.setText(importTotal + errorTotal + "");
-        labelapInvamountTotal.setText(BigDecimalUtil.format(importAmount.add(errorAmount), "###,##0.00"));
-        labelapInvtaxTotal.setText(BigDecimalUtil.format(errorTaxAmount.add(importTaxAmount), "###,##0.00"));
-        labelapAttachTotal.setText(attachTotal + "");
-    }
-
-    private void operateCustomTable(String type, String operate) {
-        String entryId = null;
-        if ("error".equals(type)) {
-            entryId = "error_invoice_card_entry";
-        } else if ("import".equals(type)) {
-            entryId = "invoice_card_entry";
-        }
-
-        if (entryId != null && "clearTable".equals(operate)) {
-            this.getModel().deleteEntryData(entryId);
-            JSONObject table = new JSONObject();
-            table.put("tableId", this.getTableId(type));
-            this.clearInvoiceTable(table.toJSONString());
-        }
-
-        String invoiceModel = this.getView().getPageCache().get("invoice_list_model");
-        JSONObject map;
-        if (!StringUtils.isEmpty(invoiceModel) && "card".equals(invoiceModel) && "deleteRow".equals(operate)) {
-            JSONArray array = this.getSelectedCardInvoice(this.getTableId(type));
-            this.deleteCardInvoiceRow(this.getTableId(type), array);
-            this.updateInvoiceCache(array);
-            map = FpzsMainService.getInvoiceDataCache(this.getView().getPageId());
-            FpzsMainService.updateInvoiceGrid(this, map);
-            this.updateInvoiceCard(map);
-            this.showFlex();
-        } else {
-            CustomControl control = (CustomControl)this.getControl(this.getCustomId(type));
-            map = new JSONObject();
-            map.put("operate", operate);
-            map.put("tableId", this.getTableId(type));
-            map.put("time", System.currentTimeMillis());
-            control.setData(map);
-        }
-    }
-
-    private void editClass(String eventArgs) {
-        this.getView().setEnable(Boolean.TRUE, new String[]{"edit_class"});
-        JSONObject json = JSON.parseObject(eventArgs);
-        JSONArray array = json.getJSONArray("rows");
-        if (CollectionUtils.isEmpty(array)) {
-            this.getView().showTipNotification(ResManager.loadKDString("请先选择记录", "FpzsMainPlugin_148", "imc-rim-formplugin", new Object[0]), 2000);
-        } else {
-            DynamicObjectCollection invoiceCardDatas = this.getModel().getEntryEntity("invoice_card_entry");
-            List<String> serialNoList = new ArrayList(invoiceCardDatas.size());
-            int i = 0;
-            Iterator var7 = invoiceCardDatas.iterator();
-
-            while(var7.hasNext()) {
-                DynamicObject invoiceCardData = (DynamicObject)var7.next();
-                if (invoiceCardData != null) {
-                    String importSerialNo = invoiceCardData.getString("import_serial_no");
-                    if (array.size() > 0 && array.contains(importSerialNo)) {
-                        serialNoList.add(importSerialNo);
-                    }
-
-                    ++i;
-                }
-            }
-
-            if (!CollectionUtils.isEmpty(serialNoList)) {
-                DynamicObject[] invoices = BusinessDataServiceHelper.load("rim_invoice", "id, check_status, mul_class", new QFilter[]{new QFilter("serial_no", "in", serialNoList)});
-                this.beginEdit(invoices);
-            }
-
-        }
-    }
-
-    private void beginEdit(DynamicObject[] invoices) {
-        if (invoices != null) {
-            boolean flag = false;
-            List<String> mainIds = Lists.newArrayList();
-            List<String> uncheckIds = Lists.newArrayList();
-            List<String> ids = Lists.newArrayList();
-            DynamicObject[] var6 = invoices;
-            int var7 = invoices.length;
-
-            for(int var8 = 0; var8 < var7; ++var8) {
-                DynamicObject invoice = var6[var8];
-                if ("1".equals(invoice.getString("check_status"))) {
-                    mainIds.add(invoice.getString("id"));
-                } else {
-                    uncheckIds.add(invoice.getString("id"));
-                }
-
-                DynamicObjectCollection mul_class = invoice.getDynamicObjectCollection("mul_class");
-                if (!CollectionUtils.isEmpty(mul_class)) {
-                    Iterator var11 = mul_class.iterator();
-
-                    while(var11.hasNext()) {
-                        DynamicObject obj = (DynamicObject)var11.next();
-                        DynamicObject sysOrg = obj.getDynamicObject("fbasedataid");
-                        ids.add(sysOrg.getPkValue() + "");
-                    }
-
-                    flag = true;
-                }
-            }
-
-            if (flag) {
-                this.getView().getPageCache().put("cache_mainIds", JSON.toJSONString(mainIds));
-                this.getView().getPageCache().put("cache_uncheckIds", JSON.toJSONString(uncheckIds));
-                Map<Integer, String> confirmBtnNameMaps = new HashMap(2);
-                confirmBtnNameMaps.put(MessageBoxResult.No.getValue(), ResManager.loadKDString("取消", "FpzsMainPlugin_146", "imc-rim-formplugin", new Object[0]));
-                confirmBtnNameMaps.put(MessageBoxResult.Yes.getValue(), ResManager.loadKDString("确认", "FpzsMainPlugin_147", "imc-rim-formplugin", new Object[0]));
-                this.getView().showConfirm(ResManager.loadKDString("所选发票已有发票标签,请确认是否修改?", "FpzsMainPlugin_163", "imc-rim-formplugin", new Object[0]), "", MessageBoxOptions.YesNo, ConfirmTypes.Delete, new ConfirmCallBackListener("editclass_callback"), confirmBtnNameMaps);
-            } else {
-                FormShowParameter param = new FormShowParameter();
-                param.getOpenStyle().setShowType(ShowType.Modal);
-                param.setFormId("rim_chose_invoice_class");
-                CloseCallBack closeCallBack = new CloseCallBack(this, "editclass_callback");
-                param.setCloseCallBack(closeCallBack);
-                param.setCustomParam("mainIds", mainIds);
-                param.setCustomParam("uncheckIds", uncheckIds);
-                this.getView().showForm(param);
-            }
-
-        }
-    }
-
-    private String getTableId(String type) {
-        return this.getView().getPageId() + type;
-    }
-
-    private String getCustomId(String type) {
-        return "customcontrol_" + type;
-    }
-
-    private void scannerProcess(String type) {
-        String pageId = this.getView().getPageId();
-        logger.info("scannerProcess-{}-{} coming", pageId, type);
-        DLock lock = DLock.create("scannerProcess" + pageId, ResManager.loadKDString("刷新卡片锁", "FpzsMainPlugin_153", "imc-rim-formplugin", new Object[0]));
-        Throwable var4 = null;
-
-        try {
-            int times = 0;
-            String dialogId = "scanner";
-
-            while(true) {
-                String failResultDataStr;
-                FormShowParameter failedListForm;
-                label605:
-                while(true) {
-                    do {
-                        if (times >= 30) {
-                            return;
-                        }
-
-                        ++times;
-                    } while(!lock.tryLock(500L));
-
-                    times = 100;
-                    JSONObject result = RecognitionCheckTask.queryCacheFile(pageId);
-                    logger.info("scannerProcess-{}:{}", pageId, result);
-                    boolean var43 = false;
-
-                    try {
-                        var43 = true;
-                        CustomControl customcontrol = (CustomControl)this.getControl("progressBar_customcontrol");
-                        DialogService service = new DialogService(customcontrol);
-                        Set<String> urlSet = result.keySet();
-                        Iterator<String> it = urlSet.iterator();
-                        int waiting = 0;
-                        int fail = 0;
-
-                        String repeatFlag;
-                        while(it.hasNext()) {
-                            String url = (String)it.next();
-                            repeatFlag = result.getString(url);
-                            if ("waiting".equals(repeatFlag)) {
-                                ++waiting;
-                            } else if ("fail".equals(repeatFlag)) {
-                                ++fail;
-                            }
-                        }
-
-                        int total = result.size();
-                        logger.info("scannerProcess-{} waiting:{},fail:{},total:{}", new Object[]{pageId, waiting, fail, total});
-                        JSONArray retryArray;
-                        JSONObject attachJson;
-                        JSONObject invoiceInfo;
-                        if ("dialog".equals(type) && (total == 0 || waiting == 0)) {
-                            if (total > 0) {
-                                RecognitionCheckTask.clearCacheFile(pageId);
-                            }
-
-                            if (fail > 0) {
-                                Set<String> urlSet2 = result.keySet();
-                                Iterator<String> it2 = urlSet2.iterator();
-                                retryArray = new JSONArray();
-
-                                label579:
-                                while(true) {
-                                    String url;
-                                    String status;
-                                    do {
-                                        if (!it2.hasNext()) {
-                                            if (!retryArray.isEmpty()) {
-                                                Map<String, Object> customParams = new HashMap(4);
-                                                customParams.put("retryArray", retryArray);
-                                                invoiceInfo = FpzsMainService.getBusinessParam(pageId, CollectTypeEnum.PC_UPLOAD.getCode());
-                                                customParams.put("businessParam", invoiceInfo);
-                                                FormShowParameter showParameter = this.newPage("rim_inv_recognition_retry", customParams, "retryCallback");
-                                                showParameter.setCaption(ResManager.loadKDString("识别失败重试列表", "FpzsMainPlugin_155", "imc-rim-formplugin", new Object[0]));
-                                                this.getView().showForm(showParameter);
-                                            }
-                                            break label579;
-                                        }
-
-                                        url = (String)it2.next();
-                                        status = result.getString(url);
-                                    } while(!"fail".equals(status));
-
-                                    attachJson = new JSONObject();
-                                    attachJson.put("fileUrl", url);
-                                    attachJson.put("fileName", url.substring(url.lastIndexOf(47) + 1, url.length()));
-                                    JSONObject cause = RecognitionCheckTask.queryCacheCause(pageId);
-                                    if (cause != null && StringUtils.isNotEmpty(cause.getString(url))) {
-                                        attachJson.put("failDescription", cause.getString(url));
-                                    } else {
-                                        attachJson.put("failDescription", ResManager.loadKDString("处理失败", "FpzsMainPlugin_154", "imc-rim-formplugin", new Object[0]));
-                                    }
-
-                                    retryArray.add(attachJson);
-                                }
-                            }
-
-                            if (total > 0 && fail > 0) {
-                                this.getView().showTipNotification(String.format(ResManager.loadKDString("上传%1$s个文件,处理失败%2$s个", "FpzsMainPlugin_106", "imc-rim-formplugin", new Object[0]), total, fail), 10000);
-                            } else if (total > 0) {
-                                this.getView().showSuccessNotification(String.format(ResManager.loadKDString("上传%1$s个文件,处理成功%2$s个", "FpzsMainPlugin_107", "imc-rim-formplugin", new Object[0]), total, total, 10000));
-                            }
-
-                            service.hide();
-                            repeatFlag = this.getView().getPageId() + "scannerProcessRepeat";
-                            String scannerProcessRepeat = CacheHelper.get(repeatFlag);
-                            if (StringUtils.isNotEmpty(scannerProcessRepeat) && "true".equals(scannerProcessRepeat)) {
-                                this.getView().showSuccessNotification(ResManager.loadKDString("发票已存在列表", "FpzsMainPlugin_137", "imc-rim-formplugin", new Object[0]));
-                                CacheHelper.remove(repeatFlag);
-                            }
-                        } else {
-                            String[] content = new String[]{String.format(ResManager.loadKDString("待处理文件剩余%1$s个", "FpzsMainPlugin_156", "imc-rim-formplugin", new Object[0]), waiting), String.format(ResManager.loadKDString("正在处理中(%1$s/%2$s)", "FpzsMainPlugin_157", "imc-rim-formplugin", new Object[0]), total - waiting, total)};
-                            service.show(dialogId, content, 1000);
-                        }
-
-                        JSONObject data = FpzsMainService.getInvoiceDataCache(pageId);
-                        FpzsMainService.updateInvoiceGrid(this, data);
-                        this.updateInvoiceCard(data);
-                        Map<String, String> attIdSerialMap = Maps.newLinkedHashMap();
-                        Iterator var57 = data.entrySet().iterator();
-
-                        label551:
-                        while(true) {
-                            if (var57.hasNext()) {
-                                Map.Entry<String, Object> entry = (Map.Entry)var57.next();
-                                invoiceInfo = (JSONObject)entry.getValue();
-                                List<Map<String, Object>> attachList = (List)invoiceInfo.get("attachList");
-                                if (attachList == null || attachList.size() == 0) {
-                                    continue;
-                                }
-
-                                Iterator var66 = attachList.iterator();
-
-                                while(true) {
-                                    if (!var66.hasNext()) {
-                                        continue label551;
-                                    }
-
-                                    Map<String, Object> attachInfo = (Map)var66.next();
-                                    String id = (String)attachInfo.get("id");
-                                    attIdSerialMap.put(id, invoiceInfo.getString("serialNo"));
-                                }
-                            }
-
-                            retryArray = FpzsMainService.getAttachDataCache(pageId);
-                            if (retryArray.size() != 0) {
-                                this.getModel().deleteEntryData("attach_grid_entry");
-                                this.getModel().deleteEntryData("attach_card_entry");
-                                Iterator var59 = retryArray.iterator();
-
-                                while(var59.hasNext()) {
-                                    Object attach = var59.next();
-                                    attachJson = (JSONObject)attach;
-                                    String id = attachJson.getString("id");
-                                    this.handleAttachCategory(attachJson);
-                                    Iterator var22 = attIdSerialMap.entrySet().iterator();
-
-                                    while(var22.hasNext()) {
-                                        Map.Entry<String, String> entry = (Map.Entry)var22.next();
-                                        if (id.equals(entry.getKey())) {
-                                            attachJson.put("serial_no", entry.getValue());
-                                        }
-                                    }
-
-                                    int row = this.getModel().createNewEntryRow("attach_grid_entry");
-                                    this.getModel().setValue("attachid", attachJson.get("id"), row);
-                                    this.getModel().setValue("attach_category_grid", attachJson.get("attach_category"), row);
-                                    this.getModel().setValue("attach_name", attachJson.get("attach_name"), row);
-                                    this.getModel().setValue("serial_no3", attachJson.get("serial_no"), row);
-                                    this.getModel().setValue("attach_type", attachJson.get("attach_type"), row);
-                                    this.getModel().setValue("upload_date", attachJson.getDate("create_time"), row);
-                                    this.getModel().setValue("attach_remark", attachJson.get("remark"), row);
-                                    this.getModel().setValue("attach_path", attachJson.get("attach_url"), row);
-                                    this.getModel().setValue("file_extension", attachJson.get("file_extension"), row);
-                                    this.getModel().setValue("attach_no", attachJson.get("attach_no"), row);
-                                    int attachGridIndex = this.getModel().createNewEntryRow("attach_card_entry");
-                                    String simplify_name = attachJson.getString("simplify_name");
-                                    DynamicObject attachObject;
-                                    if (StringUtils.isEmpty(simplify_name)) {
-                                        attachObject = BusinessDataServiceHelper.loadSingle(attachJson.getLong("attach_category"), "bdm_attach_type");
-                                        simplify_name = attachObject.getString("simplify_name");
-                                    }
-
-                                    this.getModel().setValue("attach_category", simplify_name, attachGridIndex);
-                                    this.getModel().setValue("attach_name_grid", attachJson.get("attach_name"), attachGridIndex);
-                                    attachObject = BusinessDataServiceHelper.newDynamicObject("rim_attach");
-                                    attachObject = DynamicObjectUtil.jsonToDynamicObject(attachJson, attachObject);
-                                    String imageUrl = this.getAttachSnapshotUrl(attachObject);
-                                    this.getModel().setValue("attach_image_grid", imageUrl, attachGridIndex);
-                                }
-                            }
-
-                            this.showFlex();
-                            var43 = false;
-                            break label605;
-                        }
-                    } catch (Exception var45) {
-                        logger.info("scannerProcess 跳过..");
-                        var43 = false;
-                    } finally {
-                        if (var43) {
-                            failResultDataStr = CacheHelper.get(this.getView().getPageId().concat("failResult"));
-                            if (StringUtils.isNotBlank(failResultDataStr)) {
-                                failedListForm = new FormShowParameter();
-                                failedListForm.setFormId("rim_inv_import_fail");
-                                failedListForm.setCustomParam("invoiceFailedList", failResultDataStr);
-                                failedListForm.getOpenStyle().setShowType(ShowType.Modal);
-                                this.getView().showForm(failedListForm);
-                                CacheHelper.remove(this.getView().getPageId().concat("failResult"));
-                            }
-
-                            lock.unlock();
-                        }
-                    }
-
-                    failResultDataStr = CacheHelper.get(this.getView().getPageId().concat("failResult"));
-                    if (StringUtils.isNotBlank(failResultDataStr)) {
-                        failedListForm = new FormShowParameter();
-                        failedListForm.setFormId("rim_inv_import_fail");
-                        failedListForm.setCustomParam("invoiceFailedList", failResultDataStr);
-                        failedListForm.getOpenStyle().setShowType(ShowType.Modal);
-                        this.getView().showForm(failedListForm);
-                        CacheHelper.remove(this.getView().getPageId().concat("failResult"));
-                    }
-
-                    lock.unlock();
-                }
-
-                failResultDataStr = CacheHelper.get(this.getView().getPageId().concat("failResult"));
-                if (StringUtils.isNotBlank(failResultDataStr)) {
-                    failedListForm = new FormShowParameter();
-                    failedListForm.setFormId("rim_inv_import_fail");
-                    failedListForm.setCustomParam("invoiceFailedList", failResultDataStr);
-                    failedListForm.getOpenStyle().setShowType(ShowType.Modal);
-                    this.getView().showForm(failedListForm);
-                    CacheHelper.remove(this.getView().getPageId().concat("failResult"));
-                }
-
-                lock.unlock();
-            }
-        } catch (Throwable var47) {
-            var4 = var47;
-            throw var47;
-        } finally {
-            if (lock != null) {
-                if (var4 != null) {
-                    try {
-                        lock.close();
-                    } catch (Throwable var44) {
-                        var4.addSuppressed(var44);
-                    }
-                } else {
-                    lock.close();
-                }
-            }
-
-        }
-    }
-
-    private void saveInvoiceDataCache(String cache) {
-        FpzsMainService.setInvoiceDataCache(this.getView().getPageId(), cache);
-    }
-
-    private void progressBarVisible(boolean visibleFlag, String[] descriptionArray) {
-        CustomControl customcontrol = (CustomControl)this.getControl("progressBar_customcontrol");
-        DialogService service = new DialogService(customcontrol);
-        if (visibleFlag) {
-            if (null != descriptionArray) {
-                service.show("1", descriptionArray, 1000);
-            } else {
-                service.show("1", new String[]{ResManager.loadKDString("进行中...", "FpzsMainPlugin_158", "imc-rim-formplugin", new Object[0])}, 1000);
-            }
-        } else {
-            service.hide();
-        }
-
-    }
-
-    private FormShowParameter newPage(String formId, Map<String, Object> customParams, String callBackId) {
-        FormShowParameter showParameter = new FormShowParameter();
-        showParameter.setShowTitle(true);
-        showParameter.setCustomParams(customParams);
-        showParameter.setFormId(formId);
-        showParameter.getOpenStyle().setShowType(ShowType.Modal);
-        if (StringUtils.isNotEmpty(callBackId)) {
-            CloseCallBack closeCallBack = new CloseCallBack(this, callBackId);
-            showParameter.setCloseCallBack(closeCallBack);
-        }
-
-        return showParameter;
-    }
-
-    private void saveVerifyResult(JSONArray invoices) {
-        if (!CollectionUtils.isEmpty(invoices)) {
-            Map<String, Object> param = FpzsMainService.getCustomParam(this);
-            VerifyStatisticsService.asyncSaveVerifyStatistics(invoices, BigDecimalUtil.transDecimal(param.get("orgId")).longValue(), (String)param.get("userId"));
-        }
-    }
-}

+ 0 - 129
src/main/java/kd/imc/rim/InvoiceCollectPluginEx.java

@@ -1,129 +0,0 @@
-package kd.imc.rim;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import kd.bos.context.RequestContext;
-import kd.bos.dataentity.serialization.SerializationUtils;
-import kd.bos.ext.form.control.CustomControl;
-import kd.bos.form.IPageCache;
-import kd.bos.form.control.events.UploadEvent;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.orm.util.CollectionUtils;
-import kd.bos.threads.ThreadPools;
-import kd.bos.util.StringUtils;
-import kd.imc.rim.common.constant.CollectTypeEnum;
-import kd.imc.rim.common.invoice.collector.InvoiceCollectTaskNew;
-import kd.imc.rim.common.service.DialogService;
-import kd.imc.rim.common.utils.BigDecimalUtil;
-import kd.imc.rim.common.utils.PermissionUtils;
-import kd.imc.rim.common.utils.RimConfigUtils;
-import kd.imc.rim.formplugin.collector.InvoiceCollectPlugin;
-
-import java.util.*;
-
-public class InvoiceCollectPluginEx extends InvoiceCollectPlugin {
-    private static Log logger = LogFactory.getLog(InvoiceCollectPluginEx.class);
-
-    @Override
-    public void afterUpload(UploadEvent evt) {
-        {
-            String itemKey = evt.getCallbackKey();
-            Object[] urls = evt.getUrls();
-            logger.info("上传文件:{}-{}", itemKey, urls);
-            if (urls.length > 0) {
-                StringJoiner taskUrls = new StringJoiner(",");
-                List<Map<String, String>> fileUrls = new ArrayList(urls.length);
-                String mapSeqStr = this.getPageCache().get("upload_seq");
-                Map<String, Object> nameSeq = new HashMap(urls.length);
-                if (StringUtils.isNotEmpty(mapSeqStr)) {
-                    nameSeq = (Map) SerializationUtils.fromJsonString(mapSeqStr, nameSeq.getClass());
-                }
-
-                int i = 0;
-
-                for(int size = urls.length; i < size; ++i) {
-                    String url = urls[i].toString();
-                    String fileName = url.substring(url.lastIndexOf(47) + 1);
-                    Map<String, String> map = new HashMap(2);
-                    map.put("url", url);
-                    map.put("name", fileName);
-                    if (!CollectionUtils.isEmpty((Map)nameSeq)) {
-                        String seq = String.valueOf(((Map)nameSeq).get(fileName));
-                        if (StringUtils.isNotEmpty(seq)) {
-                            map.put("seq", seq);
-                        }
-                    }
-
-                    fileUrls.add(map);
-                }
-
-                Collections.sort(fileUrls, (o1, o2) -> {
-                    Long uploadSeq1 = BigDecimalUtil.transDecimal(o1.get("seq")).longValue();
-                    Long uploadSeq2 = BigDecimalUtil.transDecimal(o2.get("seq")).longValue();
-                    return uploadSeq1.compareTo(uploadSeq2);
-                });
-                Iterator var14 = fileUrls.iterator();
-
-                while(var14.hasNext()) {
-                    Map<String, String> fileUrl = (Map)var14.next();
-                    taskUrls.add((CharSequence)fileUrl.get("url"));
-                }
-
-                this.getPageCache().put("upload_itemKey", itemKey);
-                this.getPageCache().remove("upload_seq");
-                this.getPageCache().put("taskUrls", taskUrls.toString());
-                this.progressBarVisible(Boolean.TRUE, new String[]{"进行中..."});
-                this.getPageCache().put("startprogress", "true");
-                JSONObject businessParam = this.getBusinessParam(CollectTypeEnum.PC_UPLOAD.getCode());
-                businessParam.put("itemKey", itemKey);
-                InvoiceCollectTaskNew collectTask = new InvoiceCollectTaskNew(RequestContext.get(), this.getView().getPageId(), fileUrls, businessParam);
-                ThreadPools.executeOnce("CollectorProgressPool", collectTask);
-            }
-
-        }
-    }
-    private JSONObject getBusinessParam(String collectType) {
-        JSONObject businessParam = new JSONObject();
-        IPageCache pageCache = this.getView().getPageCache();
-        String businessParamCache = pageCache.get("businessParam");
-        if (businessParamCache != null) {
-            businessParam = JSON.parseObject(businessParamCache);
-        } else {
-            RequestContext request = RequestContext.get();
-            businessParam.put("collect_type", collectType);
-            businessParam.put("resource", "收票管理");
-            businessParam.put("isAdmin", PermissionUtils.checkPermission(request.getUserId(), request.getOrgId(), this.getView(), "1PAFGP5MO1NU"));
-            String state = RimConfigUtils.getConfig("original_state");
-            if ("1".equals(state)) {
-                businessParam.put("originalState", "1");
-            }
-
-            Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
-            if (!CollectionUtils.isEmpty(customParams)) {
-                businessParam.putAll(customParams);
-            }
-
-            businessParam.put("billType", "fpqs");
-            pageCache.put("businessParam", businessParam.toJSONString());
-        }
-
-        logger.info("发票签收采集参数:" + businessParam);
-        return businessParam;
-    }
-
-    private void progressBarVisible(Boolean visibleFlag, String[] descriptionArray) {
-        CustomControl customcontrol = (CustomControl)this.getControl("progressBar_customcontrol");
-        DialogService service = new DialogService(customcontrol);
-        if (visibleFlag) {
-            if (null != descriptionArray) {
-                service.show("1", descriptionArray, 500);
-            } else {
-                service.show("1", new String[]{"进行中..."}, 500);
-            }
-        } else {
-            service.hide();
-        }
-
-    }
-}

+ 0 - 1182
src/main/java/kd/imc/rim/RecognitionCheckHelperEx.java

@@ -1,1182 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package kd.imc.rim;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.google.common.collect.Maps;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-import kd.bos.context.RequestContext;
-import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.resource.ResManager;
-import kd.bos.dataentity.utils.StringUtils;
-import kd.bos.fileservice.FileServiceFactory;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.orm.query.QFilter;
-import kd.bos.servicehelper.BusinessDataServiceHelper;
-import kd.bos.servicehelper.QueryServiceHelper;
-import kd.bos.servicehelper.operation.SaveServiceHelper;
-import kd.imc.aws.ofd.util.analysis.OfdReadUtils;
-import kd.imc.aws.ofd.util.model.VatInvoice;
-import kd.imc.rim.common.constant.AttachConstant;
-import kd.imc.rim.common.constant.FpzsConstant;
-import kd.imc.rim.common.constant.InputInvoiceTypeEnum;
-import kd.imc.rim.common.invoice.checknew.model.CheckParam;
-import kd.imc.rim.common.invoice.checknew.model.CheckResult;
-import kd.imc.rim.common.invoice.collector.InvoiceCollectService;
-import kd.imc.rim.common.invoice.model.ConvertFieldUtil;
-import kd.imc.rim.common.invoice.model.type.OtherInvoice;
-import kd.imc.rim.common.invoice.recognitionnew.RecognitionFactory;
-import kd.imc.rim.common.invoice.recognitionnew.model.RecognitionParam;
-import kd.imc.rim.common.invoice.recognitionnew.model.RecognitionResult;
-import kd.imc.rim.common.message.exception.MsgException;
-import kd.imc.rim.common.service.SimplyCheckService;
-import kd.imc.rim.common.utils.BigDecimalUtil;
-import kd.imc.rim.common.utils.CacheHelper;
-import kd.imc.rim.common.utils.DateUtils;
-import kd.imc.rim.common.utils.DynamicObjectUtil;
-import kd.imc.rim.common.utils.FileUtils;
-import kd.imc.rim.common.utils.FormFileEntity;
-import kd.imc.rim.common.utils.ImcConfigUtil;
-import kd.imc.rim.common.utils.InvoiceConvertUtils;
-import kd.imc.rim.common.utils.MD5;
-import kd.imc.rim.common.utils.MetadataUtil;
-import kd.imc.rim.common.utils.RimConfigUtils;
-import kd.imc.rim.common.utils.TenantUtils;
-import kd.imc.rim.common.utils.UUID;
-import kd.imc.rim.common.utils.itextpdf.ItextPdfUtils;
-import kd.imc.rim.common.utils.itextpdf.UrlServiceUtils;
-import kd.imc.rim.file.utils.FileConvertUtils;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.compress.utils.Lists;
-
-public class RecognitionCheckHelperEx {
-    private static Log logger = LogFactory.getLog(RecognitionCheckHelperEx.class);
-    private static final String awsRecognitionImpl = "kd.imc.rim.AwsRecognitionServiceEx";
-    private static final String HANGXINCHECKSERIVCESTR = "kd.imc.rim.common.invoice.checknew.impl.HangxinCheckService";
-    private InvoiceCollectService invoiceCollectService = new InvoiceCollectService();
-
-    public RecognitionCheckHelperEx() {
-    }
-
-    public List<JSONObject> recognitionInvoiceFile(FormFileEntity fileEntity, Map<String, Object> extMap) throws Exception {
-        List<JSONObject> resultList = Lists.newArrayList();
-        List<FormFileEntity> fileEntityList = fileEntity.getSubFileList();
-        if (fileEntityList == null || ((List)fileEntityList).isEmpty()) {
-            fileEntityList = new ArrayList(1);
-            ((List)fileEntityList).add(fileEntity);
-        }
-
-        int pageNo = 0;
-        Map<String, String> configMap = ImcConfigUtil.getValue("rim_recog_check");
-        String recognitionImplStr = (String)configMap.get("rimpl");
-        boolean isAwsRecognition = StringUtils.isEmpty(recognitionImplStr) || "kd.imc.rim.AwsRecognitionServiceEx".equals(recognitionImplStr);
-        String cachhour = (String)configMap.get("cache_hour");
-        int cacheHour = 24;
-        if (!StringUtils.isEmpty(cachhour)) {
-            cacheHour = BigDecimalUtil.transDecimal(configMap.get("cache_hour")).intValue();
-            if (cacheHour < 0) {
-                cacheHour = 0;
-            }
-        }
-
-        String overseaAppCode = this.getOverseaAppCode(configMap);
-        Iterator var12 = ((List)fileEntityList).iterator();
-
-        while(var12.hasNext()) {
-            FormFileEntity entity = (FormFileEntity)var12.next();
-            ++pageNo;
-            String fileName = entity.getFileName();
-            InputStream fileInputStream = UrlServiceUtils.getAttachmentDecodedStream(FileServiceFactory.getAttachmentFileService().getInputStream(entity.getFileUrl()));
-            Throwable var16 = null;
-
-            try {
-                if (((List)fileEntityList).isEmpty()) {
-                    fileEntity.setFileSize(fileInputStream.available());
-                }
-
-                byte[] streamByte = FileUtils.getByte(fileInputStream);
-                String fileHash = FileConvertUtils.getSHA256(streamByte);
-                long threadCount = 0L;
-                boolean exceptionDecr = false;
-                int countTimeOut = 60;
-
-                try {
-                    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(streamByte);
-                    Throwable var24 = null;
-
-                    try {
-                        RecognitionParam recognitionParam = new RecognitionParam(byteArrayInputStream, extMap);
-                        recognitionParam.setFileName(fileName);
-                        recognitionParam.setLocalUrl(fileEntity.getFileUrl());
-                        recognitionParam.setLocalHash(fileEntity.getFileHash());
-                        recognitionParam.setRecogConfigMap(configMap);
-                        if (StringUtils.isEmpty(recognitionParam.getLocalHash())) {
-                            recognitionParam.setLocalHash(fileHash);
-                        }
-
-                        recognitionParam.setFileUrl(entity.getFileUrl());
-                        recognitionParam.setPageNo(pageNo);
-                        recognitionParam.setCacheHour(cacheHour);
-                        if (extMap.get("recogType") != null) {
-                            recognitionParam.setRecogType(extMap.get("recogType").toString());
-                            recognitionParam.setAppCode(overseaAppCode);
-                        }
-
-                        RecognitionResult recognitionResult = new RecognitionResult();
-                        JSONObject analysisInvoiceInfo = entity.getInvoiceInfo();
-                        boolean resultFlag = false;
-                        boolean isMore = false;
-                        if (analysisInvoiceInfo != null) {
-                            Object invoice = analysisInvoiceInfo.get("invoice");
-                            if (invoice == null) {
-                                invoice = analysisInvoiceInfo;
-                            } else {
-                                isMore = true;
-                            }
-
-                            resultFlag = this.getValidateFlag(invoice);
-                        }
-
-                        if (resultFlag) {
-                            List entityList = Lists.newArrayList();
-                            JSONArray invoiceArray = new JSONArray();
-                            if (isMore) {
-                                invoiceArray.addAll(analysisInvoiceInfo.getJSONArray("invoice"));
-                            } else {
-                                invoiceArray.add(analysisInvoiceInfo);
-                            }
-
-                            String itemsKey = "items";
-                            ConvertFieldUtil.convertRecognitionEntity(entityList, invoiceArray, new String[]{itemsKey, "item"});
-                            recognitionResult.setErrcode("0000");
-                            recognitionResult.setData(entityList);
-                            logger.info("识别结果取pdf解析..");
-                        } else {
-                            exceptionDecr = true;
-                            threadCount = CacheHelper.inc("recogThread", countTimeOut);
-                            logger.info("识别线程数量{}", threadCount);
-                            recognitionResult = RecognitionFactory.getRecognitionService("kd.imc.rim.AwsRecognitionServiceEx").recognitionInvoice(recognitionParam);
-                            threadCount = CacheHelper.decr("recogThread", countTimeOut);
-                            exceptionDecr = false;
-                        }
-
-                        if (recognitionResult != null) {
-                            if (!"0000".equals(recognitionResult.getErrcode())) {
-                                StringBuilder sb = this.getMsgExceptionInfo(recognitionResult);
-                                throw new MsgException(sb.toString());
-                            }
-
-                            List<Object> recognitionDataList = recognitionResult.getData();
-                            String salelistposturl = (String)configMap.get("salelistposturl");
-                            if (!StringUtils.isEmpty(salelistposturl)) {
-                                ByteArrayInputStream saleListByteArrayStream = new ByteArrayInputStream(streamByte);
-                                Throwable var33 = null;
-
-                                try {
-                                    RecognitionParam saleListParam = new RecognitionParam(saleListByteArrayStream, extMap);
-                                    saleListParam.setFileName(fileName);
-                                    saleListParam.setRecogConfigMap(configMap);
-                                    this.saleListRecognition(recognitionDataList, saleListParam);
-                                } catch (Throwable var80) {
-                                    var33 = var80;
-                                    throw var80;
-                                } finally {
-                                    if (saleListByteArrayStream != null) {
-                                        if (var33 != null) {
-                                            try {
-                                                saleListByteArrayStream.close();
-                                            } catch (Throwable var79) {
-                                                var33.addSuppressed(var79);
-                                            }
-                                        } else {
-                                            saleListByteArrayStream.close();
-                                        }
-                                    }
-
-                                }
-                            }
-
-                            this.supRecognitionInfo(recognitionDataList, isAwsRecognition, fileHash, fileName, pageNo, resultList, configMap);
-                        }
-                    } catch (Throwable var82) {
-                        var24 = var82;
-                        throw var82;
-                    } finally {
-                        if (byteArrayInputStream != null) {
-                            if (var24 != null) {
-                                try {
-                                    byteArrayInputStream.close();
-                                } catch (Throwable var78) {
-                                    var24.addSuppressed(var78);
-                                }
-                            } else {
-                                byteArrayInputStream.close();
-                            }
-                        }
-
-                    }
-                } catch (Throwable var84) {
-                    if (exceptionDecr && threadCount > 0L) {
-                        threadCount = CacheHelper.decr("recogThread", countTimeOut);
-                    }
-
-                    logger.error("ByteArrayInputStream error:", var84);
-                    throw var84;
-                }
-            } catch (Throwable var85) {
-                var16 = var85;
-                throw var85;
-            } finally {
-                if (fileInputStream != null) {
-                    if (var16 != null) {
-                        try {
-                            fileInputStream.close();
-                        } catch (Throwable var77) {
-                            var16.addSuppressed(var77);
-                        }
-                    } else {
-                        fileInputStream.close();
-                    }
-                }
-
-            }
-        }
-
-        return resultList;
-    }
-
-    private boolean getValidateFlag(Object analysisInvoiceInfo) {
-        if (analysisInvoiceInfo == null) {
-            return false;
-        } else {
-            boolean resultFlag = false;
-            if (analysisInvoiceInfo instanceof JSONObject) {
-                resultFlag = InputInvoiceTypeEnum.ELECTRIC_ORDINARY.getCode().equals(((JSONObject)analysisInvoiceInfo).getLong("invoiceType")) || InputInvoiceTypeEnum.ELECTRIC_SPECIAL.getCode().equals(((JSONObject)analysisInvoiceInfo).getLong("invoiceType"));
-                if (!resultFlag) {
-                    resultFlag = this.checkParamValidate((JSONObject)analysisInvoiceInfo);
-                }
-            } else if (analysisInvoiceInfo instanceof JSONArray) {
-                JSONArray array = (JSONArray)analysisInvoiceInfo;
-
-                for(int i = 0; i < array.size(); ++i) {
-                    resultFlag = InputInvoiceTypeEnum.ELECTRIC_ORDINARY.getCode().equals(array.getJSONObject(i).getLong("invoiceType")) || InputInvoiceTypeEnum.ELECTRIC_SPECIAL.getCode().equals(array.getJSONObject(i).getLong("invoiceType"));
-                    if (!resultFlag) {
-                        resultFlag = this.checkParamValidate(array.getJSONObject(i));
-                        if (!resultFlag) {
-                            return false;
-                        }
-                    }
-                }
-            } else if (analysisInvoiceInfo instanceof ArrayList) {
-                List<Map<String, Object>> list = (List)analysisInvoiceInfo;
-                Iterator var7 = list.iterator();
-
-                while(var7.hasNext()) {
-                    Map<String, Object> map = (Map)var7.next();
-                    resultFlag = InputInvoiceTypeEnum.ELECTRIC_ORDINARY.getCode().equals(Long.parseLong(map.get("invoiceType") + "")) || InputInvoiceTypeEnum.ELECTRIC_SPECIAL.getCode().equals(Long.parseLong(map.get("invoiceType") + ""));
-                    if (!resultFlag) {
-                        resultFlag = this.checkParamValidate(new JSONObject(map));
-                        if (!resultFlag) {
-                            return false;
-                        }
-                    }
-                }
-            }
-
-            return resultFlag;
-        }
-    }
-
-    public boolean checkParamValidate(JSONObject invoice) {
-        String invoiceCode = invoice.getString("invoiceCode");
-        String invoiceNo = invoice.getString("invoiceNo");
-        String invoiceAmount = invoice.getString("invoiceAmount");
-        String invoiceDate = invoice.getString("invoiceDate");
-        boolean validate = StringUtils.isNotEmpty(invoiceCode) && StringUtils.isNotEmpty(invoiceNo) && StringUtils.isNotEmpty(invoiceAmount) && StringUtils.isNotEmpty(invoiceDate);
-        Long invoiceType = invoice.getLong("invoiceType");
-        if (!InputInvoiceTypeEnum.ORDINARY_ELECTRON.getCode().equals(invoiceType) && !InputInvoiceTypeEnum.ORDINARY_PAPER.getCode().equals(invoiceType) && !InputInvoiceTypeEnum.ORDINARY_ROLL.getCode().equals(invoiceType) && !InputInvoiceTypeEnum.TOLL_ELECTRON.getCode().equals(invoiceType)) {
-            return validate;
-        } else {
-            String checkCode = invoice.getString("checkCode");
-            return validate && StringUtils.isNotEmpty(checkCode);
-        }
-    }
-
-    private String getOverseaAppCode(Map<String, String> configMap) {
-        if (configMap == null) {
-            return null;
-        } else {
-            String appCode = (String)configMap.get("overappkey");
-            String appSect = (String)configMap.get("overappsecret");
-            if (!StringUtils.isEmpty(appCode) && !StringUtils.isEmpty(appSect)) {
-                String code = appCode + "@@@" + appSect;
-                String retStr = Base64.encodeBase64String(code.getBytes());
-                return retStr;
-            } else {
-                return null;
-            }
-        }
-    }
-
-    private void saleListRecognition(List<Object> recognitionDataList, RecognitionParam recognitionParam) {
-        List<Object> resultList = Lists.newArrayList();
-        recognitionDataList.stream().forEach((f) -> {
-            if (f instanceof OtherInvoice) {
-                OtherInvoice otherInvoice = (OtherInvoice)f;
-                String invoiceCode = otherInvoice.getInvoiceCode();
-                String invoiceNo = otherInvoice.getInvoiceNo();
-                boolean emptyCheck = StringUtils.isNotEmpty(invoiceCode) && StringUtils.isNotEmpty(invoiceNo);
-                boolean titleCheck = StringUtils.isNotEmpty(otherInvoice.getTitle()) && otherInvoice.getTitle().contains("清单");
-                if (emptyCheck && titleCheck) {
-                    try {
-                        List<JSONObject> saleListRecognitionList = this.saleListPost(recognitionParam);
-                        Iterator var10 = saleListRecognitionList.iterator();
-
-                        while(var10.hasNext()) {
-                            JSONObject saleList = (JSONObject)var10.next();
-                            String saleListCode = saleList.getString("invoiceCode");
-                            String saleListNo = saleList.getString("invoiceNo");
-                            String saleListPageNum = saleList.getString("pageNum");
-                            if (invoiceCode.equals(saleListCode) && invoiceNo.equals(saleListNo)) {
-                                otherInvoice.setPageNum(saleListPageNum);
-                            }
-                        }
-                    } catch (Exception var15) {
-                        logger.info("销货清单识别出错:", var15);
-                    }
-                }
-            }
-
-            resultList.add(f);
-        });
-    }
-
-    private List<JSONObject> saleListPost(RecognitionParam recognitionParam) throws Exception {
-        RecognitionResult recognitionResult = RecognitionFactory.getSaleListRecognitionService().recognitionInvoice(recognitionParam);
-        if (recognitionResult != null && "0000".equals(recognitionResult.getErrcode())) {
-            List<JSONObject> data = recognitionResult.getData();
-            return (List)data.stream().filter((f) -> {
-                String invoiceCode = f.getString("invoiceCode");
-                String invoiceNo = f.getString("invoiceNo");
-                String pageNum = f.getString("pageNum");
-                return StringUtils.isNotEmpty(invoiceCode) && StringUtils.isNotEmpty(invoiceNo) && StringUtils.isNotEmpty(pageNum);
-            }).collect(Collectors.toList());
-        } else {
-            return Lists.newArrayList();
-        }
-    }
-
-    private StringBuilder getMsgExceptionInfo(RecognitionResult recognitionResult) {
-        StringBuilder sb = new StringBuilder();
-        String str = String.format(ResManager.loadKDString("识别失败,识别接口返回:【%1$s】%2$s", "RecognitionCheckHelper_1", "imc-rim-common", new Object[0]), recognitionResult.getErrcode(), recognitionResult.getDescription());
-        sb.append(str);
-        return sb;
-    }
-
-    private void supRecognitionInfo(List<Object> recognitionDataList, boolean isAwsRecognition, String fileHash, String fileName, int pageNo, List<JSONObject> resultList, Map<String, String> configMap) throws ParseException {
-        if (recognitionDataList != null && recognitionDataList.size() != 0) {
-            String otherMust = ImcConfigUtil.getValue(configMap, "other_must", "0");
-            Iterator var9 = recognitionDataList.iterator();
-
-            while(true) {
-                Object object;
-                JSONObject recognitionInfo;
-                do {
-                    do {
-                        if (!var9.hasNext()) {
-                            return;
-                        }
-
-                        object = var9.next();
-                    } while(object == null);
-
-                    String invoiceStr = JSONObject.toJSONString(object);
-                    recognitionInfo = JSON.parseObject(invoiceStr);
-                } while(recognitionInfo == null);
-
-                this.setMaxAmount(recognitionInfo);
-                this.dealElectric(recognitionInfo);
-                this.dealBlockChain(recognitionInfo);
-                boolean isPass = false;
-                Long invoiceType;
-                String invoiceCode;
-                if (object.getClass() != null) {
-                    invoiceType = recognitionInfo.getLong("invoiceType");
-                    String exit;
-                    if (InputInvoiceTypeEnum.AIR_INVOICE.getCode().equals(invoiceType)) {
-                        invoiceCode = recognitionInfo.getString("invoiceDate");
-                        exit = recognitionInfo.getString("issueDate");
-                        if (StringUtils.isNotBlank(exit)) {
-                            Date date = recognitionInfo.getDate("issueDate");
-                            if (StringUtils.isEmpty(invoiceCode) || "OPEN".equalsIgnoreCase(invoiceCode)) {
-                                recognitionInfo.put("invoiceDate", DateUtils.format(date, "yyyy-MM-dd"));
-                            }
-                        }
-                    }
-
-                    isPass = ConvertFieldUtil.checkNullValidate(recognitionInfo, object.getClass());
-                    if (isPass && InputInvoiceTypeEnum.ROAD_BRIDGE.getCode().equals(invoiceType)) {
-                        invoiceCode = recognitionInfo.getString("invoiceCode");
-                        exit = recognitionInfo.getString("exit");
-                        if (StringUtils.isEmpty(invoiceCode) && StringUtils.isEmpty(exit)) {
-                            isPass = false;
-                        }
-                    }
-
-                    if (isPass && InputInvoiceTypeEnum.OTHER_INVOICE.getCode().equals(invoiceType)) {
-                        if ("1".equals(otherMust) && StringUtils.isEmpty(recognitionInfo.getString("invoiceNo"))) {
-                            isPass = false;
-                        }
-
-                        if ("2".equals(otherMust) && (StringUtils.isEmpty(recognitionInfo.getString("invoiceNo")) || StringUtils.isEmpty(recognitionInfo.getString("invoiceCode")))) {
-                            isPass = false;
-                        }
-                    }
-                }
-
-                if (!isPass) {
-                    recognitionInfo.remove("serialNo");
-                }
-
-                if (isPass && StringUtils.isEmpty(recognitionInfo.getString("serialNo"))) {
-                    recognitionInfo.put("serialNo", UUID.randomUUID());
-                }
-
-                invoiceType = recognitionInfo.getLong("invoiceType");
-                invoiceCode = recognitionInfo.getString("currency_code");
-                recognitionInfo.put("currency", InvoiceConvertUtils.changeCurrency(invoiceCode));
-                if (!isAwsRecognition) {
-                    this.setOtherInfoByType(invoiceType, recognitionInfo);
-                }
-
-                if (!InvoiceConvertUtils.isVatInvoiceType(invoiceType)) {
-                    recognitionInfo.put("checkStatus", "1");
-                    this.recognitionInvoiceMix(recognitionInfo, invoiceType);
-                }
-
-                if (InvoiceConvertUtils.isSaleListInvoiceType(invoiceType)) {
-                    markSaleListInvoice(recognitionInfo);
-                }
-
-                recognitionInfo.put("fileHash", fileHash);
-                recognitionInfo.put("pageNo", pageNo);
-                recognitionInfo.put("fileName", fileName);
-                resultList.add(recognitionInfo);
-            }
-        }
-    }
-
-    private void setMaxAmount(JSONObject recognitionInfo) {
-        Set<Map.Entry<String, Object>> entries = recognitionInfo.entrySet();
-        Iterator var3 = entries.iterator();
-
-        while(var3.hasNext()) {
-            Map.Entry<String, Object> object = (Map.Entry)var3.next();
-            Object valueObj = object.getValue();
-            if (valueObj instanceof BigDecimal) {
-                String valueObjStr = valueObj.toString().replace("-", "");
-                if (BigDecimalUtil.transDecimal(valueObjStr).compareTo(FpzsConstant.sysMaxAmount) > 0) {
-                     valueObj = BigDecimal.ZERO;
-                    logger.info("发票{} 超过系统金额最大值:{} 置为0", object.getKey(), FpzsConstant.sysMaxAmount);
-                    recognitionInfo.put((String)object.getKey(), valueObj);
-                }
-            }
-        }
-
-    }
-
-    private void dealBlockChain(JSONObject recognitionInfo) {
-        String checkImplStr = RimConfigUtils.getConfig("rim_recog_check", "cimpl");
-        boolean isHangxinCheck = "kd.imc.rim.common.invoice.checknew.impl.HangxinCheckService".equals(checkImplStr);
-        boolean isBlockChainType = InvoiceConvertUtils.isBlockChainType(recognitionInfo.getString("invoiceCode"), recognitionInfo.getString("invoiceNo"));
-        boolean isYunnanChainType = InvoiceConvertUtils.isYunNanBlockchain(recognitionInfo.getString("invoiceCode"), recognitionInfo.getString("invoiceNo"));
-        if (isHangxinCheck && (isBlockChainType || isYunnanChainType)) {
-            recognitionInfo.put("invoiceType", InputInvoiceTypeEnum.GENERAL_ELECTRON.getCode());
-        }
-
-    }
-
-    public static void markSaleListInvoice(JSONObject recognitionInfo) {
-        JSONArray items = recognitionInfo.getJSONArray("items");
-        recognitionInfo.put("isSaleListInvoice", "0");
-        if (items != null && items.size() == 1) {
-            String goodsName = items.getJSONObject(0).getString("goodsName");
-            if (StringUtils.isNotEmpty(goodsName) && goodsName.contains("详见") && goodsName.contains("清单")) {
-                recognitionInfo.put("isSaleListInvoice", "1");
-            }
-        }
-
-    }
-
-    private void dealElectric(JSONObject recognitionInfo) {
-        String invoiceNo = recognitionInfo.getString("invoiceNo");
-        String invoiceCode = recognitionInfo.getString("invoiceCode");
-        Long invoiceType = recognitionInfo.getLong("invoiceType");
-        if (StringUtils.isNotEmpty(invoiceNo) && invoiceNo.length() == 20 && InputInvoiceTypeEnum.ORDINARY_ROLL.getCode().equals(invoiceType) && StringUtils.isEmpty(invoiceCode)) {
-            recognitionInfo.put("invoiceType", InputInvoiceTypeEnum.ELECTRIC_SPECIAL.getCode());
-            String serialNo = recognitionInfo.getString("serialNo");
-            if (StringUtils.isEmpty(serialNo)) {
-                recognitionInfo.put("serialNo", UUID.randomUUID());
-            }
-        }
-
-    }
-
-    public FormFileEntity getFormFileEntity(String url, String fileName) throws IOException {
-        FormFileEntity fileEntity = new FormFileEntity(url, fileName);
-        if (FileUtils.checkFileType(fileName, new String[]{"pdf"})) {
-            return ItextPdfUtils.extractpdf(url, fileName);
-        } else {
-            if (FileUtils.checkFileType(fileName, new String[]{"ofd"})) {
-                JSONObject result = (JSONObject) this.ofdAnalysis(url);
-                if (result != null) {
-                    fileEntity.setFileSize(BigDecimalUtil.transDecimal(result.getString("fileSize")).intValue());
-                }
-
-                fileEntity.setInvoiceInfo(result);
-                fileEntity.setFileType("ofd");
-                fileEntity.setSignatureFlag(Boolean.TRUE);
-            } else {
-                fileEntity.setFileType(FileUtils.getFileType(fileName));
-            }
-
-            return fileEntity;
-        }
-    }
-
-    private Serializable ofdAnalysis(String fileUrl) {
-        try {
-            InputStream fileInputStream = UrlServiceUtils.getAttachmentDecodedStream(FileServiceFactory.getAttachmentFileService().getInputStream(fileUrl));
-            Throwable var3 = null;
-
-            Long invoiceType;
-            try {
-                byte[] streamByte = FileUtils.getByte(fileInputStream);
-                JSONObject result;
-                if (streamByte == null) {
-                    result = null;
-                    return null;
-                }
-
-                result = OfdReadUtils.readData(streamByte);
-                Object invoice = result.get("invoice");
-                VatInvoice vatInvoice = (VatInvoice)invoice;
-                result = JSON.parseObject(JSON.toJSONString(vatInvoice));
-                if (vatInvoice != null) {
-                    invoiceType = InputInvoiceTypeEnum.getInvoiceTypeByAwsType(vatInvoice.getInvoiceType());
-                    result.put("invoiceType", invoiceType);
-                    result.put("fileSize", streamByte.length);
-                    JSONObject var9 = result;
-                    return var9;
-                }
-
-                invoiceType = null;
-            } catch (Throwable var21) {
-                var3 = var21;
-                throw var21;
-            } finally {
-                if (fileInputStream != null) {
-                    if (var3 != null) {
-                        try {
-                            fileInputStream.close();
-                        } catch (Throwable var20) {
-                            var3.addSuppressed(var20);
-                        }
-                    } else {
-                        fileInputStream.close();
-                    }
-                }
-
-            }
-
-            return invoiceType;
-        } catch (Exception var23) {
-            logger.info("ofdAnalysis exception :{}", var23);
-            return null;
-        }
-    }
-
-    public Map<String, Object> getRecognitionCheckExtMap(JSONObject businessParam) {
-        Map<String, Object> extMap = Maps.newHashMap();
-        Long orgId = RequestContext.get().getOrgId();
-        if (businessParam != null) {
-            if (businessParam.getLong("org_id") != null) {
-                orgId = businessParam.getLong("org_id");
-            }
-
-            extMap.put("recogType", businessParam.getString("recogType"));
-        }
-
-        String taxNo = TenantUtils.getTaxNoByOrgId(orgId);
-        extMap.put("eid", RequestContext.get().getUserId());
-        extMap.put("orgId", orgId);
-        extMap.put("taxNo", taxNo);
-        return extMap;
-    }
-
-    public List<JSONObject> checkInvoiceByRecognitionInfo(List<JSONObject> recognitionResultList, Map<String, Object> extMap) {
-        if (recognitionResultList != null && recognitionResultList.size() != 0) {
-            List<JSONObject> checkResultList = Lists.newArrayList();
-            Iterator var5 = recognitionResultList.iterator();
-
-            while(true) {
-                while(var5.hasNext()) {
-                    JSONObject invoiceInfo = (JSONObject)var5.next();
-                    JSONObject result = invoiceInfo;
-                    Long invoiceType = invoiceInfo.getLong("invoiceType");
-                    if (!InputInvoiceTypeEnum.needCheck(invoiceType)) {
-                        checkResultList.add(invoiceInfo);
-                    } else {
-                        CheckParam checkParam = ConvertFieldUtil.getInvoiceCheckPart(invoiceInfo);
-                        if (checkParam != null) {
-                            try {
-                                Long orgId = (Long)extMap.get("orgId");
-                                String taxNo = (String)extMap.get("taxNo");
-                                CheckResult checkResult = SimplyCheckService.checkInvoice(checkParam, orgId, taxNo);
-                                if ("0000".equals(checkResult.getErrcode()) && checkResult.getData() != null) {
-                                    Object invoiceEntity = checkResult.getData();
-                                    String invoiceCheckStr = JSONObject.toJSONString(invoiceEntity);
-                                    JSONObject invoiceCheckInfo = JSON.parseObject(invoiceCheckStr);
-                                    this.putRecognitionInfo(invoiceCheckInfo, invoiceInfo);
-                                    if (InputInvoiceTypeEnum.AIR_ELE_INVOICE.getCode().equals(invoiceType)) {
-                                        invoiceInfo.putAll(invoiceCheckInfo);
-                                        invoiceCheckInfo = this.mixAirEleData(invoiceInfo);
-                                    }
-
-                                    result = invoiceCheckInfo;
-                                    String originalStateDefault = (String)extMap.get("originalStateDefault");
-                                    boolean typeFlag = InputInvoiceTypeEnum.ORDINARY_ELECTRON.getCode().equals(invoiceType) || InputInvoiceTypeEnum.TOLL_ELECTRON.getCode().equals(invoiceType) || InputInvoiceTypeEnum.SPECIAL_ELECTRON.getCode().equals(invoiceType);
-                                    if ("1".equals(originalStateDefault) && typeFlag) {
-                                        invoiceCheckInfo.put("originalState", "1");
-                                    }
-                                } else {
-                                    result = invoiceInfo;
-                                    invoiceInfo.put("checkStatus", "2");
-                                    invoiceInfo.put("errcode", checkResult.getErrcode());
-                                    invoiceInfo.put("description", checkResult.getDescription());
-                                }
-                            } catch (Exception var17) {
-                                logger.info("查验步骤报错:", var17);
-                                invoiceInfo.put("checkStatus", "2");
-                            }
-
-                            checkResultList.add(result);
-                        }
-                    }
-                }
-
-                return checkResultList;
-            }
-        } else {
-            return null;
-        }
-    }
-
-    private JSONObject mixAirEleData(JSONObject invoiceInfo) {
-        if (invoiceInfo == null) {
-            return new JSONObject();
-        } else {
-            Object issueDate = invoiceInfo.get("issueDate");
-            if (issueDate instanceof Integer) {
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-
-                try {
-                    Date date = sdf.parse(String.valueOf(issueDate));
-                    invoiceInfo.put("invoiceDate", date);
-                    invoiceInfo.put("issueDate", date);
-                } catch (ParseException var5) {
-                }
-            }
-
-            return invoiceInfo;
-        }
-    }
-
-    public static void markSaleListByCheckResult(JSONObject invoiceCheckInfo) {
-        invoiceCheckInfo.put("isSaleListInvoice", "0");
-        JSONArray items = invoiceCheckInfo.getJSONArray("items");
-        if (items != null && items.size() > 8) {
-            invoiceCheckInfo.put("isSaleListInvoice", "1");
-            putSaleListSum(invoiceCheckInfo);
-        }
-
-    }
-
-    private JSONObject putRecognitionInfo(JSONObject invoiceCheckInfo, JSONObject recognitionInfo) {
-        invoiceCheckInfo.put("continuousNo", recognitionInfo.get("continuousNo"));
-        invoiceCheckInfo.put("currency", recognitionInfo.get("currency"));
-        invoiceCheckInfo.put("barcode", recognitionInfo.get("barcode"));
-        invoiceCheckInfo.put("qrcode", recognitionInfo.get("qrcode"));
-        invoiceCheckInfo.put("companySeal", recognitionInfo.get("companySeal"));
-        invoiceCheckInfo.put("region", recognitionInfo.get("region"));
-        invoiceCheckInfo.put("rotationAngle", recognitionInfo.get("rotationAngle"));
-        invoiceCheckInfo.put("pixel", recognitionInfo.get("pixel"));
-        invoiceCheckInfo.put("pageNo", recognitionInfo.get("pageNo"));
-        invoiceCheckInfo.put("fileName", recognitionInfo.get("fileName"));
-        String checkStatus = invoiceCheckInfo.getString("checkStatus");
-        String recognitionSaleList = recognitionInfo.getString("isSaleListInvoice");
-        String checkSaleList = invoiceCheckInfo.getString("isSaleListInvoice");
-        if ("1".equals(recognitionSaleList) || "1".equals(checkSaleList)) {
-            invoiceCheckInfo.put("isSaleListInvoice", "1");
-            if (!"1".equals(checkSaleList)) {
-                putSaleListSum(invoiceCheckInfo);
-            }
-        }
-
-        if (StringUtils.isEmpty(checkStatus)) {
-            invoiceCheckInfo.put("checkStatus", "1");
-            checkStatus = "1";
-        }
-
-        Long invoiceType = recognitionInfo.getLong("invoiceType");
-        if ((InputInvoiceTypeEnum.ORDINARY_PAPER.getCode().equals(invoiceType) || InputInvoiceTypeEnum.SPECIAL_PAPER.getCode().equals(invoiceType)) && "1".equals(checkStatus) && "1".equals(invoiceCheckInfo.getString("proxyMark"))) {
-            invoiceCheckInfo.put("companySeal", "1");
-        }
-
-        return invoiceCheckInfo;
-    }
-
-    private static void putSaleListSum(JSONObject invoiceInfo) {
-        int pageSum = 0;
-        String attachNo = invoiceInfo.getString("invoiceCode") + "_" + invoiceInfo.getString("invoiceNo");
-        QFilter qFilter = new QFilter("attach_no", "=", attachNo);
-        String attachFields = MetadataUtil.getFields("rim_attach");
-        DynamicObject[] attachCollect = BusinessDataServiceHelper.load("rim_attach", attachFields, new QFilter[]{qFilter});
-        if (attachCollect != null && attachCollect.length > 0) {
-            DynamicObject[] var6 = attachCollect;
-            int var7 = attachCollect.length;
-
-            for(int var8 = 0; var8 < var7; ++var8) {
-                DynamicObject attachInfo = var6[var8];
-                if (attachInfo.getInt("page_sum") != 0) {
-                    pageSum = attachInfo.getInt("page_sum");
-                    break;
-                }
-            }
-        }
-
-        JSONArray items = invoiceInfo.getJSONArray("items");
-        if (pageSum == 0) {
-            double itemsNum = (double)items.size();
-            double sum = Math.ceil(itemsNum / 25.0);
-            invoiceInfo.put("salelistSum", (int)sum == 0 ? 1 : (int)sum);
-        } else {
-            invoiceInfo.put("salelistSum", pageSum);
-        }
-
-    }
-
-    private void setOtherInfoByType(Long invoiceType, JSONObject recognitionInfo) {
-        String continuousNo = recognitionInfo.getString("continuousNo");
-        String numberConfirm = recognitionInfo.getString("numberConfirm");
-        String codeConfirm = recognitionInfo.getString("codeConfirm");
-        boolean isEquals;
-        if (StringUtils.isEmpty(continuousNo) && StringUtils.isNotEmpty(numberConfirm) && StringUtils.isNotEmpty(codeConfirm)) {
-            String invoiceCode = recognitionInfo.getString("invoiceCode");
-            String invoiceNo = recognitionInfo.getString("invoiceNo");
-            boolean isCodeEquals = invoiceCode.equals(codeConfirm);
-            isEquals = invoiceNo.equals(numberConfirm);
-            recognitionInfo.put("continuousNo", "0");
-            if (!isCodeEquals || !isEquals) {
-                recognitionInfo.put("continuousNo", "1");
-            }
-        }
-
-        if (InputInvoiceTypeEnum.TAXI_INVOICE.getCode().equals(invoiceType)) {
-            BigDecimal surcharge = recognitionInfo.getBigDecimal("surcharge");
-            BigDecimal totalAmount = recognitionInfo.getBigDecimal("totalAmount") == null ? BigDecimal.ZERO : recognitionInfo.getBigDecimal("totalAmount");
-            BigDecimal fare = recognitionInfo.getBigDecimal("fare") == null ? BigDecimal.ZERO : recognitionInfo.getBigDecimal("fare");
-            isEquals = totalAmount.compareTo(fare) == 0;
-            if (isEquals && surcharge != null) {
-                recognitionInfo.put("totalAmount", totalAmount.add(surcharge));
-            }
-        }
-
-    }
-
-    private void recognitionInvoiceMix(JSONObject recognitionInfo, Long invoiceType) {
-        String serialNo = recognitionInfo.getString("serialNo");
-        if (StringUtils.isNotEmpty(serialNo)) {
-            this.invoiceCollectService.convertUnVatInvoice(recognitionInfo, false);
-        } else {
-            this.convertFalseField(invoiceType, recognitionInfo);
-        }
-
-    }
-
-    private void convertFalseField(Long invoiceType, JSONObject recognitionInfo) {
-        if (InputInvoiceTypeEnum.TRAIN_INVOICE.getCode().equals(invoiceType)) {
-            recognitionInfo.put("printingSequenceNo", recognitionInfo.getString("sequenceNo"));
-            recognitionInfo.put("seat", recognitionInfo.getString("seatGrade"));
-            recognitionInfo.put("customerIdentityNum", recognitionInfo.getString("customerIdNo"));
-        } else if (InputInvoiceTypeEnum.AIR_INVOICE.getCode().equals(invoiceType)) {
-            recognitionInfo.put("electronicTicketNum", recognitionInfo.getString("eticketNo"));
-            recognitionInfo.put("customerIdentityNum", recognitionInfo.getString("customerIdNo"));
-            recognitionInfo.put("otherTotalTaxAmount", recognitionInfo.getString("otherAmount"));
-        }
-
-    }
-
-    public JSONArray bindAttachInvoice(JSONArray targetArray, JSONObject businessParam) {
-        return this.bindAttachInvoice(targetArray, businessParam, new HashMap(0));
-    }
-
-    public JSONArray bindAttachInvoice(JSONArray targetArray, JSONObject businessParam, Map<String, Long> invoiceTypeMap) {
-        JSONArray attachArray = new JSONArray();
-        if (targetArray.size() == 0) {
-            return attachArray;
-        } else {
-            targetArray.stream().forEach((i) -> {
-                JSONObject invoiceInfo = (JSONObject)i;
-                int pageNo = invoiceInfo.getInteger("pageNo");
-                boolean originalCheck = "1".equals(invoiceInfo.getString("originalState"));
-                String invoiceCode = invoiceInfo.getString("invoiceCode");
-                String invoiceNo = invoiceInfo.getString("invoiceNo");
-                Long invoiceType = (Long)invoiceTypeMap.get(StringUtils.trimToEmpty(invoiceCode) + StringUtils.trimToEmpty(invoiceNo));
-                boolean salerInvoiceType = invoiceType == null || InvoiceConvertUtils.isSaleListInvoiceType(invoiceType);
-                if (!originalCheck && salerInvoiceType) {
-                    DynamicObject attachObject = this.getAttachDynamicObject(invoiceInfo, businessParam);
-                    DynamicObject attachSaveObject = (DynamicObject)SaveServiceHelper.save(new DynamicObject[]{attachObject})[0];
-                    JSONObject attachInfo = new JSONObject(DynamicObjectUtil.dynamicObject2Map(attachSaveObject));
-                    attachInfo.put("invoiceCode", invoiceCode);
-                    attachInfo.put("invoiceNo", invoiceNo);
-                    DynamicObject attachTypeObj = BusinessDataServiceHelper.loadSingle(1503642129396971520L, "bdm_attach_type");
-                    attachInfo.put("simplify_name", attachTypeObj.getString("simplify_name"));
-                    attachInfo.put("attach_category_grid", attachTypeObj.getString("name"));
-                    attachInfo.put("serialNo", MD5.md5Hex(attachObject.get("id").toString()));
-                    attachInfo.put("pageNo", pageNo);
-                    long attachId = (Long)attachSaveObject.getPkValue();
-                    QFilter codeFilter = new QFilter("invoice_code", "=", invoiceCode);
-                    QFilter noFilter = new QFilter("invoice_no", "=", invoiceNo);
-                    Long[] vatTypes = InputInvoiceTypeEnum.getVatTypes();
-                    QFilter typeFilter = new QFilter("invoice_type", "in", vatTypes);
-                    String mainFields = MetadataUtil.getFields("rim_invoice");
-                    DynamicObject invoiceObject = BusinessDataServiceHelper.loadSingle("rim_invoice", mainFields, new QFilter[]{codeFilter, noFilter, typeFilter});
-                    if (invoiceObject != null) {
-                        attachInfo.put("isVat", "1");
-                        DynamicObject attachRelationObject = this.getAttachRelationDynamicObject(attachId, invoiceObject.getString("serial_no"));
-                        if (attachRelationObject != null) {
-                            SaveServiceHelper.save(new DynamicObject[]{attachRelationObject});
-                        }
-
-                        int page_sum = attachInfo.getInteger("page_sum");
-                        if (page_sum != 0) {
-                            invoiceObject.set("salelist_sum", page_sum);
-                            SaveServiceHelper.save(new DynamicObject[]{invoiceObject});
-                        }
-                    }
-
-                    attachArray.add(attachInfo);
-                }
-
-            });
-            return attachArray;
-        }
-    }
-
-    private DynamicObject getAttachRelationDynamicObject(long attachId, String serialNo) {
-        DynamicObjectCollection collect = QueryServiceHelper.query("rim_attach_relation", "id", new QFilter[]{new QFilter("attach_id", "=", String.valueOf(attachId))});
-        if (collect.size() > 0) {
-            return null;
-        } else {
-            DynamicObject relationObject = BusinessDataServiceHelper.newDynamicObject("rim_attach_relation");
-            relationObject.set("attach_id", attachId);
-            relationObject.set("relation_type", 3);
-            relationObject.set("relation_id", serialNo);
-            DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("rim_attach_relation", "expense_id", new QFilter[]{new QFilter("relation_id", "=", serialNo)});
-            if (dynamicObject != null) {
-                relationObject.set("expense_id", dynamicObject.getString("expense_id"));
-            }
-
-            return relationObject;
-        }
-    }
-
-    private DynamicObject getAttachDynamicObject(JSONObject invoiceInfo, JSONObject businessParam) {
-        Long userId = Long.valueOf(RequestContext.get().getUserId());
-        StringBuilder attachNoSb = new StringBuilder();
-        attachNoSb.append(invoiceInfo.getString("invoiceCode")).append('_');
-        attachNoSb.append(invoiceInfo.getString("invoiceNo"));
-        String attachNo = attachNoSb.toString();
-        QFilter filter1 = new QFilter("attach_no", "=", attachNo);
-        QFilter filter2 = new QFilter("attach_category", "=", AttachConstant.ATTACH_LIST_CATEGORY_ID);
-        QFilter filter3 = new QFilter("attach_hash_value", "=", invoiceInfo.getString("fileHash"));
-        DynamicObject idObject = QueryServiceHelper.queryOne("rim_attach", "id", new QFilter[]{filter1, filter2, filter3});
-        DynamicObject attachObject = null;
-        boolean pdfFlag = "1".equals(invoiceInfo.getString("fileType"));
-        if (idObject != null && !pdfFlag) {
-            attachObject = BusinessDataServiceHelper.loadSingle(idObject.get("id"), "rim_attach");
-        } else {
-            attachObject = BusinessDataServiceHelper.newDynamicObject("rim_attach");
-            attachObject.set("create_time", new Date());
-        }
-
-        attachObject.set("update_time", new Date());
-        attachObject.set("user", userId);
-        if (businessParam != null) {
-            attachObject.set("rim_user", businessParam.get("rim_user"));
-        }
-
-        attachObject.set("attach_no", attachNo);
-        attachObject.set("attach_url", invoiceInfo.getString("snapshotUrl"));
-        String subFileName = invoiceInfo.getString("subFileName");
-        String pageNum;
-        if (StringUtils.isNotEmpty(subFileName)) {
-            attachObject.set("attach_type", "2");
-            attachObject.set("attach_name", subFileName);
-            pageNum = subFileName.substring(subFileName.lastIndexOf(46) + 1);
-            attachObject.set("file_extension", pageNum);
-        } else {
-            attachObject.set("attach_type", invoiceInfo.getString("fileType"));
-            attachObject.set("attach_name", invoiceInfo.getString("fileName"));
-            pageNum = invoiceInfo.getString("fileName").substring(invoiceInfo.getString("fileName").lastIndexOf(46) + 1);
-            attachObject.set("file_extension", pageNum);
-        }
-
-        attachObject.set("attach_category", AttachConstant.ATTACH_LIST_CATEGORY_ID);
-        attachObject.set("original_name", invoiceInfo.getString("fileName"));
-        attachObject.set("snapshot_url", invoiceInfo.getString("snapshotUrl"));
-        attachObject.set("icon_url", invoiceInfo.getString("snapshotUrl"));
-        attachObject.set("attach_hash_value", invoiceInfo.getString("fileHash"));
-        pageNum = invoiceInfo.getString("pageNum");
-        if (StringUtils.isNotEmpty(pageNum)) {
-            try {
-                String target = pageNum.replaceAll(" ", "");
-                String subStr = target.substring(0, target.length() - 1);
-                int index = subStr.indexOf(20849);
-                int index2 = subStr.indexOf(39029);
-                int index3 = subStr.indexOf(31532);
-                String pageSum = target.substring(index, index2).substring(1);
-                String pageNo = target.substring(index3, subStr.length()).substring(1);
-                attachObject.set("page_sum", Integer.valueOf(pageSum));
-                attachObject.set("page_no", Integer.valueOf(pageNo));
-            } catch (Exception var21) {
-                logger.info("截取总页码失败:", var21);
-            }
-        }
-
-        return attachObject;
-    }
-
-    public JSONArray getTargetArray(JSONArray finalResult) {
-        return (JSONArray)finalResult.stream().filter((f) -> {
-            JSONObject invoiceInfo = (JSONObject)f;
-            return isSalePage(invoiceInfo);
-        }).collect(Collectors.toCollection(JSONArray::new));
-    }
-
-    public static boolean isSalePage(JSONObject invoiceInfo) {
-        String invoiceCode = invoiceInfo.getString("invoiceCode");
-        String invoiceNo = invoiceInfo.getString("invoiceNo");
-        boolean typeCheck = InputInvoiceTypeEnum.OTHER_INVOICE.getCode().equals(invoiceInfo.getLong("invoiceType"));
-        boolean emptyCheck = StringUtils.isNotEmpty(invoiceCode) && StringUtils.isNotEmpty(invoiceNo);
-        String title = invoiceInfo.getString("title");
-        boolean titleCheck = StringUtils.isNotEmpty(title) && (title.contains("清单") || title.contains("明细"));
-        return typeCheck && emptyCheck && titleCheck;
-    }
-
-    public void dealInvoiceAttachRelation(JSONObject invoiceInfo) {
-        if (invoiceInfo != null) {
-            logger.info("处理发票绑定附件关系....");
-            String invoiceCode = invoiceInfo.getString("invoiceCode");
-            String invoiceNo = invoiceInfo.getString("invoiceNo");
-            invoiceCode = StringUtils.isNotEmpty(invoiceCode) ? invoiceCode : invoiceInfo.getString("invoice_code");
-            invoiceNo = StringUtils.isNotEmpty(invoiceNo) ? invoiceNo : invoiceInfo.getString("invoice_no");
-            StringBuilder attachNo = new StringBuilder();
-            attachNo.append(invoiceCode).append('_').append(invoiceNo);
-            DynamicObjectCollection attachCollect = this.getAttachDynamicByAttachNo(attachNo.toString());
-            Iterator var6 = attachCollect.iterator();
-
-            while(var6.hasNext()) {
-                DynamicObject attachInfo = (DynamicObject)var6.next();
-                String targetCode = attachInfo.getString("attach_no");
-                if (StringUtils.isNotEmpty(targetCode)) {
-                    String[] codeNo = targetCode.split("_");
-                    if (codeNo.length == 2 && invoiceCode.equals(codeNo[0]) && invoiceNo.equals(codeNo[1])) {
-                        DynamicObject attachRelationObject = this.getAttachRelationDynamicObject(attachInfo.getLong("id"), invoiceInfo.getString("serialNo"));
-                        if (attachRelationObject != null) {
-                            SaveServiceHelper.save(new DynamicObject[]{attachRelationObject});
-                        }
-
-                        logger.info("发票绑定附件关系保存成功....");
-                    }
-                }
-            }
-
-            JSONObject numObject = this.calcSaleListComplete(invoiceCode, invoiceNo, attachNo.toString());
-            invoiceInfo.put("salelistSum", numObject.getString("salelistSum"));
-            invoiceInfo.put("bindNum", numObject.getString("bindNum"));
-        }
-    }
-
-    public JSONObject calcSaleListComplete(String invoiceCode, String invoiceNo, String attachNo) {
-        logger.info("计算清单完整性,{},{}", invoiceCode, invoiceNo);
-        JSONObject numObject = new JSONObject();
-        int saleListSum = 0;
-        QFilter attachNoFilter = new QFilter("attach_no", "=", attachNo);
-        String attachFields = MetadataUtil.getFields("rim_attach");
-        DynamicObject[] attachCollect = BusinessDataServiceHelper.load("rim_attach", attachFields, new QFilter[]{attachNoFilter});
-        int bindNum = 0;
-        DynamicObject attachOne;
-        if (attachCollect != null && attachCollect.length > 0) {
-            String url = RimConfigUtils.getConfig("rim_recog_check", "salelistposturl");
-            if (StringUtils.isNotEmpty(url)) {
-                Set<Integer> numSet = (Set)Arrays.stream(attachCollect).filter((f) -> {
-                    if (f.getInt("page_no") == 0) {
-                        return false;
-                    } else {
-                        Long attachId = f.getLong("id");
-                        boolean isBind = this.checkBind(attachId);
-                        return isBind;
-                    }
-                }).map((m) -> {
-                    return m.getInt("page_no");
-                }).collect(Collectors.toSet());
-                bindNum = numSet.size();
-            } else {
-                DynamicObject[] var18 = attachCollect;
-                int var12 = attachCollect.length;
-
-                for(int var13 = 0; var13 < var12; ++var13) {
-                    attachOne = var18[var13];
-                    Long attachId = attachOne.getLong("id");
-                    boolean isBind = this.checkBind(attachId);
-                    if (isBind) {
-                        ++bindNum;
-                    }
-                }
-            }
-        }
-
-        QFilter invoiceNoFilter = new QFilter("invoice_no", "=", invoiceNo);
-        QFilter invoiceCodeFilter = new QFilter("invoice_code", "=", invoiceCode);
-        if (StringUtils.isNotEmpty(invoiceNo) && invoiceNo.length() == 20) {
-            invoiceCodeFilter = null;
-        }
-
-        String mainFields = MetadataUtil.getFields("rim_invoice");
-        DynamicObject mainObject = BusinessDataServiceHelper.loadSingle("rim_invoice", mainFields, new QFilter[]{invoiceNoFilter, invoiceCodeFilter});
-        if (mainObject != null) {
-            saleListSum = mainObject.getInt("salelist_sum");
-            if (attachCollect != null && attachCollect.length > 0) {
-                attachOne = attachCollect[0];
-                int pageSum = attachOne.getInt("page_sum");
-                if (pageSum != 0 && pageSum != saleListSum) {
-                    mainObject.set("salelist_sum", pageSum);
-                    saleListSum = pageSum;
-                }
-            }
-
-            if (bindNum == 0) {
-                mainObject.set("salelist_complete", "3");
-            } else if (bindNum < saleListSum) {
-                mainObject.set("salelist_complete", "2");
-            } else {
-                mainObject.set("salelist_complete", "0");
-            }
-
-            SaveServiceHelper.save(new DynamicObject[]{mainObject});
-            logger.info("计算清单完整性完毕,{},{}", invoiceCode, invoiceNo);
-        }
-
-        numObject.put("salelistSum", saleListSum);
-        numObject.put("bindNum", bindNum);
-        return numObject;
-    }
-
-    private DynamicObjectCollection getAttachDynamicByAttachNo(String attachNo) {
-        DynamicObjectCollection result = new DynamicObjectCollection();
-        QFilter attachNoFilter = new QFilter("attach_no", "=", attachNo);
-        String attachFields = MetadataUtil.getFields("rim_attach");
-        DynamicObject[] attachCollect = BusinessDataServiceHelper.load("rim_attach", attachFields, new QFilter[]{attachNoFilter});
-        if (attachCollect != null && attachCollect.length > 0) {
-            DynamicObject[] var6 = attachCollect;
-            int var7 = attachCollect.length;
-
-            for(int var8 = 0; var8 < var7; ++var8) {
-                DynamicObject attachObject = var6[var8];
-                Long attachId = attachObject.getLong("id");
-                boolean isBind = this.checkBind(attachId);
-                if (!isBind) {
-                    result.add(attachObject);
-                }
-            }
-        }
-
-        return result;
-    }
-
-    public boolean checkBind(Long attachId) {
-        QFilter attachIdFilter = new QFilter("attach_id", "=", attachId.toString());
-        QFilter relationIdFilter = new QFilter("relation_id", "!=", " ");
-        String attachFields = MetadataUtil.getFields("rim_attach_relation");
-        DynamicObject[] attachCollect = BusinessDataServiceHelper.load("rim_attach_relation", attachFields, new QFilter[]{attachIdFilter, relationIdFilter});
-        return attachCollect != null && attachCollect.length > 0;
-    }
-
-    public Map<String, Integer> filterBindAttach(List<String> attachIds) {
-        QFilter attachIdFilter = new QFilter("attach_id", "in", attachIds);
-        QFilter relationIdFilter = new QFilter("relation_id", "!=", " ");
-        String attachFields = MetadataUtil.getFields("rim_attach_relation");
-        DynamicObject[] attachCollect = BusinessDataServiceHelper.load("rim_attach_relation", attachFields, new QFilter[]{attachIdFilter, relationIdFilter});
-        if (attachCollect.length == 0) {
-            return Maps.newHashMap();
-        } else {
-            Map<String, List<DynamicObject>> relationGroup = (Map)Arrays.stream(attachCollect).collect(Collectors.groupingBy((attach) -> {
-                return attach.getString("relation_id");
-            }));
-            Map<String, Integer> map = Maps.newHashMapWithExpectedSize(relationGroup.size());
-            List<String> serialList = Lists.newArrayList();
-            Iterator var9 = relationGroup.entrySet().iterator();
-
-            while(var9.hasNext()) {
-                Map.Entry<String, List<DynamicObject>> entry = (Map.Entry)var9.next();
-                map.put(entry.getKey(), ((List)entry.getValue()).size());
-                serialList.add(entry.getKey());
-            }
-
-            QFilter serialFilter = new QFilter("serial_no", "in", serialList);
-            DynamicObject[] invoiceCollect = BusinessDataServiceHelper.load("rim_invoice", "serial_no, invoice_code, invoice_no", new QFilter[]{serialFilter});
-            Map<String, String> invoiceMap = Maps.newHashMapWithExpectedSize(invoiceCollect.length);
-            DynamicObject[] var12 = invoiceCollect;
-            int var13 = invoiceCollect.length;
-
-            for(int var14 = 0; var14 < var13; ++var14) {
-                DynamicObject invoice = var12[var14];
-                invoiceMap.put(invoice.getString("serial_no"), invoice.getString("invoice_code") + "_" + invoice.getString("invoice_no"));
-            }
-
-            Map<String, Integer> result = Maps.newHashMapWithExpectedSize(map.size());
-            Iterator var19 = map.entrySet().iterator();
-
-            while(var19.hasNext()) {
-                Map.Entry<String, Integer> entry = (Map.Entry)var19.next();
-                result.put(invoiceMap.get(entry.getKey()), entry.getValue());
-            }
-
-            return result;
-        }
-    }
-}

+ 0 - 727
src/main/java/kd/imc/rim/RecognitionCheckServiceEx.java

@@ -1,727 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package kd.imc.rim;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.google.common.collect.Maps;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.DecimalFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.stream.Collectors;
-import kd.bos.context.RequestContext;
-import kd.bos.dataentity.resource.ResManager;
-import kd.bos.dataentity.utils.ObjectUtils;
-import kd.bos.dataentity.utils.StringUtils;
-import kd.bos.fileservice.FileServiceFactory;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.threads.ThreadPool;
-import kd.bos.threads.ThreadPools;
-import kd.imc.rim.common.constant.CheckContant;
-import kd.imc.rim.common.constant.InputInvoiceTypeEnum;
-import kd.imc.rim.common.constant.InvoiceUploadErrorType;
-import kd.imc.rim.common.invoice.collector.InvoiceCollectService;
-import kd.imc.rim.common.invoice.model.ConvertFieldUtil;
-import kd.imc.rim.common.invoice.recognition.listener.IRecognitionListener;
-import kd.imc.rim.common.invoice.recognition.listener.RecognitionListenerResult;
-import kd.imc.rim.common.invoice.recognitionnew.task.FileUploadAndSignTask;
-import kd.imc.rim.common.invoice.save.InvoiceSaveService;
-import kd.imc.rim.common.message.exception.MsgException;
-import kd.imc.rim.common.utils.FileUploadUtils;
-import kd.imc.rim.common.utils.FileUtils;
-import kd.imc.rim.common.utils.FormFileEntity;
-import kd.imc.rim.common.utils.ImcConfigUtil;
-import kd.imc.rim.common.utils.InvoiceConvertUtils;
-import kd.imc.rim.common.utils.RimConfigUtils;
-import kd.imc.rim.common.utils.itextpdf.UrlServiceUtils;
-import kd.imc.rim.file.utils.FileConvertUtils;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.compress.utils.Lists;
-
-public class RecognitionCheckServiceEx {
-    private static RecognitionCheckServiceEx instance = null;
-    private static Log logger = LogFactory.getLog(RecognitionCheckServiceEx.class);
-    private RecognitionCheckHelperEx RecognitionCheckHelperEx = new RecognitionCheckHelperEx();
-    private InvoiceCollectService invoiceCollectService = new InvoiceCollectService();
-    private static Integer recheckorginPage = 999123413;
-    private static ThreadPool uploadThreadPool = ThreadPools.newFixedThreadPool("recognitionUploadThread_2", Runtime.getRuntime().availableProcessors() + 1);
-
-    private RecognitionCheckServiceEx() {
-    }
-
-    public static RecognitionCheckServiceEx getInstance() {
-        Class var0 = RecognitionCheckServiceEx.class;
-        synchronized(RecognitionCheckServiceEx.class) {
-            if (instance == null) {
-                instance = new RecognitionCheckServiceEx();
-            }
-        }
-
-        return instance;
-    }
-
-    public JSONObject recognitionCheckInvoice(String fileUrl, String fileName, IRecognitionListener recognitionListener, JSONObject businessParam) {
-        logger.info("识别查验fileName:{},businessParam:{}", fileName, businessParam);
-        fileName = FileUtils.truncateFileName(fileName, 50);
-        this.markDeleteByVerifySave(businessParam);
-        boolean isCheck = this.getCheckFlag(businessParam);
-        return this.extracted_new(fileUrl, fileName, recognitionListener, businessParam, isCheck);
-    }
-
-    private void markDeleteByVerifySave(JSONObject businessParam) {
-        if (businessParam != null) {
-            String verifySaveFlag = RimConfigUtils.getConfig("verify_save");
-            if ("0".equals(verifySaveFlag)) {
-                businessParam.put("delete", "2");
-            }
-        }
-
-    }
-
-    private JSONObject extracted_new(String fileUrl, String fileName, IRecognitionListener recognitionListener, JSONObject businessParam, boolean isCheck) {
-        long startTime = System.currentTimeMillis();
-        JSONObject result = null;
-        RecognitionListenerResult listener = new RecognitionListenerResult(fileUrl, fileName, 0, 0, new JSONArray());
-
-        JSONArray finalResult;
-        JSONArray attachResult;
-        try {
-            long fileStartTime = System.currentTimeMillis();
-            FormFileEntity fileEntity = this.RecognitionCheckHelperEx.getFormFileEntity(fileUrl, fileName);
-            if (!fileEntity.getSuccess()) {
-                this.handle(recognitionListener, listener);
-                return InvoiceUploadErrorType.getSplitErrorResult();
-            }
-
-            int totalPage = CollectionUtils.isEmpty(fileEntity.getSubFileList()) ? 1 : fileEntity.getSubFileList().size();
-            Map<String, Object> extMap = this.RecognitionCheckHelperEx.getRecognitionCheckExtMap(businessParam);
-            String originalStateDefault = fileEntity.getOriginalStateDefault();
-            if ("1".equals(originalStateDefault)) {
-                extMap.put("originalStateDefault", originalStateDefault);
-            }
-
-            String fileType = fileEntity.getFileType();
-            Map<Integer, Object> subFileFutureMap = this.syncUploadSubFile(fileEntity);
-            logger.info("RecognitionCheckServiceEx 文件解析耗时:{}", System.currentTimeMillis() - fileStartTime);
-
-            List recognitionResultList;
-            try {
-                long recognitionStartTime = System.currentTimeMillis();
-                recognitionResultList = this.RecognitionCheckHelperEx.recognitionInvoiceFile(fileEntity, extMap);
-                logger.info("RecognitionCheckServiceEx 识别总耗时:{}", System.currentTimeMillis() - recognitionStartTime);
-                this.checkOriginal(fileEntity, subFileFutureMap, recognitionResultList);
-                finalResult = JSONObject.parseArray(JSONObject.toJSONString(recognitionResultList));
-            } catch (Throwable var26) {
-                this.handle(recognitionListener, listener);
-                if (var26 instanceof MsgException) {
-                    return JSON.parseObject(var26.toString());
-                }
-
-                logger.info("识别程序错误:", var26);
-                return InvoiceUploadErrorType.getRecognitionErrorResult();
-            }
-
-            if (isCheck && recognitionResultList.size() > 0) {
-                try {
-                    long checkStartTime = System.currentTimeMillis();
-                    List<JSONObject> checkResultList = this.RecognitionCheckHelperEx.checkInvoiceByRecognitionInfo(recognitionResultList, extMap);
-                    logger.info("RecognitionCheckServiceEx 查验总耗时:{}", System.currentTimeMillis() - checkStartTime);
-                    finalResult = JSONObject.parseArray(JSONObject.toJSONString(checkResultList));
-                } catch (Throwable var25) {
-                    this.handle(recognitionListener, listener);
-                    logger.info("查验程序错误:", var25);
-                    return InvoiceUploadErrorType.getCheckErrorResult();
-                }
-            }
-
-            Map<String, Object> fileBaseInfo = Maps.newHashMap();
-            fileBaseInfo.put("fileType", fileType);
-            fileBaseInfo.put("fileUrl", fileUrl);
-            fileBaseInfo.put("fileName", fileName);
-            fileBaseInfo.put("size", fileEntity.getFileSize());
-            fileBaseInfo.put("fileHash", fileEntity.getFileHash());
-            finalResult = this.putFileInfo(fileBaseInfo, finalResult, subFileFutureMap, originalStateDefault);
-            attachResult = this.dealSaleList(finalResult, businessParam);
-            boolean isHandleAttach = attachResult.size() > 0 && finalResult.size() == 0;
-            logger.info("isHandleAttach:{}", isHandleAttach);
-            if (isHandleAttach) {
-                this.handleAttach(attachResult, recognitionListener, fileUrl, fileName, totalPage);
-            }
-
-            try {
-                if (fileBaseInfo.get("totalPage") == null) {
-                    totalPage = this.getTotalPage(finalResult, attachResult);
-                    fileBaseInfo.put("totalPage", totalPage);
-                }
-
-                this.saveInvoice(finalResult, attachResult, isHandleAttach, fileBaseInfo, businessParam, recognitionListener);
-                FileUploadUtils.saveBasAttachment(fileUrl, fileName, "rim_invoice", "", fileEntity.getFileSize());
-            } catch (Throwable var24) {
-                this.handle(recognitionListener, listener);
-                logger.info("发票保存错误:", var24);
-            }
-        } catch (IOException var27) {
-            logger.info("RecognitionCheckServiceEx IOException :{}", var27);
-            this.handle(recognitionListener, listener);
-            return InvoiceUploadErrorType.getSplitErrorResult();
-        } catch (MsgException var28) {
-            logger.info("RecognitionCheckServiceEx MsgException :{}", var28);
-            this.handle(recognitionListener, listener);
-            JSONObject errorInfo = new JSONObject();
-            errorInfo.put("errcode", var28.getErrorCode());
-            errorInfo.put("description", var28.getMessage());
-            return errorInfo;
-        } catch (Throwable var29) {
-            logger.info("RecognitionCheckServiceEx BaseErrorResult Throwable:{}", var29);
-            this.handle(recognitionListener, listener);
-            return InvoiceUploadErrorType.getBaseErrorResult();
-        }
-
-        boolean resultFlag = finalResult.size() != 0 || attachResult.size() != 0;
-        logger.info("RecognitionCheckServiceEx 识别查验入库总耗时:{}", System.currentTimeMillis() - startTime);
-        if (resultFlag) {
-            return InvoiceUploadErrorType.getSuccessResult(finalResult, attachResult);
-        } else {
-            this.handle(recognitionListener, listener);
-            return InvoiceUploadErrorType.getFailResult();
-        }
-    }
-
-    private void checkOriginal(FormFileEntity fileEntity, Map<Integer, Object> subFileFutureMap, List<JSONObject> recognitionResultList) {
-        if (!StringUtils.isBlank(fileEntity.getSecondPageText()) && !CollectionUtils.isEmpty(recognitionResultList)) {
-            JSONObject firstInvoice = (JSONObject)recognitionResultList.get(0);
-            Long invoiceType = firstInvoice.getLong("invoiceType");
-            String invoiceNo = firstInvoice.getString("invoiceNo");
-            String invoiceCode = firstInvoice.getString("invoiceCode");
-            int i;
-            if (InputInvoiceTypeEnum.isCheckOriginalFile(invoiceType) && StringUtils.isNotEmpty(invoiceCode) && StringUtils.isNotEmpty(invoiceNo)) {
-                i = fileEntity.getSecondPageText().indexOf(invoiceCode);
-                int noidx = fileEntity.getSecondPageText().indexOf(invoiceNo);
-                if (i < 0 || noidx < 0) {
-                    return;
-                }
-            }
-
-            for(i = 1; i < recognitionResultList.size(); ++i) {
-                JSONObject invoice = (JSONObject)recognitionResultList.get(i);
-                if (!kd.imc.rim.RecognitionCheckHelperEx.isSalePage(invoice)) {
-                    return;
-                }
-            }
-
-            FileUploadAndSignTask task = new FileUploadAndSignTask(fileEntity.getFileUrl(), (byte[])null, fileEntity.getFileName(), "pdf", fileEntity.getFileHash(), true, RequestContext.get());
-            task.setSignOnly(true);
-            Future<JSONObject> subUploadFuture = uploadThreadPool.submit(task);
-            subFileFutureMap.put(recheckorginPage, subUploadFuture);
-        }
-
-    }
-
-    private int getTotalPage(JSONArray finalResult, JSONArray attachArray) {
-        Set<Integer> pageNumSet = new HashSet(8);
-        int i;
-        if (finalResult != null && !finalResult.isEmpty()) {
-            for(i = 0; i < finalResult.size(); ++i) {
-                pageNumSet.add(finalResult.getJSONObject(i).getInteger("pageNo"));
-            }
-        }
-
-        if (attachArray != null && !attachArray.isEmpty()) {
-            for(i = 0; i < attachArray.size(); ++i) {
-                pageNumSet.add(attachArray.getJSONObject(i).getInteger("pageNo"));
-            }
-        }
-
-        return pageNumSet.size();
-    }
-
-    private void handleAttach(JSONArray attachResult, IRecognitionListener recognitionListener, String fileUrl, String fileName, int totalPage) {
-        if (attachResult != null && attachResult.size() != 0) {
-            if (recognitionListener != null) {
-                Map<Integer, List<Object>> handleMap = (Map)attachResult.stream().collect(Collectors.groupingBy((v) -> {
-                    return ((JSONObject)v).getInteger("pageNo");
-                }));
-                logger.info("handleAttach handleMap:{}", handleMap);
-                Iterator var7 = handleMap.entrySet().iterator();
-
-                while(var7.hasNext()) {
-                    Map.Entry<Integer, List<Object>> entry = (Map.Entry)var7.next();
-                    int pageNo = (Integer)entry.getKey();
-                    logger.info("附件通知前端pageNo:{}", pageNo);
-                    JSONArray invoiceArray = JSONArray.parseArray(JSON.toJSONString(entry.getValue()));
-                    RecognitionListenerResult listener = new RecognitionListenerResult(fileUrl, fileName, pageNo, totalPage, invoiceArray);
-                    recognitionListener.handle(listener);
-                }
-            }
-
-        }
-    }
-
-    private JSONArray dealSaleList(JSONArray finalResult, JSONObject businessParam) {
-        if (finalResult.size() == 0) {
-            return new JSONArray();
-        } else {
-            Map<String, String> configMap = ImcConfigUtil.getValue("rim_recog_check");
-            String isDealSaleList = (String)configMap.get("is_dealsalelist");
-            if ("0".equals(isDealSaleList)) {
-                return new JSONArray();
-            } else {
-                JSONArray targetArray = this.RecognitionCheckHelperEx.getTargetArray(finalResult);
-                finalResult.removeAll(targetArray);
-                Map<String, Long> invoiceTypeMap = this.getInvoiceTypeMapAndRemoveFinancialDetail(finalResult);
-                JSONArray attachArray = this.RecognitionCheckHelperEx.bindAttachInvoice(targetArray, businessParam, invoiceTypeMap);
-                List<String> finishList = Lists.newArrayList();
-                if (attachArray.size() > 0) {
-                    for(int i = 0; i < attachArray.size(); ++i) {
-                        JSONObject attachInfo = attachArray.getJSONObject(i);
-                        String invoiceCode = attachInfo.getString("invoiceCode");
-                        String invoiceNo = attachInfo.getString("invoiceNo");
-                        String isVat = attachInfo.getString("isVat");
-                        if ("1".equals(isVat)) {
-                            StringBuilder attachNo = new StringBuilder();
-                            attachNo.append(invoiceCode).append('_').append(invoiceNo);
-                            if (!finishList.contains(attachNo.toString())) {
-                                JSONObject numObject = this.RecognitionCheckHelperEx.calcSaleListComplete(invoiceCode, invoiceNo, attachNo.toString());
-                                int salelistSum = numObject.getInteger("salelistSum");
-                                if (salelistSum == 0) {
-                                    salelistSum = attachInfo.getInteger("page_sum");
-                                }
-
-                                attachInfo.put("salelistSum", salelistSum);
-                                attachInfo.put("bindNum", numObject.getInteger("bindNum"));
-                                finishList.add(attachNo.toString());
-                            }
-                        }
-                    }
-                }
-
-                return attachArray;
-            }
-        }
-    }
-
-    private Map<String, Long> getInvoiceTypeMapAndRemoveFinancialDetail(JSONArray finalResult) {
-        Map<String, Long> invoiceTypeMap = new HashMap(8);
-        boolean notFINANCIAL = false;
-
-        for(int i = 0; i < finalResult.size(); ++i) {
-            JSONObject invoiceInfo = finalResult.getJSONObject(i);
-            Long invoiceType = invoiceInfo.getLong("invoiceType");
-            if (!InputInvoiceTypeEnum.OTHER_INVOICE.getCode().equals(invoiceType)) {
-                invoiceTypeMap.put(StringUtils.trimToEmpty(invoiceInfo.getString("invoiceCode")) + StringUtils.trimToEmpty(invoiceInfo.getString("invoiceNo")), invoiceType);
-            } else if (!InputInvoiceTypeEnum.FINANCIAL_INVOICE.getCode().equals(invoiceType) && !InputInvoiceTypeEnum.OTHER_INVOICE.getCode().equals(invoiceType)) {
-                notFINANCIAL = true;
-            }
-        }
-
-        if (invoiceTypeMap.size() > 0 && !notFINANCIAL) {
-            List<JSONObject> list = new ArrayList(8);
-
-            for(int i = 0; i < finalResult.size(); ++i) {
-                JSONObject invoiceInfo = finalResult.getJSONObject(i);
-                Long invoiceType = invoiceInfo.getLong("invoiceType");
-                String title = invoiceInfo.getString("title");
-                if (!kd.imc.rim.RecognitionCheckHelperEx.isSalePage(invoiceInfo) && InputInvoiceTypeEnum.OTHER_INVOICE.getCode().equals(invoiceType) && StringUtils.isNotEmpty(title) && title.indexOf("明细") > 0) {
-                    list.add(invoiceInfo);
-                }
-            }
-
-            if (!list.isEmpty()) {
-                finalResult.removeAll(list);
-            }
-        }
-
-        return invoiceTypeMap;
-    }
-
-    public void handle(IRecognitionListener recognitionListener, RecognitionListenerResult listener) {
-        if (recognitionListener != null) {
-            recognitionListener.handle(listener);
-        }
-
-    }
-
-    public static void setInvoiceSeq(JSONObject invoiceInfo, JSONObject businessParam, int pageNo, int invoiceIndex) {
-        if (invoiceInfo != null) {
-            String uploadIndex;
-            if (businessParam == null) {
-                uploadIndex = String.valueOf(System.currentTimeMillis());
-            } else {
-                uploadIndex = businessParam.getString("uploadIndex");
-                if (StringUtils.isEmpty(uploadIndex)) {
-                    uploadIndex = String.valueOf(System.currentTimeMillis());
-                    businessParam.put("uploadIndex", uploadIndex);
-                }
-            }
-
-            invoiceInfo.put("uploadSeq", getInvoiceSeq(uploadIndex, pageNo, invoiceIndex));
-        }
-    }
-
-    public static Long getInvoiceSeq(String uploadIndex, int pageNo, int invoiceIndex) {
-        DecimalFormat decimalFormat = new DecimalFormat("000");
-        return Long.valueOf(uploadIndex + decimalFormat.format((long)pageNo) + decimalFormat.format((long)invoiceIndex));
-    }
-
-    private JSONArray putFileInfo(Map<String, Object> fileBaseInfo, JSONArray finalResult, Map<Integer, Object> subFileFutureMap, String originalStateDefault) throws ExecutionException, InterruptedException {
-        String updateFileType = String.valueOf(fileBaseInfo.get("fileType"));
-        String updateFileUrl = String.valueOf(fileBaseInfo.get("fileUrl"));
-        int size = finalResult.size();
-        boolean pdfSplit = false;
-        if (size > 1 && "pdf".equals(updateFileType)) {
-            pdfSplit = true;
-        }
-
-        Object refeature = subFileFutureMap.get(recheckorginPage);
-        boolean returnFirst = false;
-
-        for(int i = 0; i < finalResult.size(); ++i) {
-            JSONObject invoiceInfo = (JSONObject)finalResult.get(i);
-            Long invoiceType = invoiceInfo.getLong("invoiceType");
-            invoiceInfo.put("fileName", fileBaseInfo.get("fileName"));
-            invoiceInfo.put("fileHash", fileBaseInfo.get("fileHash"));
-            int pageNo = (Integer)invoiceInfo.get("pageNo");
-            Object feature = subFileFutureMap.get(pageNo);
-            if (feature != null) {
-                long start = System.currentTimeMillis();
-                JSONObject fileReuslt = this.getUploadResult(feature);
-                if (refeature != null && i == 0) {
-                    JSONObject fileReuslt2 = this.getUploadResult(refeature);
-                    if (fileReuslt2 != null) {
-                        returnFirst = "true".equals(fileReuslt2.getString("isOriginal"));
-                    }
-                }
-
-                if (fileReuslt != null) {
-                    String isOriginal = fileReuslt.getString("isOriginal");
-                    if (!"1".equals(invoiceInfo.getString("originalState"))) {
-                        if ("true".equals(isOriginal)) {
-                            invoiceInfo.put("originalState", "1");
-                        } else {
-                            invoiceInfo.put("originalState", "0");
-                        }
-                    }
-
-                    invoiceInfo.put("subFileName", fileReuslt.getString("subFileName"));
-                    invoiceInfo.put("snapshotUrl", fileReuslt.getString("snapshotUrl"));
-                    invoiceInfo.put("imageUrl", fileReuslt.getString("imageUrl"));
-                    invoiceInfo.put("ofdUrl", fileReuslt.getString("ofdUrl"));
-                    invoiceInfo.put("pdfUrl", fileReuslt.getString("pdfUrl"));
-                    if (pdfSplit) {
-                        invoiceInfo.put("pdfUrl", updateFileUrl);
-                    }
-
-                    invoiceInfo.put("localUrl", "");
-                    invoiceInfo.put("kdcloudUrl", "");
-                    if ("pdf".equals(FileUtils.getFileType((String)fileBaseInfo.get("fileName")))) {
-                        invoiceInfo.put("fileType", "1");
-                    } else if ("ofd".equals(FileUtils.getFileType((String)fileBaseInfo.get("fileName")))) {
-                        invoiceInfo.put("fileType", "4");
-                    } else {
-                        invoiceInfo.put("fileType", "2");
-                    }
-
-                    invoiceInfo.put("synConvert", fileReuslt.getString("synConvert"));
-                } else {
-                    invoiceInfo.put("synConvert", true);
-                }
-
-                logger.info("获取文件处理结果等待时长{},{}", System.currentTimeMillis() - start, fileReuslt);
-                if (returnFirst && !InputInvoiceTypeEnum.HGJKS.getCode().equals(invoiceType)) {
-                    JSONArray finalResult2 = new JSONArray();
-                    invoiceInfo.put("originalState", "1");
-                    finalResult2.add(invoiceInfo);
-                    fileBaseInfo.put("totalPage", 1);
-                    return finalResult2;
-                }
-            } else {
-                logger.info("获取文件处理结果第{}页结果为空", pageNo);
-            }
-        }
-
-        return finalResult;
-    }
-
-    private JSONObject getUploadResult(Object feature) {
-        long timeOut = 10L;
-        if (feature instanceof Future) {
-            try {
-                return (JSONObject)((Future)feature).get(timeOut, TimeUnit.SECONDS);
-            } catch (InterruptedException var5) {
-                logger.info("获取文件处理结果等待超时-{} InterruptedException", timeOut);
-            } catch (ExecutionException var6) {
-                logger.info("获取文件处理结果等待超时-{} ExecutionException", timeOut);
-            } catch (TimeoutException var7) {
-                logger.info("获取文件处理结果等待超时-{} TimeoutException", timeOut);
-            }
-        } else if (feature instanceof JSONObject) {
-            return (JSONObject)feature;
-        }
-
-        return null;
-    }
-
-    private Map<Integer, Object> syncUploadSubFile(FormFileEntity fileFile) {
-        if (fileFile != null && fileFile.getSuccess()) {
-            Map<Integer, Object> result = Maps.newHashMap();
-            int pageNo = 0;
-            if (CollectionUtils.isEmpty(fileFile.getSubFileList())) {
-                result.put(1, this.syncUploadOneFile(fileFile, 1));
-            } else {
-                int totalPage = fileFile.getSubFileList().size();
-                Iterator var5 = fileFile.getSubFileList().iterator();
-
-                while(var5.hasNext()) {
-                    FormFileEntity subFile = (FormFileEntity)var5.next();
-                    ++pageNo;
-                    result.put(pageNo, this.syncUploadOneFile(subFile, totalPage));
-                }
-            }
-
-            return result;
-        } else {
-            return null;
-        }
-    }
-
-    private Object syncUploadOneFile(FormFileEntity fileFile, int totalPage) {
-        Future<JSONObject> subUploadFuture = null;
-        RequestContext context = RequestContext.get();
-        if (!"ofd".equalsIgnoreCase(fileFile.getFileType()) && !"pdf".equalsIgnoreCase(fileFile.getFileType())) {
-            JSONObject result = new JSONObject();
-            result.put("isOriginal", false);
-            result.put("fileType", "2");
-            result.put("imageUrl", fileFile.getFileUrl());
-            result.put("snapshotUrl", fileFile.getFileUrl());
-            result.put("subFileName", fileFile.getFileName());
-            return result;
-        } else {
-            try {
-                InputStream fileInputStream = UrlServiceUtils.getAttachmentDecodedStream(FileServiceFactory.getAttachmentFileService().getInputStream(fileFile.getFileUrl()));
-                Throwable var6 = null;
-
-                try {
-                    byte[] streamByte = FileUtils.getByte(fileInputStream);
-                    if (StringUtils.isEmpty(fileFile.getFileHash())) {
-                        fileFile.setFileHash(FileConvertUtils.getSHA256(streamByte));
-                    }
-
-                    subUploadFuture = uploadThreadPool.submit(new FileUploadAndSignTask(fileFile.getFileUrl(), streamByte, fileFile.getFileName(), fileFile.getFileType(), fileFile.getFileHash(), fileFile.getSignatureFlag(), context));
-                } catch (Throwable var16) {
-                    var6 = var16;
-                    throw var16;
-                } finally {
-                    if (fileInputStream != null) {
-                        if (var6 != null) {
-                            try {
-                                fileInputStream.close();
-                            } catch (Throwable var15) {
-                                var6.addSuppressed(var15);
-                            }
-                        } else {
-                            fileInputStream.close();
-                        }
-                    }
-
-                }
-            } catch (IOException var18) {
-                logger.error("文件处理失败:" + fileFile.getFileUrl(), var18);
-            }
-
-            return subUploadFuture;
-        }
-    }
-
-    private void saveInvoice(JSONArray finalResult, JSONArray attachResult, boolean isHandleAttach, Map<String, Object> fileBaseInfo, JSONObject businessParam, IRecognitionListener recognitionListener) {
-        String fileUrl = (String)fileBaseInfo.get("fileUrl");
-        String fileName = (String)fileBaseInfo.get("fileName");
-        int totalPage = (Integer)fileBaseInfo.get("totalPage");
-        JSONArray handleResult = new JSONArray();
-        JSONArray mayErrorResult = new JSONArray();
-
-        for(int i = 0; i < finalResult.size(); ++i) {
-            try {
-                JSONObject invoiceInfo = finalResult.getJSONObject(i);
-                int pageNo = (Integer)invoiceInfo.get("pageNo");
-                setInvoiceSeq(invoiceInfo, businessParam, pageNo, i + 1);
-                Set<String> serialNosSet = new HashSet(8);
-                String snapshotUrl = null;
-                String awsInvoiceType = invoiceInfo.getString("invoiceType");
-                Long invoiceType = InputInvoiceTypeEnum.getInvoiceTypeByAwsType(awsInvoiceType);
-                if (InputInvoiceTypeEnum.ELECTRIC_ORDINARY.getCode().equals(invoiceType) || InputInvoiceTypeEnum.ELECTRIC_SPECIAL.getCode().equals(invoiceType)) {
-                    String originalConfig = RimConfigUtils.getConfig("rim_config", "einvoice_auto_sign");
-                    if (!StringUtils.isEmpty(originalConfig) && !"0".equals(originalConfig)) {
-                        invoiceInfo.put("originalState", "1");
-                    } else {
-                        invoiceInfo.put("originalState", "0");
-                    }
-                }
-
-                invoiceInfo.put("invoiceType", invoiceType);
-                Long tax_org = null;
-                String resourcePlugin = "";
-                if (null != businessParam) {
-                    invoiceInfo.putAll(businessParam);
-                    tax_org = businessParam.getLong("tax_org");
-                    resourcePlugin = businessParam.getString("resourcePlugin");
-                }
-
-                if (!ObjectUtils.isEmpty(tax_org)) {
-                    invoiceInfo.put("tax_org", tax_org);
-                }
-
-                if (StringUtils.isNotEmpty(invoiceInfo.getString("snapshotUrl"))) {
-                    snapshotUrl = FileUtils.downLoadAndUpload(invoiceInfo.getString("snapshotUrl"));
-                }
-
-                if (StringUtils.isNotEmpty(snapshotUrl)) {
-                    invoiceInfo.put("snapshotUrl", snapshotUrl);
-                }
-
-                logger.info("发票识别查验返回数据:" + invoiceInfo);
-                ConvertFieldUtil.getStandardInvoice(invoiceInfo);
-                if (StringUtils.isEmpty(invoiceInfo.getString("serialNo")) || serialNosSet.add(invoiceInfo.getString("serialNo"))) {
-                    if ("sign_by_expense".equals(resourcePlugin)) {
-                        InvoiceSaveService invoiceSaveService = InvoiceSaveService.newInstance(invoiceInfo.getString("invoiceType"));
-                        if (invoiceSaveService != null) {
-                            invoiceInfo.put("delete", invoiceSaveService.setInvoiceFiled(invoiceInfo));
-                        }
-                    }
-
-                    String fileHash = invoiceInfo.getString("fileHash");
-                    String resourceSys = invoiceInfo.getString("resourceSys");
-                    String errcode = invoiceInfo.getString("errcode");
-                    if ("4999".equals(errcode) && InvoiceConvertUtils.isVatInvoiceType(invoiceInfo.getLong("invoiceType"))) {
-                        invoiceInfo.put("checkStatus", "3");
-                    }
-
-                    try {
-                        Object invoiceDate = invoiceInfo.get("invoiceDate");
-                        if (invoiceDate instanceof Long) {
-                            Date date = new Date((Long)invoiceDate);
-                            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
-                            String dateString = formatter.format(date);
-                            invoiceInfo.put("invoiceDate", dateString);
-                        }
-
-                        this.invoiceCollectService.saveInvoice(invoiceInfo, fileUrl, fileHash);
-                    } catch (Exception var28) {
-                        String errorMsg = ResManager.loadKDString("发票数据保存异常,请联系管理员", "RecognitionCheckServiceEx_0", "imc-rim-common", new Object[0]);
-                        if (var28 instanceof MsgException) {
-                            errorMsg = ((MsgException)var28).getErrorMsg();
-                        }
-
-                        invoiceInfo.put("errorMsg", errorMsg);
-                        mayErrorResult.add(invoiceInfo);
-                    }
-
-                    String isSaleListInvoice = invoiceInfo.getString("isSaleListInvoice");
-                    Map<String, String> configMap = ImcConfigUtil.getValue("rim_recog_check");
-                    String isDealSaleList = (String)configMap.get("is_dealsalelist");
-                    if ("1".equals(isSaleListInvoice) && !"0".equals(isDealSaleList)) {
-                        this.RecognitionCheckHelperEx.dealInvoiceAttachRelation(invoiceInfo);
-                    }
-
-                    logger.info("发票助手本地上传保存发票后的数据:" + invoiceInfo);
-                }
-
-                handleResult.add(invoiceInfo);
-            } catch (Throwable var29) {
-                handleResult.add(mayErrorResult);
-                logger.info("发票入库失败:", var29);
-            }
-        }
-
-        if (recognitionListener != null) {
-            this.finallyHandleResult(handleResult, isHandleAttach, attachResult, fileUrl, fileName, totalPage, recognitionListener);
-        }
-
-    }
-
-    private void finallyHandleResult(JSONArray handleResult, boolean isHandleAttach, JSONArray attachResult, String fileUrl, String fileName, int totalPage, IRecognitionListener recognitionListener) {
-        Map<Integer, List<Object>> handleMap = (Map)handleResult.stream().collect(Collectors.groupingBy((v) -> {
-            return ((JSONObject)v).getInteger("pageNo");
-        }));
-        Map<Integer, List<Object>> handleAttachMap = Maps.newLinkedHashMap();
-        if (!isHandleAttach) {
-            handleAttachMap = (Map)attachResult.stream().collect(Collectors.groupingBy((v) -> {
-                return ((JSONObject)v).getInteger("pageNo");
-            }));
-        }
-
-        JSONArray handleAttachArray = new JSONArray();
-        Iterator var11 = handleMap.entrySet().iterator();
-
-        while(var11.hasNext()) {
-            Map.Entry<Integer, List<Object>> entry = (Map.Entry)var11.next();
-            int pageNo = (Integer)entry.getKey();
-            JSONArray invoiceArray = JSONArray.parseArray(JSON.toJSONString(entry.getValue()));
-            logger.info("handleAttachMap:{}", handleAttachMap);
-            if (!((Map)handleAttachMap).isEmpty()) {
-                logger.info("添加清单到发票结果集通知前端:{}", pageNo);
-                Iterator var15 = ((Map)handleAttachMap).entrySet().iterator();
-
-                while(var15.hasNext()) {
-                    Map.Entry<Integer, List<Object>> attachEntry = (Map.Entry)var15.next();
-                    int attachPageNo = (Integer)attachEntry.getKey();
-                    if (pageNo == attachPageNo) {
-                        invoiceArray.addAll(JSONArray.parseArray(JSON.toJSONString(attachEntry.getValue())));
-                    } else {
-                        handleAttachArray.addAll(JSONArray.parseArray(JSON.toJSONString(attachEntry.getValue())));
-                    }
-                }
-            }
-
-            RecognitionListenerResult listener = new RecognitionListenerResult(fileUrl, fileName, pageNo, totalPage, invoiceArray);
-            recognitionListener.handle(listener);
-        }
-
-        if (!handleAttachArray.isEmpty()) {
-            Map<Integer, List<Object>> handleAttach = (Map)handleAttachArray.stream().collect(Collectors.groupingBy((v) -> {
-                return ((JSONObject)v).getInteger("pageNo");
-            }));
-            Iterator var19 = handleAttach.entrySet().iterator();
-
-            while(var19.hasNext()) {
-                Map.Entry<Integer, List<Object>> entry = (Map.Entry)var19.next();
-                int pageNo = (Integer)entry.getKey();
-                JSONArray attachArray = JSONArray.parseArray(JSON.toJSONString(entry.getValue()));
-                RecognitionListenerResult listener = new RecognitionListenerResult(fileUrl, fileName, pageNo, totalPage, attachArray);
-                recognitionListener.handle(listener);
-            }
-        }
-
-    }
-
-    private boolean getCheckFlag(JSONObject businessParam) {
-        boolean isCheck = true;
-        if (businessParam != null) {
-            isCheck = !"1".equals(businessParam.getString("notCheck"));
-        }
-
-        if (!isCheck) {
-            businessParam.put("errcode", "4999");
-            businessParam.put("description", CheckContant.getCheckResultDesc("4999"));
-        }
-
-        return isCheck;
-    }
-}

+ 0 - 501
src/main/java/kd/imc/rim/RecognitionCheckTaskEx.java

@@ -1,501 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package kd.imc.rim;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import kd.bos.context.RequestContext;
-import kd.bos.dataentity.entity.DynamicObject;
-import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.resource.ResManager;
-import kd.bos.dataentity.utils.StringUtils;
-import kd.bos.dlock.DLock;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.orm.query.QFilter;
-import kd.bos.orm.util.CollectionUtils;
-import kd.bos.servicehelper.BusinessDataServiceHelper;
-import kd.bos.servicehelper.operation.SaveServiceHelper;
-import kd.imc.rim.common.constant.InputInvoiceTypeEnum;
-import kd.imc.rim.common.constant.ResultContant;
-import kd.imc.rim.common.invoice.fpzs.FpzsMainService;
-import kd.imc.rim.common.invoice.recognition.listener.IRecognitionListener;
-import kd.imc.rim.common.service.EInvoiceZipXmlDealService;
-import kd.imc.rim.common.service.ElectAccVoucherService;
-import kd.imc.rim.common.service.ExcelInvoiceUploadService;
-import kd.imc.rim.common.utils.BigDecimalUtil;
-import kd.imc.rim.common.utils.CacheHelper;
-import kd.imc.rim.common.utils.FileUtils;
-import kd.imc.rim.common.utils.MD5;
-import org.apache.commons.lang3.tuple.Pair;
-
-public class RecognitionCheckTaskEx implements Callable<JSONObject> {
-    private static Log logger = LogFactory.getLog(RecognitionCheckTaskEx.class);
-    private static int cache_time_out = 1800;
-    private JSONObject businessParam;
-    private Map<String, Object> customParam;
-    private String url;
-    private String fileName;
-    private String pageId;
-    private String source;
-    private RequestContext ctx;
-    public static final String waiting = "waiting";
-    public static final String success = "success";
-    public static final String fail = "fail";
-    protected static final List<String> telGoodNames = new ArrayList<String>(12) {
-        private static final long serialVersionUID = 2608083843312492007L;
-
-        {
-            this.add("电信服务");
-            this.add("基础电信服务");
-            this.add("语音通话服务");
-            this.add("出租或出售网络元素");
-            this.add("增值电信服务");
-            this.add("短信和彩信服务");
-            this.add("电子数据和信息的传输及应用服务");
-            this.add("互联网接入服务");
-            this.add("广播电视信号传输服务");
-            this.add("卫星电视信号落地转接服务");
-            this.add("其他增值电信服务");
-        }
-    };
-
-    public RecognitionCheckTaskEx(RequestContext ctx, String source, String pageId, JSONObject businessParam, Map<String, Object> customParam, String url, String fileName) {
-        saveCacheFile(pageId, url, "waiting");
-        this.ctx = ctx;
-        this.pageId = pageId;
-        this.businessParam = businessParam;
-        this.url = url;
-        this.source = source;
-        this.fileName = fileName;
-        this.customParam = customParam;
-    }
-
-    public JSONObject call() throws Exception {
-        logger.info("begin RecognitionCheckTask :{},{}", this.url, this.fileName);
-
-        try {
-            RequestContext.copyAndSet(this.ctx);
-            if (StringUtils.isEmpty(this.url)) {
-                return null;
-            } else {
-                JSONObject invoiceResult = new JSONObject();
-                Long orgId = RequestContext.get().getOrgId();
-                long rim_user;
-                if (this.customParam != null) {
-                    try {
-                        rim_user = BigDecimalUtil.transDecimal(this.customParam.get("orgId")).longValue();
-                        if (rim_user > 0L) {
-                            orgId = rim_user;
-                        }
-                    } catch (Exception var12) {
-                    }
-                }
-
-                if (this.businessParam != null) {
-                    rim_user = BigDecimalUtil.transDecimal(this.businessParam.get("rim_user")).longValue();
-                    if (rim_user < 1L) {
-                        this.businessParam.put("rim_user", RequestContext.get().getCurrUserId());
-                    }
-                }
-
-                boolean isNeedDeal = FileUtils.checkFileType(this.fileName, new String[]{"zip", "ofd", "pdf"});
-                if (isNeedDeal) {
-                    ElectAccVoucherService electAccVoucherService = new ElectAccVoucherService();
-                    invoiceResult = electAccVoucherService.dealVoucher(this.url, this.fileName, orgId, this.businessParam, (IRecognitionListener)null);
-                }
-
-                boolean isZipXmlEI = FileUtils.checkFileType(this.fileName, new String[]{"zip", "xml"});
-                if (isZipXmlEI && !"0000".equals(invoiceResult.getString("errcode"))) {
-                    invoiceResult = EInvoiceZipXmlDealService.analysisAndCheckSave(this.url, this.fileName, orgId, this.businessParam, (IRecognitionListener)null);
-                }
-
-                String xbrlErrCode = invoiceResult.getString("errcode");
-                boolean dealResult = StringUtils.isEmpty(xbrlErrCode) || !xbrlErrCode.equals("0000");
-                boolean isZip = FileUtils.checkFileType(this.fileName, new String[]{"zip"});
-                if (dealResult && !isZip) {
-                    if (FileUtils.isExcel(this.fileName)) {
-                        invoiceResult = ExcelInvoiceUploadService.getInstance().uploadExcelInvoice(this.url, this.fileName, (IRecognitionListener)null, this.businessParam);
-                    } else {
-                        logger.info("RecognitionCheckTask识别url:{}{}", this.fileName, this.url);
-                        invoiceResult = RecognitionCheckServiceEx.getInstance().recognitionCheckInvoice(this.url, this.fileName, (IRecognitionListener)null, this.businessParam);
-                    }
-                }
-
-                logger.info("发票助手本地上传最终数据返回:{}-{}", this.pageId, invoiceResult);
-                if (ResultContant.isSuccess(invoiceResult)) {
-                    JSONArray invoiceArray = invoiceResult.getJSONArray("data");
-                    classOfInvoice(invoiceArray);
-                    JSONArray failInvoiceArray = invoiceResult.getJSONArray("failData");
-                    JSONArray attachArray = invoiceResult.getJSONArray("attach");
-                    if (!CollectionUtils.isEmpty(failInvoiceArray)) {
-                        CacheHelper.put(this.pageId + "failResult", failInvoiceArray.toJSONString(), cache_time_out);
-                    }
-
-                    if (invoiceArray == null && attachArray == null) {
-                        saveCacheFile(this.pageId, this.url, "fail");
-                    } else {
-                        CacheHelper.put(this.pageId + "refresh", "1", cache_time_out);
-                        if ("fpzs".equals(this.source)) {
-                            Pair<JSONObject, Boolean> cachePair = FpzsMainService.cacheInvoiceList(this.pageId, this.customParam, invoiceArray, attachArray);
-                            if ((Boolean)cachePair.getRight()) {
-                                CacheHelper.put(this.pageId + "scannerProcessRepeat", cachePair.getRight() + "", cache_time_out);
-                            }
-                        } else {
-                            saveCacheFileResult(this.url, invoiceArray);
-                        }
-
-                        saveCacheFile(this.pageId, this.url, "success");
-                    }
-                } else {
-                    saveCacheFile(this.pageId, this.url, "fail");
-                    saveCacheCause(this.pageId, this.url, "fail", invoiceResult.getString("description"));
-                }
-
-                return invoiceResult;
-            }
-        } catch (Throwable var13) {
-            logger.info("RecognitionCheckTask throwable:{}", var13);
-            saveCacheFile(this.pageId, this.url, "fail");
-            saveCacheCause(this.pageId, this.url, "fail", ResManager.loadKDString("程序错误", "RecognitionCheckTask_0", "imc-rim-common", new Object[0]));
-            return new JSONObject();
-        }
-    }
-
-    public static void classOfInvoice(JSONArray invoiceArray) {
-        if (invoiceArray != null) {
-            for(int i = 0; i < invoiceArray.size(); ++i) {
-                JSONObject invoice = invoiceArray.getJSONObject(i);
-                Long invoiceType = invoice.getLong("invoiceType");
-                if (InputInvoiceTypeEnum.needClassOfInvoice(invoiceType)) {
-                    boolean telFlag = telType(invoice);
-                    boolean childFlag = childType(invoice);
-                    if (telFlag && childFlag) {
-                        setInvoiceClass(invoice, "11", "9");
-                    } else if (telFlag) {
-                        setInvoiceClass(invoice, "9");
-                    } else if (childFlag) {
-                        setInvoiceClass(invoice, "11");
-                    }
-                }
-            }
-
-        }
-    }
-
-    private static boolean childType(JSONObject invoice) {
-        boolean flag = false;
-        Long invoiceType = invoice.getLong("invoiceType");
-        if (InputInvoiceTypeEnum.FINANCIAL_INVOICE.getCode().equals(invoiceType)) {
-            String invoicingPartyName = invoice.getString("invoicingPartyName");
-            if (StringUtils.isNotEmpty(invoicingPartyName) && invoicingPartyName.contains("幼儿园")) {
-                flag = true;
-            }
-        } else if (InputInvoiceTypeEnum.ORDINARY_ELECTRON.getCode().equals(invoiceType) || InputInvoiceTypeEnum.ORDINARY_PAPER.getCode().equals(invoiceType) || InputInvoiceTypeEnum.GENERAL_ELECTRON.getCode().equals(invoiceType) || InputInvoiceTypeEnum.ELECTRIC_ORDINARY.getCode().equals(invoiceType)) {
-            JSONArray items = invoice.getJSONArray("items");
-            if (items == null) {
-                return false;
-            }
-
-            for(int i = 0; i < items.size(); ++i) {
-                JSONObject item = items.getJSONObject(i);
-                String goodName = item.getString("goodsName");
-                if (StringUtils.isNotEmpty(goodName) && goodName.contains("保教费")) {
-                    flag = true;
-                    break;
-                }
-            }
-        }
-
-        return flag;
-    }
-
-    private static boolean telType(JSONObject invoice) {
-        Long invoiceType = invoice.getLong("invoiceType");
-        boolean telFlag = false;
-        if (InputInvoiceTypeEnum.ORDINARY_ELECTRON.getCode().equals(invoiceType) || InputInvoiceTypeEnum.SPECIAL_ELECTRON.getCode().equals(invoiceType) || InputInvoiceTypeEnum.ORDINARY_PAPER.getCode().equals(invoiceType) || InputInvoiceTypeEnum.SPECIAL_PAPER.getCode().equals(invoiceType) || InputInvoiceTypeEnum.TOLL_ELECTRON.getCode().equals(invoiceType) || InputInvoiceTypeEnum.ELECTRIC_ORDINARY.getCode().equals(invoiceType) || InputInvoiceTypeEnum.ELECTRIC_SPECIAL.getCode().equals(invoiceType) || InputInvoiceTypeEnum.GENERAL_ELECTRON.getCode().equals(invoiceType)) {
-            JSONArray items = invoice.getJSONArray("items");
-            if (items == null) {
-                return false;
-            }
-
-            boolean flag = false;
-
-            for(int i = 0; i < items.size(); ++i) {
-                JSONObject item = items.getJSONObject(i);
-                String goodName = item.getString("goodsName");
-                Iterator var8 = telGoodNames.iterator();
-
-                while(var8.hasNext()) {
-                    String s = (String)var8.next();
-                    if (goodName.contains(s)) {
-                        telFlag = true;
-                        flag = true;
-                        break;
-                    }
-                }
-
-                if (flag) {
-                    break;
-                }
-            }
-        }
-
-        return telFlag;
-    }
-
-    private static void setInvoiceClass(JSONObject invoice, String... classType) {
-        Long mainId = invoice.getLong("mainId");
-        DynamicObject invoices = BusinessDataServiceHelper.loadSingle("rim_invoice", "id, mul_class, ext_info", new QFilter[]{new QFilter("id", "=", mainId)});
-        if (invoices != null) {
-            String mulClassStr = String.join(",", classType);
-            String extInfo = invoices.getString("ext_info");
-            JSONObject extObject = new JSONObject();
-            if (StringUtils.isNotEmpty(extInfo)) {
-                try {
-                    extObject = JSONObject.parseObject(extInfo);
-                } catch (Exception var13) {
-                    extObject = new JSONObject();
-                }
-            }
-
-            extObject.put("sys_mulclass", mulClassStr);
-            invoices.set("ext_info", extObject.toString());
-            DynamicObjectCollection mul_class = invoices.getDynamicObjectCollection("mul_class");
-            if (CollectionUtils.isEmpty(mul_class)) {
-                String[] var8 = classType;
-                int var9 = classType.length;
-
-                for(int var10 = 0; var10 < var9; ++var10) {
-                    String typeStr = var8[var10];
-                    DynamicObject classInfo = mul_class.addNew();
-                    classInfo.set("fbasedataid_id", typeStr);
-                    SaveServiceHelper.save(new DynamicObject[]{invoices});
-                }
-            }
-        }
-
-    }
-
-    public JSONObject getBusinessParam() {
-        return this.businessParam;
-    }
-
-    public void setBusinessParam(JSONObject businessParam) {
-        this.businessParam = businessParam;
-    }
-
-    public String getUrl() {
-        return this.url;
-    }
-
-    public void setUrl(String url) {
-        this.url = url;
-    }
-
-    public static void saveCacheFileResult(String url, JSONArray result) {
-        if (result != null) {
-            CacheHelper.put(MD5.md5Hex(url), result.toJSONString(), cache_time_out);
-        } else {
-            CacheHelper.remove(MD5.md5Hex(url));
-        }
-
-    }
-
-    public static JSONArray queryCacheFileResult(String url) {
-        String result = CacheHelper.get(MD5.md5Hex(url));
-        return result != null ? JSONArray.parseArray(result) : new JSONArray();
-    }
-
-    public static void saveCacheFile(String pageId, String url, String operate) {
-        cacheFile(pageId, url, operate);
-    }
-
-    public static void saveCacheCause(String pageId, String url, String operate, String cause) {
-        cacheCause(pageId, url, operate, cause);
-    }
-
-    public static JSONObject queryCacheFile(String pageId) {
-        return cacheFile(pageId, (String)null, "query");
-    }
-
-    public static JSONObject queryCacheCause(String pageId) {
-        return cacheCause(pageId, (String)null, "query", (String)null);
-    }
-
-    public static void clearCacheFile(String pageId) {
-        cacheFile(pageId, (String)null, "remove");
-    }
-
-    private static JSONObject cacheCause(String pageId, String url, String operate, String cause) {
-        logger.info(pageId + url + operate + cause);
-        if (StringUtils.isEmpty(pageId)) {
-            return null;
-        } else {
-            String cacheKey = "scaner_cause_" + pageId;
-            DLock lock = DLock.create("lock_" + cacheKey, ResManager.loadKDString("刷新卡片锁", "RecognitionCheckTask_1", "imc-rim-common", new Object[0]));
-            Throwable var6 = null;
-
-            try {
-                int times = 0;
-
-                while(times < 10) {
-                    ++times;
-                    if (lock.tryLock(100L)) {
-                        try {
-                            String cache;
-                            if ("remove".equals(operate)) {
-                                CacheHelper.remove(cacheKey);
-                                cache = null;
-                                return null;
-                            }
-
-                            cache = CacheHelper.get(cacheKey);
-                            JSONObject obj = null;
-                            if (StringUtils.isEmpty(cache)) {
-                                obj = new JSONObject();
-                            } else {
-                                obj = JSON.parseObject(cache);
-                            }
-
-                            JSONObject var10;
-                            if ("query".equals(operate)) {
-                                var10 = obj;
-                                return var10;
-                            }
-
-                            if (StringUtils.isNotEmpty(url) && StringUtils.isNotEmpty(operate) && StringUtils.isNotEmpty(cause)) {
-                                obj.put(url, cause);
-                                CacheHelper.put(cacheKey, obj.toJSONString(), cache_time_out);
-                            }
-
-                            var10 = obj;
-                            return var10;
-                        } finally {
-                            lock.unlock();
-                        }
-                    }
-                }
-            } catch (Throwable var29) {
-                var6 = var29;
-                throw var29;
-            } finally {
-                if (lock != null) {
-                    if (var6 != null) {
-                        try {
-                            lock.close();
-                        } catch (Throwable var27) {
-                            var6.addSuppressed(var27);
-                        }
-                    } else {
-                        lock.close();
-                    }
-                }
-
-            }
-
-            return null;
-        }
-    }
-
-    private static JSONObject cacheFile(String pageId, String url, String operate) {
-        logger.info(pageId + url + operate);
-        if (StringUtils.isEmpty(pageId)) {
-            return null;
-        } else {
-            String cacheKey = "scaner_" + pageId;
-            DLock lock = DLock.create("lock_" + cacheKey, ResManager.loadKDString("刷新卡片锁", "RecognitionCheckTask_1", "imc-rim-common", new Object[0]));
-            Throwable var5 = null;
-
-            JSONObject var11;
-            try {
-                int times = 0;
-
-                do {
-                    if (times >= 10) {
-                        return null;
-                    }
-
-                    ++times;
-                } while(!lock.tryLock(100L));
-
-                long starttime = System.currentTimeMillis();
-
-                try {
-                    String cache;
-                    if ("remove".equals(operate)) {
-                        CacheHelper.remove(cacheKey);
-                        cache = null;
-                        return null;
-                    }
-
-                    cache = CacheHelper.get(cacheKey);
-                    JSONObject obj = null;
-                    if (StringUtils.isEmpty(cache)) {
-                        obj = new JSONObject();
-                    } else {
-                        obj = JSON.parseObject(cache);
-                    }
-
-                    if ("query".equals(operate)) {
-                        var11 = obj;
-                        return var11;
-                    }
-
-                    if (StringUtils.isNotEmpty(url) && StringUtils.isNotEmpty(operate)) {
-                        obj.put(url, operate);
-                        CacheHelper.put(cacheKey, obj.toJSONString(), cache_time_out);
-                    }
-
-                    var11 = obj;
-                } finally {
-                    logger.info("cacheFile总耗时:{}-{}", pageId, System.currentTimeMillis() - starttime);
-                    lock.unlock();
-                }
-            } catch (Throwable var30) {
-                var5 = var30;
-                throw var30;
-            } finally {
-                if (lock != null) {
-                    if (var5 != null) {
-                        try {
-                            lock.close();
-                        } catch (Throwable var28) {
-                            var5.addSuppressed(var28);
-                        }
-                    } else {
-                        lock.close();
-                    }
-                }
-
-            }
-
-            return var11;
-        }
-    }
-
-    public String getSource() {
-        return this.source;
-    }
-
-    public void setSource(String source) {
-        this.source = source;
-    }
-
-    public Map<String, Object> getCustomParam() {
-        return this.customParam;
-    }
-
-    public void setCustomParam(Map<String, Object> customParam) {
-        this.customParam = customParam;
-    }
-}

+ 0 - 267
src/main/java/kd/imc/rim/ScannerServiceEx.java

@@ -1,267 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package kd.imc.rim;
-
-import com.alibaba.fastjson.JSONObject;
-import java.util.Map;
-import kd.bos.context.RequestContext;
-import kd.bos.dataentity.resource.ResManager;
-import kd.bos.ext.form.control.CustomControl;
-import kd.bos.form.ConfirmCallBackListener;
-import kd.bos.form.ConfirmTypes;
-import kd.bos.form.MessageBoxOptions;
-import kd.bos.form.plugin.AbstractFormPlugin;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.threads.ThreadPool;
-import kd.bos.threads.ThreadPools;
-import kd.imc.rim.common.invoice.collector.ScannerService;
-import kd.imc.rim.common.utils.BigDecimalUtil;
-import kd.imc.rim.common.utils.FileUploadUtils;
-import kd.imc.rim.common.utils.ImcConfigUtil;
-import kd.imc.rim.common.utils.RimConfigUtils;
-import org.apache.commons.lang3.StringUtils;
-
-public class ScannerServiceEx {
-    private static final int threadNum = 5;
-    private static ThreadPool checkThreadPool = ThreadPools.newFixedThreadPool("scanner_check_pool_Ex", 5);
-    private static final Log LOGGER = LogFactory.getLog(ScannerService.class);
-    public static final String operate_invoice = "invoice";
-    public static final String operate_attach = "attach";
-
-    public ScannerServiceEx() {
-    }
-
-    public static void startWebScoket(CustomControl control, String linkKey) {
-        RequestContext request = RequestContext.get();
-        String socketUrl = request.getClientFullContextPath() + "msgwatch/?identifytype=" + linkKey + "&tenantsessionkey=KERPSESSIONID" + request.getTenantId();
-        if (socketUrl.startsWith("https")) {
-            socketUrl = "wss" + socketUrl.substring(5);
-        } else if (socketUrl.startsWith("http")) {
-            socketUrl = "ws" + socketUrl.substring(4);
-        }
-
-        JSONObject map = new JSONObject();
-        map.put("operate", "open");
-        map.put("qrcodeType", "cloudhub");
-        map.put("socketUrl", socketUrl);
-        map.put("linkKey", linkKey);
-        map.put("enableWebSocket", "1");
-        if ("0".equals(RimConfigUtils.getConfig("rim_fpzs", "enablesocket"))) {
-            map.put("enableWebSocket", "0");
-        }
-
-        map.put("time", System.currentTimeMillis());
-        LOGGER.info("startWebScoket:" + JSONObject.toJSONString(map));
-        control.setData(map);
-    }
-
-    public static void startInterval(CustomControl control) {
-        JSONObject json = new JSONObject();
-        json.put("time", 1000);
-        json.put("millisec", 1000);
-        json.put("request", System.currentTimeMillis());
-        control.setData(json);
-    }
-
-    public static void removeUpload(CustomControl control) {
-        JSONObject map1 = new JSONObject();
-        map1.put("operate", "remove");
-        map1.put("fid", control.getView().getEntityId());
-        control.setData(map1);
-    }
-
-    public static void initUpload(CustomControl control, boolean canImportExcels, String title) {
-        JSONObject map1 = new JSONObject();
-        RequestContext request = RequestContext.get();
-        map1.put("operate", "init");
-        map1.put("pageId", control.getView().getPageId());
-        map1.put("uploadUrl", request.getClientFullContextPath() + "attachment/upload.do");
-        map1.put("title", title);
-        Map<String, String> rimFpzsConfig = ImcConfigUtil.getValue("rim_fpzs");
-        int maxfilesize = BigDecimalUtil.transDecimal(rimFpzsConfig.get("maxfilesize")).intValue();
-        if (maxfilesize < 1) {
-            maxfilesize = 10;
-        }
-
-        map1.put("maxFileSize", maxfilesize);
-        setImageCompress(map1, rimFpzsConfig);
-        map1.put("fid", control.getView().getEntityId());
-        map1.put("loadMsg", ResManager.loadKDString("上传中..", "ScannerService_0", "imc-rim-common", new Object[0]));
-        map1.put("canImportExcels", canImportExcels);
-        control.setData(map1);
-    }
-
-    public static void setImageCompress(Map<String, Object> map1, Map<String, String> rimFpzsConfig) {
-        double fileLimitSize = 3.0;
-        double fileQuality = 0.98;
-        int fileLimitPixel = 1500;
-        if (rimFpzsConfig != null && StringUtils.isNotEmpty((CharSequence)rimFpzsConfig.get("imageCompress"))) {
-            String imageCompress = (String)rimFpzsConfig.get("imageCompress");
-            String[] str = imageCompress.split(",");
-            double limitSize;
-            if (str.length > 0) {
-                limitSize = BigDecimalUtil.transDecimal(str[0]).doubleValue();
-                if (limitSize > 0.0 && limitSize <= 8.0) {
-                    fileLimitSize = limitSize;
-                }
-            }
-
-            if (str.length > 1) {
-                limitSize = BigDecimalUtil.transDecimal(str[1]).doubleValue();
-                if (limitSize > 0.0) {
-                    fileQuality = limitSize;
-                }
-            }
-
-            if (str.length > 2) {
-                 limitSize = BigDecimalUtil.transDecimal(str[2]).intValue();
-                if (limitSize > 0) {
-                    fileLimitPixel = (int) limitSize;
-                }
-            }
-        }
-
-        map1.put("fileLimitSize", fileLimitSize);
-        map1.put("fileQuality", fileQuality);
-        map1.put("fileLimitPixel", fileLimitPixel);
-    }
-
-    public static void upload(CustomControl control) {
-        JSONObject map1 = new JSONObject();
-        map1.put("operate", "upload");
-        map1.put("time", System.currentTimeMillis());
-        control.setData(map1);
-    }
-
-    public static void init(CustomControl control, String pageId) {
-        RequestContext request = RequestContext.get();
-        JSONObject map1 = new JSONObject();
-        map1.put("pageId", pageId);
-        map1.put("init", "init");
-        map1.put("savePath", FileUploadUtils.getInvoiceDir("invoice") + pageId + "");
-        map1.put("uploadUrl", request.getClientFullContextPath() + "attachment/upload.do");
-        map1.put("time", System.currentTimeMillis());
-        map1.put("fid", control.getView().getEntityId());
-        setScannerParam(map1);
-        map1.put("downloadUrl", getJsScanner());
-        control.setData(map1);
-    }
-
-    public static void scanner(CustomControl control, String pageId, String operate) {
-        RequestContext request = RequestContext.get();
-        JSONObject map1 = new JSONObject();
-        map1.put("pageId", pageId);
-        map1.put("operate", operate);
-        map1.put("savePath", FileUploadUtils.getInvoiceDir("invoice") + pageId + "");
-        String contextPath = request.getClientFullContextPath();
-        if (contextPath.endsWith("/")) {
-            contextPath = contextPath.substring(0, contextPath.length() - 1);
-        }
-
-        map1.put("contextPath", contextPath);
-        map1.put("uploadUrl", contextPath + "/attachment/upload.do");
-        map1.put("time", System.currentTimeMillis());
-        map1.put("fid", control.getView().getEntityId());
-        setScannerParam(map1);
-        map1.put("downloadUrl", getJsScanner());
-        control.setData(map1);
-    }
-
-    private static void setScannerParam(JSONObject param) {
-        Map<String, String> map = ImcConfigUtil.getValue("rim_fpzs");
-        String resolution = null;
-        String scannerType = null;
-        String limitpixel = null;
-        if (map != null) {
-            resolution = StringUtils.trimToEmpty((String)map.get("resolution"));
-            scannerType = StringUtils.trimToEmpty((String)map.get("scanner_type"));
-            limitpixel = StringUtils.trimToEmpty((String)map.get("limitpixel"));
-        }
-
-        if (StringUtils.isEmpty(scannerType)) {
-            scannerType = "rq";
-        }
-
-        if (map != null && "dm".equals(scannerType)) {
-            param.put("productKey", map.get("productkey"));
-        }
-
-        if (StringUtils.isEmpty(resolution)) {
-            resolution = "100";
-        }
-
-        if (StringUtils.isEmpty(limitpixel)) {
-            limitpixel = "2000";
-        }
-
-        param.put("scannerType", scannerType);
-        param.put("resolution", resolution);
-        param.put("fileLimitPixel", limitpixel);
-        param.put("loadMsg", ResManager.loadKDString("扫描上传中..", "ScannerService_1", "imc-rim-common", new Object[0]));
-    }
-
-    public static boolean scannerFail(AbstractFormPlugin plugin, String eventArgs) {
-        if (eventArgs != null) {
-            if (eventArgs.indexOf("JsScanner.msi") > 0) {
-                plugin.getView().showConfirm(ResManager.loadKDString("扫描仪需要安装JsScanner,是否安装?", "ScannerService_2", "imc-rim-common", new Object[0]), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("downJsScanner", plugin));
-                return false;
-            }
-
-            if (eventArgs.indexOf("websocket connect error") > 0) {
-                plugin.getView().showTipNotification(ResManager.loadKDString("请确认已经连接并打开扫描仪!", "ScannerService_3", "imc-rim-common", new Object[0]), 3000);
-                return false;
-            }
-
-            if (eventArgs.indexOf("No data source found in this environment") > 0) {
-                plugin.getView().showTipNotification(ResManager.loadKDString("请检查是否正确安装扫描仪驱动!", "ScannerService_4", "imc-rim-common", new Object[0]), 3000);
-                return false;
-            }
-
-            JSONObject js = JSONObject.parseObject(eventArgs);
-            if (js != null) {
-                String description = js.getString("description");
-                if (!StringUtils.isEmpty(description)) {
-                    plugin.getView().showTipNotification(description, 3000);
-                    return true;
-                }
-            }
-        }
-
-        plugin.getView().showErrorNotification(eventArgs);
-        return false;
-    }
-
-    public static boolean uploadFinish(String eventArgs) {
-        return eventArgs != null && (eventArgs.indexOf("cancelSelectSource") > 0 || eventArgs.indexOf("confirmDownload") > 0 || eventArgs.indexOf("cancelDownload") > 0);
-    }
-
-    public static String getJsScanner() {
-        RequestContext request = RequestContext.get();
-        return request.getClientFullContextPath() + "kingdee/imc/scanner/rq-scanner/lib/JsScanner.msi";
-    }
-
-    public static void downJsScanner(AbstractFormPlugin plugin) {
-        RequestContext request = RequestContext.get();
-        plugin.getView().openUrl(request.getClientFullContextPath() + "kingdee/imc/scanner/rq-scanner/lib/JsScanner.msi");
-    }
-
-    public static void recognitionInvoice(String source, String pageId, String url, String fileName, JSONObject businessParam, Map<String, Object> customParam) {
-        LOGGER.info("Scanner recognitionInvoice...");
-        RecognitionCheckTaskEx task = new RecognitionCheckTaskEx(RequestContext.get(), source, pageId, businessParam, customParam, url, fileName);
-        checkThreadPool.submit(task);
-    }
-
-    public static Long getUploadIndex(JSONObject uploadResult) {
-        Long index = BigDecimalUtil.transDecimal(uploadResult.get("index")).longValue();
-        Long timeStamp = uploadResult.getLong("uploadTimeStamp");
-        if (timeStamp == null) {
-            timeStamp = System.currentTimeMillis();
-        }
-
-        return timeStamp + index;
-    }
-}

+ 0 - 207
src/main/java/kd/imc/rim/common/invoice/collector/InvoiceCollectTaskNew.java

@@ -1,207 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package kd.imc.rim.common.invoice.collector;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import kd.bos.context.RequestContext;
-import kd.bos.dataentity.utils.ObjectUtils;
-import kd.bos.dataentity.utils.StringUtils;
-import kd.bos.logging.Log;
-import kd.bos.logging.LogFactory;
-import kd.bos.mvc.cache.PageCache;
-import kd.bos.orm.util.CollectionUtils;
-import kd.imc.rim.RecognitionCheckServiceEx;
-import kd.imc.rim.common.invoice.recognition.impl.RecognitionProgress;
-import kd.imc.rim.common.invoice.recognition.impl.RecognitionProgressError;
-import kd.imc.rim.common.invoice.recognition.listener.IRecognitionListener;
-import kd.imc.rim.common.invoice.recognition.listener.RecognitionListenerResult;
-import kd.imc.rim.common.service.EInvoiceZipXmlDealService;
-import kd.imc.rim.common.service.ElectAccVoucherService;
-import kd.imc.rim.common.service.ExcelInvoiceUploadService;
-import kd.imc.rim.common.utils.FileUtils;
-
-public class InvoiceCollectTaskNew implements Runnable, IRecognitionListener {
-    private static Log logger = LogFactory.getLog(InvoiceCollectTaskNew.class);
-    private RequestContext rc;
-    private String pageId;
-    private List<Map<String, String>> fileUrls;
-    private RecognitionProgress recognitionProgress;
-    private JSONObject businessParam;
-
-    public InvoiceCollectTaskNew(RequestContext rc, String pageId, List<Map<String, String>> fileUrls, JSONObject businessParam) {
-        this.rc = rc;
-        this.pageId = pageId;
-        this.fileUrls = fileUrls;
-        this.businessParam = businessParam;
-        this.recognitionProgress = new RecognitionProgress();
-        Object[] urls = new Object[fileUrls.size()];
-        int i = 0;
-
-        for(Iterator var7 = fileUrls.iterator(); var7.hasNext(); ++i) {
-            Map<String, String> map = (Map)var7.next();
-            urls[i] = map.get("url");
-        }
-
-        this.recognitionProgress.setUrls(urls);
-        this.recognitionProgress.setProgress(1);
-        this.recognitionProgress.setUnHandleSize(fileUrls.size());
-    }
-
-    public void run() {
-        RequestContext.copyAndSet(this.rc);
-        this.doTask();
-    }
-
-    private void doTask() {
-        PageCache pageCache = new PageCache(this.pageId);
-        long taskStart = System.currentTimeMillis();
-        int size = this.fileUrls.size();
-
-        for(int i = 0; i < size; ++i) {
-            Map<String, String> map = (Map)this.fileUrls.get(i);
-            long start = System.currentTimeMillis();
-            String url = (String)map.get("url");
-            String fileName = (String)map.get("name");
-            String seqStr = (String)map.get("seq");
-
-            try {
-                if (StringUtils.isEmpty(fileName)) {
-                    fileName = url.substring(url.lastIndexOf(47) + 1);
-                }
-
-                this.recognitionProgress.setHandleUrl(url);
-                pageCache.put("progress", JSONObject.toJSONString(this.recognitionProgress));
-                long recognitionStart = System.currentTimeMillis();
-                this.businessParam.put("pageId", this.pageId);
-                this.businessParam.put("uploadIndex", start + (long)i);
-                Long orgId;
-                if (this.businessParam.get("orgId") == null) {
-                    orgId = RequestContext.get().getOrgId();
-                } else {
-                    orgId = (Long)this.businessParam.get("orgId");
-                }
-
-                JSONObject invoiceResult = new JSONObject();
-                boolean isNeedDeal = FileUtils.checkFileType(fileName, new String[]{"zip", "ofd", "pdf"});
-                if (isNeedDeal) {
-                    ElectAccVoucherService electAccVoucherService = new ElectAccVoucherService();
-                    invoiceResult = electAccVoucherService.dealVoucher(url, fileName, orgId, this.businessParam, this);
-                }
-
-                boolean isZipXmlEI = FileUtils.checkFileType(fileName, new String[]{"zip", "xml"});
-                if (isZipXmlEI && !"0000".equals(invoiceResult.getString("errcode"))) {
-                    invoiceResult = EInvoiceZipXmlDealService.analysisAndCheckSave(url, fileName, orgId, this.businessParam, this);
-                }
-
-                String xbrlErrCode = invoiceResult.getString("errcode");
-                boolean dealResult = StringUtils.isEmpty(xbrlErrCode) || !xbrlErrCode.equals("0000");
-                boolean isZip = FileUtils.checkFileType(fileName, new String[]{"zip"});
-                if (dealResult && !isZip) {
-                    if (FileUtils.isExcel(fileName)) {
-                        invoiceResult = ExcelInvoiceUploadService.getInstance().uploadExcelInvoice(url, fileName, this, this.businessParam);
-                    } else {
-                        invoiceResult = RecognitionCheckServiceEx.getInstance().recognitionCheckInvoice(url, fileName, this, this.businessParam);
-                    }
-                }
-
-                logger.info(url + "RecognitionCheckServiceEx识别结果:" + invoiceResult);
-                logger.info(String.format("文件%s中发票识别与查验完毕 共耗时%s", fileName, System.currentTimeMillis() - recognitionStart));
-                if (null == this.recognitionProgress.getRecognitionProgressErrors()) {
-                    this.recognitionProgress.setRecognitionProgressErrors(new ArrayList());
-                }
-
-                if (!"0000".equals(invoiceResult.getString("errcode"))) {
-                    String errdescription = "识别异常,请重试";
-                    if (StringUtils.isNotEmpty(invoiceResult.getString("description"))) {
-                        errdescription = invoiceResult.getString("description");
-                    }
-
-                    this.recognitionProgress.getRecognitionProgressErrors().add(new RecognitionProgressError(url, errdescription));
-                } else {
-                    JSONArray recognitionData = invoiceResult.getJSONArray("data");
-                    if (recognitionData != null) {
-                        for(int k = 0; k < recognitionData.size(); ++k) {
-                            JSONObject invoiceInfo = recognitionData.getJSONObject(k);
-                            if (invoiceInfo != null) {
-                                Object isFalse = invoiceInfo.get("isFalse");
-                                if (isFalse != null) {
-                                    String snapshotUrl = invoiceInfo.getString("pageUrl");
-                                    String pageIndex = invoiceInfo.getString("pageIndex");
-                                    StringBuilder description = new StringBuilder();
-                                    description.append(fileName).append('第').append(pageIndex).append("页识别失败,请重试");
-                                    this.recognitionProgress.getRecognitionProgressErrors().add(new RecognitionProgressError(snapshotUrl, description.toString()));
-                                }
-                            }
-                        }
-                    }
-
-                    JSONObject tips = invoiceResult.getJSONObject("tips");
-                    if (!ObjectUtils.isEmpty(tips) && FileUtils.isExcel(fileName)) {
-                        RecognitionProgressError recognitionProgressError = new RecognitionProgressError();
-                        recognitionProgressError.setUrl(url);
-                        recognitionProgressError.setTipDescription(tips.getString("tipDescription"));
-                        this.recognitionProgress.getRecognitionProgressErrors().add(recognitionProgressError);
-                    }
-                }
-
-                BigDecimal a = new BigDecimal(i + 1);
-                BigDecimal b = new BigDecimal(size);
-                int progress = a.divide(b, 2, 4).multiply(new BigDecimal("100")).intValue();
-                if (progress != 100) {
-                    this.recognitionProgress.setProgress(progress);
-                }
-            } catch (Throwable var31) {
-                if (!FileUtils.isExcel(fileName)) {
-                    if (null == this.recognitionProgress.getRecognitionProgressErrors()) {
-                        this.recognitionProgress.setRecognitionProgressErrors(new ArrayList());
-                    }
-
-                    this.recognitionProgress.getRecognitionProgressErrors().add(new RecognitionProgressError(url, var31.getMessage()));
-                }
-            } finally {
-                this.recognitionProgress.setUnHandleSize(size - i - 1);
-                pageCache.put("progress", JSONObject.toJSONString(this.recognitionProgress));
-                logger.info(String.format("文件%s第%s页,InvoiceCollectTask统计信息-共%s个,耗时%s", fileName, i + 1, size, System.currentTimeMillis() - start));
-            }
-        }
-
-        this.recognitionProgress.setProgress(100);
-        PageCache pageCacheEnd = new PageCache(this.pageId);
-        pageCacheEnd.put("progress", JSONObject.toJSONString(this.recognitionProgress));
-        logger.info(String.format("%s任务统计信息总耗时%s", this.rc.getTraceId(), System.currentTimeMillis() - taskStart));
-    }
-
-    public void handle(RecognitionListenerResult recognitionListenerResult) {
-        PageCache pageCache = new PageCache(this.pageId);
-        String fileUrl = recognitionListenerResult.getFileUrl();
-        this.recognitionProgress.setHandleUrl(fileUrl);
-        if (StringUtils.isNotEmpty(recognitionListenerResult.getErrDescription())) {
-            logger.info(fileUrl + "识别失败/中断," + recognitionListenerResult.getErrDescription());
-            this.recognitionProgress.setHandleUrlIndex(recognitionListenerResult.getRecognitionIndex());
-            this.recognitionProgress.setHandleUrlErrorDescription(recognitionListenerResult.getErrDescription());
-            pageCache.put("progress", JSONObject.toJSONString(this.recognitionProgress));
-            pageCache.put("task_" + fileUrl, "0");
-        } else {
-            int index = recognitionListenerResult.getRecognitionIndex();
-            logger.info(fileUrl + "第" + index + "页识别完成:" + recognitionListenerResult.getRecognitionInvoice().toJSONString());
-            this.recognitionProgress.setHandleUrlIndex(index);
-            this.recognitionProgress.setHandleUrlSize(recognitionListenerResult.getRecognitionSize());
-            pageCache.put("progress", JSONObject.toJSONString(this.recognitionProgress));
-            pageCache.put("task_" + fileUrl, recognitionListenerResult.getRecognitionSize() + "");
-            pageCache.put("task_" + fileUrl + "_" + index, recognitionListenerResult.getRecognitionInvoice().toJSONString());
-            if (!CollectionUtils.isEmpty(recognitionListenerResult.getImportFailInvoice())) {
-                pageCache.put("failed_task_" + fileUrl + "_" + index, recognitionListenerResult.getImportFailInvoice().toJSONString());
-            }
-        }
-
-    }
-}

+ 0 - 310
src/main/java/kd/imc/rim/utils/CodecUtil.java

@@ -1,310 +0,0 @@
-package kd.imc.rim.utils;
-
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import kd.bos.script.annotations.KSObject;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.util.Base64Utils;
-
-import javax.crypto.Cipher;
-import javax.crypto.KeyGenerator;
-import javax.crypto.SecretKey;
-import javax.crypto.spec.SecretKeySpec;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-
-/**
- * @author bi lei
- * @date 2020/12/18 10:35
- */
-@KSObject
-public class CodecUtil {
-    private static final Logger logger = LoggerFactory.getLogger(CodecUtil.class);
-    private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
-
-    /**
-     * AES加密密钥
-     */
-    public static final byte[] AES_SECRET_KEY_BYTES = Base64Utils.decodeFromString("KSKiOQgLKcdaCZLbnkgG7V==");
-
-    /**
-     * SHA1加密密钥(用于增加加密的复杂度)
-     */
-    public static final String SHA1_SECRET_KEY = "uErQ0KY3J2CwttyuaeEYR2==";
-
-    /**
-     * 对业务数据进行加密,用AES加密再用Base64编码
-     *
-     * @param data 待加密数据
-     * @return
-     */
-    public static String aesEncrypt(String data) {
-        try {
-            // 加密算法/工作模式/填充方式
-            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-            byte[] dataBytes = data.getBytes("UTF-8");
-            cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(AES_SECRET_KEY_BYTES, "AES"));
-            byte[] result = cipher.doFinal(dataBytes);
-            return Base64Utils.encodeToString(result);
-        } catch (Exception e) {
-            logger.error("执行CodecUtil.aesEncrypt失败:data={},异常:{}", data, e);
-        }
-        return null;
-    }
-
-    /**
-     * 对业务数据进行加密,用AES解密
-     *
-     * @param encryptedDataBase64
-     * @return
-     */
-    public static String aesDecrypt(String encryptedDataBase64) {
-        try {
-            // 加密算法/工作模式/填充方式
-            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-            byte[] dataBytes = Base64Utils.decodeFromString(encryptedDataBase64);
-            cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(AES_SECRET_KEY_BYTES, "AES"));
-            byte[] result = cipher.doFinal(dataBytes);
-            return new String(result);
-        } catch (Exception e) {
-            logger.error("执行CodecUtil.aesDecrypt失败:data={},异常:{}", encryptedDataBase64, e);
-        }
-        return null;
-    }
-
-
-    /**
-     * 对业务数据进行加密,用AES加密再用Base64编码
-     *
-     * @param data 待加密数据
-     * @return
-     */
-    public static String aesEncrypt(String data,String chartsetName) {
-        try {
-            // 加密算法/工作模式/填充方式
-            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-            if(chartsetName == null || chartsetName.length()==0){
-                chartsetName = "UTF-8";
-            }
-            byte[] dataBytes = data.getBytes(chartsetName);
-            cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(AES_SECRET_KEY_BYTES, "AES"));
-            byte[] result = cipher.doFinal(dataBytes);
-            return Base64Utils.encodeToString(result);
-        } catch (Exception e) {
-            logger.error("执行CodecUtil.aesEncrypt失败:data={},异常:{}", data, e);
-        }
-        return null;
-    }
-
-    /**
-     * 对业务数据进行加密,用AES解密
-     *
-     * @param encryptedDataBase64
-     * @return
-     */
-    public static String aesDecryp(String encryptedDataBase64,String chartsetName) {
-        try {
-            // 加密算法/工作模式/填充方式
-            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-            byte[] dataBytes = Base64Utils.decodeFromString(encryptedDataBase64);
-            cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(AES_SECRET_KEY_BYTES, "AES"));
-            byte[] result = cipher.doFinal(dataBytes);
-            if(chartsetName == null || chartsetName.length()==0){
-                chartsetName = "UTF-8";
-            }
-            return new String(result,chartsetName);
-        } catch (Exception e) {
-            logger.error("执行CodecUtil.aesDecrypt失败:data={},异常:{}", encryptedDataBase64, e);
-        }
-        return null;
-    }
-
-
-    /**
-     * 对业务数据进行加密,用AES解密
-     *
-     * @param encryptedDataBase64
-     * @return
-     */
-    public static String aesDecrypt(String encryptedDataBase64,byte[] aesSecretKeyBytes) {
-        try {
-            // 加密算法/工作模式/填充方式
-            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-            byte[] dataBytes = Base64Utils.decodeFromString(encryptedDataBase64);
-            cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(aesSecretKeyBytes, "AES"));
-            byte[] result = cipher.doFinal(dataBytes);
-            return new String(result);
-        } catch (Exception e) {
-            logger.error("执行CodecUtil.aesDecrypt失败:data={},异常:{}", encryptedDataBase64, e);
-        }
-        return null;
-    }
-
-    /**
-     * 对业务数据进行加密,用AES解密
-     *
-     * @param encryptedDataBase64
-     * @return
-     */
-    public static String aesDecrypt(String encryptedDataBase64,byte[] aesSecretKeyBytes,String chartsetName) {
-        try {
-            // 加密算法/工作模式/填充方式
-            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-            byte[] dataBytes = Base64Utils.decodeFromString(encryptedDataBase64);
-            cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(aesSecretKeyBytes, "AES"));
-            byte[] result = cipher.doFinal(dataBytes);
-
-            if(chartsetName == null || chartsetName.length()==0){
-                chartsetName = "UTF-8";
-            }
-            return new String(result,chartsetName);
-        } catch (Exception e) {
-            logger.error("执行CodecUtil.aesDecrypt失败:data={},异常:{}", encryptedDataBase64, e);
-        }
-        return null;
-    }
-
-    /**
-     * 对业务数据进行加密,用AES加密再用Base64编码
-     *
-     * @param data 待加密数据
-     * @return
-     */
-    public static String aesEncrypt(String data,byte[] AES_SECRET_KEY_BYTES) {
-        try {
-            // 加密算法/工作模式/填充方式
-            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-            byte[] dataBytes = data.getBytes(DEFAULT_CHARSET);
-            cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(AES_SECRET_KEY_BYTES, "AES"));
-            byte[] result = cipher.doFinal(dataBytes);
-            return Base64Utils.encodeToString(result);
-        } catch (Exception e) {
-            logger.error("执行CodecUtil.aesEncrypt失败:data={},异常:{}", data, e);
-        }
-        return null;
-    }
-
-    /**
-     * 对业务数据进行加密,用AES解密
-     *
-     * @param encryptedDataBase64
-     * @return
-     */
-    public static String aesDecryp(String encryptedDataBase64,byte[] AES_SECRET_KEY_BYTES) {
-        try {
-            // 加密算法/工作模式/填充方式
-            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-            byte[] dataBytes = Base64Utils.decodeFromString(encryptedDataBase64);
-            cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(AES_SECRET_KEY_BYTES, "AES"));
-            byte[] result = cipher.doFinal(dataBytes);
-            return new String(result,DEFAULT_CHARSET);
-        } catch (Exception e) {
-            logger.error("执行CodecUtil.aesDecrypt失败:data={},异常:{}", encryptedDataBase64, e);
-        }
-        return null;
-    }
-
-
-
-    /**
-     * 对数据进行加密,用SHA1加密再转换为16进制
-     *
-     * @param data
-     * @return
-     */
-    public static String sha1Encrypt(String data,String SHA1_SECRET_KEY ) {
-        return DigestUtils.sha1Hex(data + SHA1_SECRET_KEY);
-    }
-
-    /**
-     * 对数据进行加密,用SHA1加密再转换为16进制
-     *
-     * @param data
-     * @return
-     */
-    public static String sha1Encrypt(String data) {
-        return DigestUtils.sha1Hex(data + SHA1_SECRET_KEY);
-    }
-
-    /**
-     * AES密钥长度,支持128、192、256
-     */
-    private static final int AES_SECRET_KEY_LENGTH = 128;
-
-    private static String generateAESSecretKeyBase64(String key) {
-        try {
-            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
-            keyGenerator.init(AES_SECRET_KEY_LENGTH);
-            SecretKey secretKey = keyGenerator.generateKey();
-            return Base64Utils.encodeToString(secretKey.getEncoded());
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    static class LoginDemoVo {
-        private String account;
-        private String password;
-
-        public String getAccount() {
-            return account;
-        }
-
-        public void setAccount(String account) {
-            this.account = account;
-        }
-
-        public String getPassword() {
-            return password;
-        }
-
-        public void setPassword(String password) {
-            this.password = password;
-        }
-    }
-
-    public static void main(String[] args) throws Exception {
-
-        long timestamp = System.currentTimeMillis();
-        JSONObject r = new JSONObject();
-//        r.put("poundNo","");
-        r.put("subtaskId","13111111111");
-        r.put("validate","11111111");
-        r.put("beginDate","2024-04-03 11:11:11");
-        r.put("endDate","2024-04-03 11:11:11");
-        r.put("poundNo","");
-        r.put("unit",3);
-        r.put("batchNo",3);
-        r.put("productName",3);
-        r.put("netWeight",3);
-//        r.put("loadingStartDate","2024-04-03 11:11:11");
-//        r.put("loadingEndDate","2024-04-03 11:11:11");
-        r.put("remark",3);
-        r.put("operationStatus",3);
-        r.put("firstWeighingTime","2024-04-03 11:11:11");
-        r.put("secondWeighingTime","2024-04-03 11:11:11");
-        String data = JSON.toJSONString(r);
-        //对参数进行加密
-        String encryptedData = CodecUtil.aesEncrypt(data);
-        //生成签名
-        String sign = CodecUtil.sha1Encrypt(encryptedData + timestamp);
-        //封装请求参数
-        r = new JSONObject();
-        r.put("encryptedData",encryptedData);
-        r.put("timestamp",timestamp);
-        r.put("sign",sign);
-        //加密后的请求
-        System.out.println("加密后的请求:" + JSON.toJSONString(r));
-        //请求url
-//        String url = "http://123.183.159.70:5066/sso-server/user/register";
-        //返回结果
-//        String result2 = HttpRequestor.doPost(url, JSON.toJSONString(r));
-
-//        System.out.println(result2);
-
-    }
-}

+ 0 - 118
src/main/java/kd/imc/rim/utils/FileOutputStreamExample.java

@@ -1,118 +0,0 @@
-package kd.imc.rim.utils;
-
-import kd.bos.url.UrlService;
-
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.Base64;
-
-import static kd.bos.algox.flink.enhance.krpc.impl.DispatcherImpl.log;
-
-public class FileOutputStreamExample {
-    public static void main(String[] args) {
-        String filePath = "C:/Users/TR/Desktop/测试1.pdf";
-        String imgStrToBase64 = getImgStrToBase64(filePath);
-
-    }
-    /**
-     * 将网络链接图片或者本地图片文件转换成Base64编码字符串
-     *
-     * @param imgStr 网络图片Url/本地图片目录路径
-     * @return
-     */
-    public static String getImgStrToBase64(String imgStr) {
-        InputStream inputStream = null;
-        ByteArrayOutputStream outputStream = null;
-        byte[] buffer = null;
-        try {
-            //判断网络链接图片文件/本地目录图片文件
-            if (imgStr.startsWith("http://") || imgStr.startsWith("https://")) {
-                // 创建URL
-                URL url = new URL(imgStr);
-                // 创建链接
-                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-                conn.setRequestMethod("GET");
-                conn.setConnectTimeout(5000);
-                inputStream = conn.getInputStream();
-                outputStream = new ByteArrayOutputStream();
-                // 将内容读取内存中
-                buffer = new byte[1024];
-                int len = -1;
-                while ((len = inputStream.read(buffer)) != -1) {
-                    outputStream.write(buffer, 0, len);
-                }
-                buffer = outputStream.toByteArray();
-            } else {
-                inputStream = new FileInputStream(imgStr);
-                int count = 0;
-                while (count == 0) {
-                    count = inputStream.available();
-                }
-                buffer = new byte[count];
-                inputStream.read(buffer);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            if (inputStream != null) {
-                try {
-                    // 关闭inputStream流
-                    inputStream.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-            if (outputStream != null) {
-                try {
-                    // 关闭outputStream流
-                    outputStream.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        // 对字节数组Base64编码
-        return Base64.getEncoder().encodeToString(buffer);
-    }
-
-    public static File getNetUrlHttp(String netUrl) {
-       // UrlService.getAttachmentFullUrl(netUrl);
-        //对本地文件命名
-        File file = null;
-        URL urlfile;
-        InputStream inStream = null;
-        OutputStream os = null;
-        try {
-            file = File.createTempFile("net_url", netUrl);
-            //下载
-            urlfile = new URL(netUrl);
-            inStream = urlfile.openStream();
-            os = new FileOutputStream(file);
-
-            int bytesRead = 0;
-            byte[] buffer = new byte[8192];
-            while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {
-                os.write(buffer, 0, bytesRead);
-            }
-        } catch (Exception e) {
-            log.error("远程图片获取错误:"+netUrl);
-            e.printStackTrace();
-        } finally {
-            try {
-                if (null != os) {
-                    os.close();
-                }
-                if (null != inStream) {
-                    inStream.close();
-                }
-
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
-        return file;
-    }
-
-}

+ 2 - 4
src/main/java/sys/sc/formplugin/CreatDatPlugin.java

@@ -54,10 +54,8 @@ public class CreatDatPlugin extends AbstractListPlugin {
             //文件名
             String filename=tablenumber+".dat";
             //服务器路径
-            String nckd_url=jkdataDy.getString("nckd_url");
-            if (nckd_url.equals("/var/appstatic/")) {
-                nckd_url="/home/kingdee/cosmic/nginx-appstatic/store/appstatic/";
-            }
+//            String nckd_url=jkdataDy.getString("nckd_url");
+            String nckd_url=dynamicObject.getString("nckd_filepath");
 //            //生成文件的路径
 ////            String filePath=nckd_url+filename;
 ////            File dir=new File(filePath);

+ 8 - 18
src/main/java/sys/sc/formplugin/TestPlugin.java

@@ -123,10 +123,6 @@ public class TestPlugin  extends AbstractListPlugin {
                             String fieldName = selector.get(i);
                             String newValue = fields[i];
                             String existingValue = data.getString(fieldName);
-                            //如果等于行政编码,则去掉第一个字符1
-                            if (i==7||i==9||i==11) {
-                                existingValue=existingValue.substring(1);
-                            }
                             //判断数据是否与之前的数据相同,不相同则更新
                             if (!Objects.equals(existingValue, newValue)) {
                                 if (!newValue.isEmpty()) {
@@ -143,16 +139,6 @@ public class TestPlugin  extends AbstractListPlugin {
                     } else {
                         //不存在这条数据则新增一条到data中
                         data = new DynamicObject(dynamicObjectType);
-                        //行政编码不为空则在前面加1
-                        if(!fields[7].isEmpty()) {
-                            fields[7]="1"+fields[7];
-                        }
-                        if (!fields[9].isEmpty()) {
-                            fields[9]="1"+fields[9];
-                        }
-                        if (!fields[11].isEmpty()) {
-                            fields[11]="1"+fields[11];
-                        }
                         for (int i = 0; i < selector.size(); i++) {
                             if (!fields[i].isEmpty()) {
                                 data.set(selector.get(i), fields[i]);
@@ -234,7 +220,7 @@ public class TestPlugin  extends AbstractListPlugin {
     @Override
     public void afterDoOperation(AfterDoOperationEventArgs e) {
         super.afterDoOperation(e);
-        String filePath = "D:/test.dat";
+        String filePath = "C:/Users/test.dat";
         //生成data文件
         if ("scdatwj".equals(e.getOperateKey())) {//生成data文件
             try {
@@ -778,14 +764,12 @@ public class TestPlugin  extends AbstractListPlugin {
                         .load(dynamicObjectType.getName()
                                 , String.join(",", selector)+",enable,nckd_datasource",
                                 new QFilter[]{new QFilter("nckd_datasource", QCP.equals, "1")});
-                for (int i=0;i< autoData.length;i++)
-                {
+                for (int i=0;i< autoData.length;i++) {
                     //如果导入的数据在系统中没有则禁用
                     if (!processeddubilidSet.contains(autoData[i].getString("number"))) {
                         //设置禁用
                         autoData[i].set("enable","0");
                     }
-
                 }
                 SaveServiceHelper.save(autoData);
                 //查找更新数据
@@ -819,6 +803,12 @@ public class TestPlugin  extends AbstractListPlugin {
         {
             generateDataFile(filePath);
         }
+        //
+        if("testaaa".equals(e.getOperateKey()))
+        {
+
+
+        }
 
     }
 

+ 1 - 1
src/main/java/sys/sc/opplugin/utils/InterFaceImgUtils.java

@@ -22,7 +22,7 @@ public class InterFaceImgUtils {
                 .loadSingle(nckd_jkpzxx,new QFilter[]{new QFilter("number","=",URL)});
     }
     //端口号
-    public int getProt() {
+    public int getPort() {
         return jkpzxx.getInt("nckd_port");
     }
     //服务器地址

+ 3 - 3
src/main/java/sys/sc/task/CreatDatDailyTask.java

@@ -62,6 +62,8 @@ public class CreatDatDailyTask extends AbstractTask {
                         fileList.add(itemmen.getString("nckd_entrycode"));
                     }
                 }
+                //文件生成路径
+                String nckd_url=item.getString("nckd_filepath");
                 //获取当前选择的表名
                 String tablenumber=item.getString("number");
                 //业务编码
@@ -69,8 +71,6 @@ public class CreatDatDailyTask extends AbstractTask {
                 //接口配置信息获取
                 //读取接口配置信息获取
                 InterFaceImgUtils interFaceImgUtils=new InterFaceImgUtils("creatdat");
-                //服务器路径
-                String nckd_url=interFaceImgUtils.getServerUrl();
                 //分割符号
                 String spiltsign=interFaceImgUtils.getServerSplit();
                 //结束符号
@@ -84,7 +84,7 @@ public class CreatDatDailyTask extends AbstractTask {
                 String password=interFaceImgUtils.getServerPassword();
                 //服务器路径
                 //服务器端口号
-                int port= interFaceImgUtils.getProt();
+                int port= interFaceImgUtils.getPort();
                 try {
                     //上传文件到服务器中
                     SftpClient sftpClient=new SftpClient(host,username,password,port);

+ 1 - 1
src/main/java/sys/sc/task/UpdateBankDailyTask.java

@@ -60,7 +60,7 @@ public class UpdateBankDailyTask extends AbstractTask {
             String splitsign=interFaceImgUtils.getServerSplit();
             //结尾符
             String endsign=interFaceImgUtils.getServerEndsign();
-            int port= interFaceImgUtils.getProt();
+            int port= interFaceImgUtils.getPort();
             //获取服务器连接
             SftpClient sftpClient=new SftpClient(host,username,password,port);
             sftpClient.connect();

+ 37 - 41
src/main/java/sys/sc/task/UpdateDataDailyTask.java

@@ -11,11 +11,13 @@ import kd.bos.entity.operate.result.OperationResult;
 import kd.bos.exception.KDException;
 import kd.bos.form.IFormView;
 import kd.bos.orm.ORM;
+import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.schedule.api.MessageHandler;
 import kd.bos.schedule.executor.AbstractTask;
 import kd.bos.sec.user.utils.UserOperationUtils;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.DeleteServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 import sys.sc.formplugin.ABillServiceHelper;
 import sys.sc.opplugin.utils.InterFaceImgUtils;
@@ -43,7 +45,7 @@ public class UpdateDataDailyTask extends AbstractTask {
     public String splitsign=interFaceImgUtils.getServerSplit();
     //结尾符
     public String endsign=interFaceImgUtils.getServerEndsign();
-    public int port= interFaceImgUtils.getProt();
+    public int port= interFaceImgUtils.getPort();
 
 
 
@@ -117,17 +119,12 @@ public class UpdateDataDailyTask extends AbstractTask {
                             String fieldName = selector.get(i);
                             String newValue = fields[i];
                             String existingValue = data.getString(fieldName);
-                            //如果等于行政编码,则去掉第一个字符1
-                            if (i==7||i==9||i==11) {
-                                existingValue=existingValue.substring(1);
-                            }
                             //判断数据是否与之前的数据相同,不相同则更新
                             if (!Objects.equals(existingValue, newValue)) {
                                 if (!newValue.isEmpty()) {
                                     data.set(fieldName, newValue);
                                     isUpdated = true;
                                 }
-
                             }
                         }
                         //更新了数据则设置数据更新的时间
@@ -138,16 +135,6 @@ public class UpdateDataDailyTask extends AbstractTask {
                     } else {
                         //不存在这条数据则新增一条到data中
                         data = new DynamicObject(dynamicObjectType);
-                        //行政编码不为空则在前面加1
-                        if(!fields[7].isEmpty()) {
-                            fields[7]="1"+fields[7];
-                        }
-                        if (!fields[9].isEmpty()) {
-                            fields[9]="1"+fields[9];
-                        }
-                        if (!fields[11].isEmpty()) {
-                            fields[11]="1"+fields[11];
-                        }
                         for (int i = 0; i < selector.size(); i++) {
                             data.set(selector.get(i), fields[i]);
                         }
@@ -209,9 +196,6 @@ public class UpdateDataDailyTask extends AbstractTask {
             // 判断并创建或更新所在单位
             //所在单位编码
             String szdwbm = record.getString("nckd_szdwcode");
-            if (!szdwbm.isEmpty()) {
-                szdwbm=szdwbm.substring(1);
-            }
             //所在单位名称
             String szdwmc = record.getString("nckd_szdwname");
             DynamicObject org = BusinessDataServiceHelper.loadSingle(
@@ -221,7 +205,7 @@ public class UpdateDataDailyTask extends AbstractTask {
             if (org == null) {
                 IFormView orgview = ABillServiceHelper.createAddView("bos_adminorg");
                 //组织编码
-                orgview.getModel().setValue("number", "1"+szdwbm);
+                orgview.getModel().setValue("number", szdwbm);
                 //组织名称
                 orgview.getModel().setValue("name", szdwmc);
                 //上级组织
@@ -235,6 +219,10 @@ public class UpdateDataDailyTask extends AbstractTask {
                 OperationResult operationResult = ABillServiceHelper.saveOperate(orgview);
                 //保存不成功
                 if (!operationResult.isSuccess()) {
+                    //清除编码为org开头的数据
+                    QFilter filter=new QFilter("number", QCP.equals,"Org%");
+                    DeleteServiceHelper.delete("bos_adminorg",new QFilter[]{filter});
+                    ABillServiceHelper.saveOperate(orgview);
                 }
                 org = orgview.getModel().getDataEntity();
                 //如果存在单位则检查单位名是否一致,不一致则更新
@@ -251,15 +239,12 @@ public class UpdateDataDailyTask extends AbstractTask {
             }
             // 判断一级机构编码 在行政组织中是否存在,不存在则新增
             String yjjgbm = record.getString("nckd_yjbmcode");
-            if (!yjjgbm.isEmpty()) {
-                yjjgbm=yjjgbm.substring(1);
-            }
             String yjjgmc = record.getString("nckd_yjbmname");
             //一级机构
             DynamicObject yjjg = BusinessDataServiceHelper.loadSingle("bos_adminorg", new QFilter[]{new QFilter("number", "=", yjjgbm)});
             if (yjjg == null) {
                 IFormView yjjgView=ABillServiceHelper.createAddView("bos_adminorg");
-                yjjgView.getModel().setValue("number","1"+yjjgbm);
+                yjjgView.getModel().setValue("number",yjjgbm);
                 yjjgView.getModel().setValue("name", yjjgmc);
                 yjjgView.getModel().setValue("parent", org); // 父级组织为 org
                 yjjgView.getModel().setValue("orgpattern", xingtaiinfo);
@@ -267,7 +252,10 @@ public class UpdateDataDailyTask extends AbstractTask {
                 yjjgView.getModel().setValue("enable", "1");
                 OperationResult yjjgOperationResult = ABillServiceHelper.saveOperate(yjjgView);
                 if (!yjjgOperationResult.isSuccess()) {
-
+                    //清除编码为org开头的数据
+                    QFilter filter=new QFilter("number", QCP.equals,"Org%");
+                    DeleteServiceHelper.delete("bos_adminorg",new QFilter[]{filter});
+                    ABillServiceHelper.saveOperate(yjjgView);
                 }
                 yjjg = yjjgView.getModel().getDataEntity();
             } else if (!yjjg.getString("name").equals(yjjgmc)) {
@@ -280,15 +268,12 @@ public class UpdateDataDailyTask extends AbstractTask {
             }
             // 判断所在部门编码 在行政组织中是否存在,不存在则新增
             String szbmbm = record.getString("nckd_orgidcode");
-            if (!szbmbm.isEmpty()) {
-                szbmbm=szdwbm.substring(1);
-            }
             String szbmmc = record.getString("nckd_orgidname");
             //所在部门
             DynamicObject szbm = BusinessDataServiceHelper.loadSingle("bos_adminorg", new QFilter[]{new QFilter("number", "=", szbmbm)});
             if (szbm == null) {
                 IFormView szbmView=ABillServiceHelper.createAddView("bos_adminorg");
-                szbmView.getModel().setValue("number", "1"+szbmbm);
+                szbmView.getModel().setValue("number", szbmbm);
                 szbmView.getModel().setValue("name", szbmmc);
                 szbmView.getModel().setValue("parent", yjjg); // 设置父级为 yjjg
                 szbmView.getModel().setValue("orgpattern", xingtaiinfo);
@@ -297,9 +282,10 @@ public class UpdateDataDailyTask extends AbstractTask {
                 // 保存操作
                 OperationResult szbmOperationResult = ABillServiceHelper.saveOperate(szbmView);
                 if (!szbmOperationResult.isSuccess()) {
-                    // 如果保存失败,可以在这里处理错误
-                    log.info("保存部门失败!");
-                    return;
+                    //清除编码为org开头的数据
+                    QFilter filter=new QFilter("number", QCP.equals,"Org%");
+                    DeleteServiceHelper.delete("bos_adminorg",new QFilter[]{filter});
+                    ABillServiceHelper.saveOperate(szbmView);
                 }
                 if (szbmView.getModel() != null) {
                     szbm = szbmView.getModel().getDataEntity();
@@ -426,6 +412,11 @@ public class UpdateDataDailyTask extends AbstractTask {
                 userinfo.set("number", gonghao);
                 // 设置其他字段
                 userinfo.set("gender", personData.get("nckd_gender"));
+                if (("").equals(personData.get("nckd_gender"))) {
+                    userinfo.set("gender","0");
+                }else {
+                    userinfo.set("gender", personData.get("nckd_gender"));
+                }
                 //人员手机号
                 userinfo.set("phone", personData.get("nckd_sjh"));
                 // 设置其他固定字段
@@ -449,11 +440,8 @@ public class UpdateDataDailyTask extends AbstractTask {
                 String simplePinyin = UserOperationUtils.getFirstSpellByName(name);
                 userinfo.set("fullpinyin", fullPinyin);
                 userinfo.set("simplepinyin", simplePinyin);
-                // 设置用户名
-                String username = UserOperationUtils.getUserNameByFormatedFullPinyin(
-                        (long) userinfo.getPkValue(), fullPinyin, null
-                );
-                userinfo.set("username", username);
+                // 设置用户名为工号
+                userinfo.set("username", gonghao);
                 // 创建部门分录
                 DynamicObjectCollection bmflList = userinfo.getDynamicObjectCollection("entryentity");
                 DynamicObject bumeninfo = bmflList.addNew();
@@ -479,10 +467,18 @@ public class UpdateDataDailyTask extends AbstractTask {
                     }
                 }
                 String postName = personData.getString("nckd_posidname");;
-                bumeninfo.set("position", postName);
+                if (("").equals(postName)) {
+                    bumeninfo.set("position", "无");
+                }else {
+                    bumeninfo.set("position", postName);
+                }
                 //所在岗位名称
-                String positionnumber = personData.getString("nckd_posidname");;
-                bumeninfo.set("post", positionnumber);
+                String positionnumber = personData.getString("nckd_posidname");
+                if (("").equals(positionnumber)) {
+                    bumeninfo.set("post", "无");
+                }else {
+                    bumeninfo.set("post", positionnumber);
+                }
                 // 保存新用户信息
                 SaveServiceHelper.save(new DynamicObject[]{userinfo});
                 msg+="工号为 " + gonghao + " 的用户已创建!";
@@ -516,7 +512,7 @@ public class UpdateDataDailyTask extends AbstractTask {
         String datestr=sf.format(newDate);
         //文件路径拼接
         //真实路径
-        String realPath = nckd_url+datestr+"/"+nckd_filename;
+        String realPath = nckd_url+datestr+File.separator+nckd_filename;
         return realPath;
     }
     @Override

+ 1 - 1
src/main/java/sys/sc/task/UpdateImpairmentDailyTask.java

@@ -39,7 +39,7 @@ public class UpdateImpairmentDailyTask extends AbstractTask {
     public String splitsign=interFaceImgUtils.getServerSplit();
     //结尾符
     public String endsign=interFaceImgUtils.getServerEndsign();
-    public int port= interFaceImgUtils.getProt();
+    public int port= interFaceImgUtils.getPort();
 
 
 

+ 365 - 0
src/main/java/tmc/bei/task/synTransdetailTask.java

@@ -0,0 +1,365 @@
+package tmc.bei.task;
+
+import fi.cas.opplugin.TypeUtils;
+import kd.bos.context.RequestContext;
+import kd.bos.dataentity.OperateOption;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.operate.result.OperationResult;
+import kd.bos.exception.KDException;
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
+import kd.bos.login.utils.DemoSMSSender;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.schedule.executor.AbstractTask;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.OperationServiceHelper;
+import org.apache.commons.lang3.StringUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.json.XML;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.io.*;
+import java.math.BigDecimal;
+import java.net.Socket;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+
+/**
+ * 自动获取资金流水调度任务插件
+ * 2024-09-27 wangj
+ * 主要功能:调用前置机接口获取第三方系统资金流水写入交易明细
+ */
+public class synTransdetailTask extends AbstractTask {
+    protected static final Log log = LogFactory.getLog(DemoSMSSender.class);
+    @Override
+    public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
+        //1.获取计划参数,计算取数日期
+        String type = (String) map.get("type");
+        String queryDate = getDateByType(type);
+        //2.获取接口链接等信息
+        DynamicObject jkpzxx = BusinessDataServiceHelper.loadSingle("nckd_jkpzxx",new QFilter[]{new QFilter("number","=","paytozfqz")});
+        String servername =  jkpzxx.getString("nckd_servername");
+        String port =  jkpzxx.getString("nckd_port");
+        //3.获取取数银行账号,循环查询接口(第三方不支持批量查询)
+        QFilter qFilter_enable = new QFilter("enable", QCP.equals,"1");
+        QFilter qFilter_status = new QFilter("status", QCP.equals, "C");
+        QFilter qFilter_acctstatus = new QFilter("acctstatus", QCP.equals, "normal");
+        DynamicObject[] accountBanks = BusinessDataServiceHelper.load("am_accountbank",
+                "id,bankaccountnumber,openorg,bank",new QFilter[]{qFilter_enable,qFilter_status,qFilter_acctstatus});
+        for(DynamicObject accountBank : accountBanks){
+            String bankaccountnumber = accountBank.getString("bankaccountnumber");
+            //4.拼接xml对象
+            String bodyxml = createMessageRequest(queryDate,bankaccountnumber);
+            log.info("银行账号:"+bankaccountnumber+"请求xml:"+bodyxml);
+            log.info("银行账号:"+bankaccountnumber+"开始调用接口");
+            //5.调用接口
+            JSONObject cbsReturnJson = socketService(servername,port,bodyxml);
+            log.info("银行账号:"+bankaccountnumber+"调用接口返回结果:"+cbsReturnJson.toString());
+            if(cbsReturnJson!=null && cbsReturnJson.length()>0) {
+                JSONObject reMessage = cbsReturnJson.getJSONObject("Message");
+                JSONObject reHeadInfo = reMessage.getJSONObject("HeadInfo");
+                if (reHeadInfo.getString("errorcode").contains("000000")) {//响应成功
+//                    if ("000".equals(reBodyInfo.getString("Fs_retCode"))) {
+                        JSONObject reBodyInfo = reMessage.getJSONObject("BodyInfo");
+                        log.info("银行账号:"+bankaccountnumber+"发送前置机响应成功,前置机接口发送成功");
+                        //6.获取成功写入交易明细表***
+                    try {
+                        writeTransdetail(reBodyInfo,bankaccountnumber);
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
+                    log.info("银行账号:"+bankaccountnumber+"写入交易明细成功");
+//                    } else {
+//                        log.info("银行账号:"+bankaccountnumber+"发送前置机响应成功,前置机接口发送失败");
+//                    }
+                } else {
+                    log.info("银行账号:"+bankaccountnumber+"发送前置机响应失败:"+reHeadInfo.getString("errormsg"));
+                }
+            }
+        }
+    }
+
+    private void writeTransdetail(JSONObject reBodyInfo, String bankaccountnumber) throws ParseException {
+        //银行账号匹配获取银行账户
+        QFilter qFilter_bankaccountnumber = new QFilter("bankaccountnumber",QCP.equals,bankaccountnumber);
+        DynamicObject[] bd_accountbanks = BusinessDataServiceHelper.load(
+                "bd_accountbanks","id,number,name,openorg.number,openorg.name,bank.number,bank.name",
+                    new QFilter[]{qFilter_bankaccountnumber});
+        DynamicObject bd_accountbank = null;
+        if(bd_accountbanks!=null && bd_accountbanks.length>0){
+            bd_accountbank = bd_accountbanks[0];
+        }
+        //拼装接口返回的交易流水号集合
+        List<String> detailids = new ArrayList<String>();
+        JSONArray actrsview_rich = reBodyInfo.getJSONArray("actrsview_rich");
+        for(int i=0;i<actrsview_rich.length();i++){
+            JSONObject actrsview_rich_obj = actrsview_rich.getJSONObject(i);
+            String TransNbr = String.valueOf(actrsview_rich_obj.getLong("TransNbr"));
+            detailids.add(TransNbr);
+        }
+        log.info("预计写入交易明细:"+actrsview_rich.length()+"条");
+        //查询一次交易流水表缓存已存在的交易流水记录
+        QFilter qFilter_detailid = new QFilter("detailid",QCP.in,detailids);
+        DynamicObject[] bills = BusinessDataServiceHelper.load("bei_transdetail","id,detailid",new QFilter[]{qFilter_detailid});
+        Map tempdetailid = new HashMap();
+        int isHaveBillSize = 0;
+        for(DynamicObject bill : bills){
+            String detailid = bill.getString("detailid");
+            tempdetailid.put(detailid,detailid);
+            isHaveBillSize ++;
+        }
+        log.info("已存在交易明细:"+isHaveBillSize+"条");
+        //缓存所有币种
+        Map currencyMap = getCurrencyMap();
+        //过滤已存在的记录,写入不存在的记录
+        int size = actrsview_rich.length() - isHaveBillSize;
+        log.info("最终写入交易明细:"+size+"条");
+        DynamicObject[] datalist = new DynamicObject[size];
+        for(int i=0;i<actrsview_rich.length();i++){
+            JSONObject actrsview_rich_obj = actrsview_rich.getJSONObject(i);
+            String transSet = String.valueOf(actrsview_rich_obj.getLong("TransSet"));
+            if(null == tempdetailid || null == tempdetailid.get(transSet)){
+                DynamicObject bill = createBill(actrsview_rich_obj,bd_accountbank,currencyMap);
+                datalist[i] = bill;
+            }
+        }
+        if(datalist.length>0){
+            log.info("拼装完成,开始保存");
+            OperationResult result = OperationServiceHelper.executeOperate("save","zb_ps_pricemgconfig",datalist, OperateOption.create());
+            log.info("保存结束:"+result.getMessage());
+        }
+        log.info("写入交易明细完成");
+    }
+
+    private DynamicObject createBill(JSONObject actrsview_rich_obj, DynamicObject bd_accountbank, Map currencyMap) throws ParseException {
+        DynamicObject bill = BusinessDataServiceHelper.newDynamicObject("bei_betransdetail_imp");
+        //交易明细编号
+//                bill.set("billno",transSet);
+        if(bd_accountbank!=null){
+            //资金组织
+            DynamicObject company = bd_accountbank.getDynamicObject("openorg");
+            bill.set("company",company.getPkValue());
+            //银行账号
+            bill.set("accountbank",bd_accountbank.getPkValue());
+            //开户银行
+            DynamicObject bank = bd_accountbank.getDynamicObject("bank");
+            bill.set("bank",bank.getPkValue());
+        }
+        //单据状态
+        bill.set("billstatus","A");
+        //币种
+        String currency = String.valueOf(actrsview_rich_obj.getInt("CcyNbr"));
+        bill.set("currency",currencyMap.get(currency));
+        //交易日期
+        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
+        String entryDate = String.valueOf(actrsview_rich_obj.getInt("EntryDate"));
+        String bizdate = entryDate.substring(0,4)+"-"+entryDate.substring(4,6)+"-"+entryDate.substring(6,8);
+        bill.set("bizdate",sdf1.format(bizdate));
+        //交易时间
+        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String entryTime = String.valueOf(actrsview_rich_obj.getInt("EntryTime"));
+        String biztime = transTime(bizdate,entryTime);
+        bill.set("biztime",sdf2.parse(biztime));
+        //摘要
+        String description = "";
+        if(StringUtils.isNotBlank(actrsview_rich_obj.getString("BankText"))){
+            //交易银行内部摘要
+            description = actrsview_rich_obj.getString("BankText")+";";
+        }
+        if(StringUtils.isNotBlank(actrsview_rich_obj.getString("CltText"))){
+            //交易银行内部摘要
+            description = description + actrsview_rich_obj.getString("CltText")+";";
+        }
+        if(StringUtils.isNotBlank(actrsview_rich_obj.getString("ElecText"))){
+            //交易银行内部摘要
+            description = description + actrsview_rich_obj.getString("ElecText")+";";
+        }
+        if(StringUtils.isNotBlank(actrsview_rich_obj.getString("StmVar"))){
+            //交易银行内部摘要
+            description = description + actrsview_rich_obj.getString("StmVar")+";";
+        }
+        bill.set("description",description);
+        //收款金额/付款金额
+        BigDecimal transAmt = actrsview_rich_obj.getBigDecimal("TransAmt");
+        String transDir = actrsview_rich_obj.getString("TransDir");
+        if("C".equals(transDir)){
+            bill.set("creditamount",transAmt);//贷-收款
+        }else if("D".equals(transDir)){
+            bill.set("debitamount",transAmt);//借-付款
+        }
+        //余额
+        BigDecimal transbalance = actrsview_rich_obj.getBigDecimal("OnlBal");
+        bill.set("transbalance",transbalance);
+        //对方户名
+        String oppunit = actrsview_rich_obj.getString("YourRichName");
+        bill.set("oppunit",oppunit);
+        //对方账号
+        String oppbanknumber = actrsview_rich_obj.getString("YourRichNbr");
+        bill.set("oppbanknumber",oppbanknumber);
+        //对方开户行
+        String oppbank = actrsview_rich_obj.getString("CltText");
+        bill.set("oppbank",oppbank);
+        //业务类型
+        bill.set("biztype","1");
+        //明细流水号
+        String detailid = String.valueOf(actrsview_rich_obj.getLong("TransNbr"));
+        bill.set("detailid",detailid);
+        //业务参考号
+        String bizrefno = String.valueOf(actrsview_rich_obj.getLong("TraceNbr"));
+        bill.set("bizrefno",bizrefno);
+        //数据来源
+        bill.set("datasource","hxsys");
+        //入账状态
+        bill.set("receredtype","0");
+//                //记账日期
+//                bill.set("transdate",new Date());
+        return bill;
+    }
+
+    private Map getCurrencyMap() {
+        Map currMap = new HashMap();
+        QFilter qFilter_enable = new QFilter("enable",QCP.equals,"1");
+        DynamicObject[] currCol = BusinessDataServiceHelper.load(
+                "bd_currency","id,number,nckd_hxxtno",new QFilter[]{qFilter_enable});
+        for(DynamicObject currObj : currCol){
+            if(StringUtils.isNotBlank(currObj.getString("nckd_hxxtno"))){
+                currMap.put(currObj.getString("nckd_hxxtno"),currObj);
+            }
+        }
+        return currMap;
+    }
+
+    private String transTime(String entryDate, String entryTime) {
+        String time = "";
+        switch (entryTime.length()){
+            case 1:time="00:00:0"+entryTime;break;
+            case 2:time="00:00:"+entryTime;break;
+            case 3:time="00:0"+entryTime.substring(0,1)+":"+entryTime.substring(1);break;
+            case 4:time="00:"+entryTime.substring(0,2)+":"+entryTime.substring(2);break;
+            case 5:time="0"+entryTime.substring(0,1)+":"+entryTime.substring(1,3)+":"+entryTime.substring(3);break;
+            case 6:time=entryTime.substring(0,2)+":"+entryTime.substring(2,4)+":"+entryTime.substring(4);break;
+        }
+
+        return entryDate+" "+time;
+    }
+
+    private String createMessageRequest(String queryDate, String bankaccountnumber) {
+        try {
+            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+            Document doc = dBuilder.newDocument();
+            //创建Message节点
+            Element rootElement = doc.createElement("Message");
+            doc.appendChild(rootElement);
+            //创建HeadInfo节点
+            Element head = doc.createElement("HeadInfo");
+            rootElement.appendChild(head);
+            //拼接HeadInfo报文
+            createElement(doc, head, "transcode", "ACRCTRSQ"); //请求交易代码
+            createElement(doc, head, "channelcode", "JF");//发起渠道
+            Calendar currentdate = Calendar.getInstance();
+            createElement(doc, head, "channeldate", TypeUtils.date2String(currentdate.getTime(),"yyyyMMdd"));//发起渠道日期
+            String channelserno = TypeUtils.date2String(currentdate.getTime(),"yyyyMMdd HHmmss");
+            createElement(doc, head, "channelserno", channelserno);//发起渠道流水
+            createElement(doc, head, "channeltime", currentdate.get(Calendar.HOUR)+""+currentdate.get(Calendar.MINUTE)+""+currentdate.get(Calendar.SECOND));
+            createElement(doc, head, "brno", "");//交易机构,可为空
+            createElement(doc, head, "tellerno", "");//操作柜员,可为空
+            createElement(doc, head, "terminalno", "");//操作终端号,可为空
+            createElement(doc, head, "reserve", "");//保留域,可为空
+            //创建BodyInfo节点
+            Element body = doc.createElement("BodyInfo");
+            rootElement.appendChild(body);
+            //拼接BodyInfo报文
+            createElement(doc, body, "RichNbr", bankaccountnumber); //户口号
+            createElement(doc, body, "QryRichType", "1"); //交易查询标志
+            createElement(doc, body, "TransTypeFlag", "N"); //交易类型选项标志
+            createElement(doc, body, "BgnDate", queryDate); //查询起始日期
+            createElement(doc, body, "EndDate", queryDate); //查询结束日期
+            createElement(doc, body, "QryDir", "D"); //查询排序方式
+            createElement(doc, body, "MinAmt", "0"); //查询金额下限
+            createElement(doc, body, "MaxAmt", "999999999999.99"); //查询金额上限
+            createElement(doc, body, "YourType", "N"); //查询金额上限
+            createElement(doc, body, "RowCnt", "20000");//展示条数
+            createElement(doc, body, "TotalFlag", "0");//汇总标志
+            // 指定编码格式为GBK
+            TransformerFactory transformerFactory = TransformerFactory.newInstance();
+            Transformer transformer = transformerFactory.newTransformer();
+            transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");
+            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+
+            DOMSource source = new DOMSource(doc);
+            StringWriter writer = new StringWriter();
+            StreamResult result = new StreamResult(writer);
+            transformer.transform(source, result);
+            int length = writer.toString().length();
+            String xmlStr = "00000" +String.valueOf(length)+writer.toString();
+            return xmlStr;
+        }catch (Exception e) {
+            log.info("拼接请求报文异常:"+e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    private static void createElement(Document doc, Element parent, String name, String value) {
+        Element element = doc.createElement(name);
+        element.appendChild(doc.createTextNode(value));
+        parent.appendChild(element);
+    }
+
+    private String getDateByType(String type) {
+        String date = "";
+        Calendar now = Calendar.getInstance();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        if("now".equals(type)){
+            date = sdf.format(now.getTime());
+        }else if("before".equals(type)){
+            now.add(Calendar.DAY_OF_MONTH,-1);
+            date = sdf.format(now.getTime());
+        }else{
+            date = type;
+        }
+        return date;
+    }
+
+    public static JSONObject socketService(String serverName,String port,String xmlData){
+        try {
+            Socket client = new Socket(serverName, TypeUtils.nullToInt(port));
+            OutputStream outToServer = client.getOutputStream();
+            PrintWriter out = new PrintWriter(new OutputStreamWriter(outToServer, "GBK"), true);
+            out.println(xmlData);
+
+            InputStream inFromServer = client.getInputStream();
+            BufferedReader in = new BufferedReader(new InputStreamReader(inFromServer, "GBK"));
+            StringBuilder responseBuilder = new StringBuilder();
+            String line;
+            while ((line = in.readLine()) != null) {
+                responseBuilder.append(line);
+            }
+            String responseJson = responseBuilder.toString();
+            if(responseJson.indexOf("<?xml")>0){
+                int index = responseJson.indexOf("<?xml");
+                responseJson = responseJson.substring(index);
+            }
+            JSONObject jsonObject = XML.toJSONObject(responseJson);
+            client.close();
+            return jsonObject;
+        } catch (IOException e) {
+            e.printStackTrace();
+            log.info("短信发送失败:"+e.getMessage());
+        }
+        return null;
+    }
+}