0

我有一个生成文档的 Java 代理。我还给这些文档一个自定义的唯一跟随编号,从 1 开始,每次递增 +1。我有一个获得最后一个数字的视图,我将这个数字加一。因此,每当代理运行时,它都会增加这个数字,这会发生在这个问题底部的一段代码中。有时会同时调用此代理,这会导致获得相同的号码。所以我有例如数字为 1001、4 次而不是 1001、1002、1003、1004 的文档。

我试图查看一个代理是否可以一次运行一个,但这仅适用于计划代理。

我运行以生成唯一编号的代码是:

String ReturnValue = "";

                View nvwVolgnr =  iOrderDB.getView("Volgnummer");
                lotus.domino.Document docVolgnr = nvwVolgnr.getDocumentByKey("Order");
                if ( docVolgnr!=null){
                    String strVolgnr = docVolgnr.getItemValue("Volgnummer").toString();

                     //System.out.println("strVolgnr " + strVolgnr);

                    //Object intVolgnr = docVolgnr.getItemValue("Volgnummer");

                    strVolgnr = strVolgnr.replace("[", "");
                    strVolgnr = strVolgnr.replace("]", "");

                    double intVolgnr = Double.parseDouble(strVolgnr);

                    strVolgnr = strVolgnr.replace(".0", "");

                    //System.out.println("strVolgnr " + strVolgnr);

                    strVolgnr = "000000" + strVolgnr;
                    //System.out.println("strVolgnr " + strVolgnr);

                    strVolgnr = strVolgnr.substring(strVolgnr.length() - 6);
                    ReturnValue = strVolgnr;

                    intVolgnr = intVolgnr + 1;
                    Double dblVolgnr = new Double(intVolgnr);

                    //System.out.println("strVolgnr " + strVolgnr);

                    //Object objVolgnr =  intVolgnr;

                    docVolgnr.replaceItemValue("Volgnummer", dblVolgnr);
                     if (docVolgnr.save())
                        {

                        }

即使该代理同时运行,是否有任何方法可以获得唯一编号(带有增量)

4

1 回答 1

0

最简单的方法可能是设置一个单一的事实点:这可能是一个额外的本地代理、文件、数据库或 API。您可以从其中任何一个中获得下一个数字。

这意味着您设置其中一个来为您的代理提供下一个号码。由于这发生在单个位置,因此您将不再有任何重复项。

如果不需要增加数字,但您只需要为每个数字设置一个唯一的数字,您可以查看 UUID。但我相信事实并非如此。

于 2019-05-14T12:27:17.667 回答