Package beans.user.client.updater

Examples of beans.user.client.updater.ClientChunk


                    System.out.println("Work time: " + mc + " ms");
                }
                if (dbf.deleted()) {
                    continue;
                }
                ClientChunk c = new ClientChunk();
                c.lnumber = Integer.parseInt(fields.get(Col.LNUMBER).get().trim());
                c.numambk = fields.get(Col.NUM_AMB_K).get().trim();
                //Уникальность номеров карт
                if (!c.numambk.isEmpty() && setNumAmbk.contains(c.numambk)) {
                    char ch = 'А';
                    while (setNumAmbk.contains(c.numambk + ch)) {
                        ch++;
                    }
                    c.numambk = c.numambk + ch;
                }
                /*if (!dopIns.containsKey(c.lnumber)) { всосал только некоторых для тестирования
                    continue;
                }*/
                /*if (c.lnumber != 50421) {
                    continue;
                }*/

                c.errDat = fields.get(Col.ERR_DAT).get().trim();
                c.famID = dirSurname.getItemFromTitle(Converter.firstUpper(fields.get(Col.FAMILY).get().trim(), true)).getID();
                c.nameID = dirName.getItemFromTitle(Converter.firstUpper(fields.get(Col.NAME).get().trim(), true)).getID();
                c.patronID = dirPathron.getItemFromTitle(Converter.firstUpper(fields.get(Col.FATHER).get().trim(), true)).getID();
                String sex = fields.get(Col.SEX).get().trim();
                if (sex.toUpperCase().equals("М")) {
                    c.sexID = Sex.CLIENT_SEX_MALE;
                } else if (sex.toUpperCase().equals("Ж")) {
                    c.sexID = Sex.CLIENT_SEX_FEMALE;
                } else {
                    System.out.println("У пациента неопределен пол. " + dbf.getName() + " lnum=(" + c.lnumber + ")");
                    out.println("Предупреждение : У пациента неопределен пол. " + dbf.getName() + " lnum=(" + c.lnumber + ")");
                    c.sexID = Sex.CLIENT_SEX_MALE;
                    String fam = fields.get(Col.FAMILY).get().trim();
                    if (fam.endsWith("а")) {
                        c.sexID = Sex.CLIENT_SEX_FEMALE;
                    } else {
                        String nam = fields.get(Col.FAMILY).get().trim();
                        if (nam.endsWith("а") || nam.endsWith("я")) {
                            c.sexID = Sex.CLIENT_SEX_FEMALE;
                        }
                    }
                    out.println("Пол выставлен : " + (c.sexID == Sex.CLIENT_SEX_MALE ? "Муж." : "Жен."));
                }
                c.dateBorn = null;
                try {
                    Calendar bornDate = ((DateField)fields.get(Col.BITHDATE)).getCalendar();
                    bornDate.set(Calendar.HOUR_OF_DAY, 0);
                    bornDate.set(Calendar.MINUTE, 0);
                    bornDate.set(Calendar.SECOND, 0);
                    bornDate.set(Calendar.MILLISECOND, 0);
                    c.dateBorn = bornDate.getTime();
                } catch (NumberFormatException ex) {
                    System.out.println("Предупреждение : Дата рождения пациента некорректна " + dbf.getName() + " lnum=(" + c.lnumber + ")");
                    out.println("Предупреждение : Дата рождения пациента некорректна " + dbf.getName() + " lnum=(" + c.lnumber + ")");
                }
                String insurAreaExtKey = fields.get(Col.INSUR_AREA).get().trim();
                DirectorySimpleItem area = dirRegionIdCode.getItemFromExtKey(insurAreaExtKey);
                c.insurAreaID = area == null ? 0 : area.getID();

                /* Если страховая компания местная то приоритетным полем
                 является INSUR_ORG, если не местная то приоритетной
                 является запись в KADR_DOP */
                DirectoryInsurerItem insPrior;
                DirectoryInsurerItem ins;
                if (insurAreaExtKey.equals("61")) {
                    insPrior = dirInsurer.getItemFromExtKey(fields.get(Col.INSUR_ORG).get().trim());
                    ins = dopIns.get(c.lnumber);
                } else {
                    ins = dirInsurer.getItemFromExtKey(fields.get(Col.INSUR_ORG).get().trim());
                    insPrior = dopIns.get(c.lnumber);
                }
                if (insPrior != null) {
                    c.insurOrgID = insPrior.getID();
                } else if (ins != null) {
                    c.insurOrgID = ins.getID();
                } else {
                    c.insurOrgID = 0;
                }
                String klRegion = fields.get(Col.KLREGION).get().trim();
                String klItem = fields.get(Col.KLITEM).get().trim();
                String klStreet = fields.get(Col.KLSTREET).get().trim();
                c.house = fields.get(Col.HOUSE).get().trim();
                c.letter = fields.get(Col.LETTER).get().trim().toUpperCase();
                c.room = fields.get(Col.ROOM).get().trim();
                DirectorySimpleItem status = dirSocialStatus.getItemFromExtKey(fields.get(Col.SOCSTATUS).get().trim());
                if (status != null && status.getID() == SocialStatus.STATUS_OFNA) {
                    status = dirSocialStatus.getItemFromID(SocialStatus.STATUS_NOT_WORKING);
                }
                if (status != null && status.getID() == SocialStatus.STATUS_PRESCHOOL_UNDISCIPLINED) {
                    status = dirSocialStatus.getItemFromID(SocialStatus.STATUS_PRESCHOOL_DISCIPLINED);
                }
                c.socStatusID = status == null ? 0 : status.getID();
                if (c.socStatusID == null) {
                    c.socStatusID = 0;
                }
                DirectoryDistrictItem district = dirDistrict.getItemFromTitle(fields.get(Col.UCH).get().trim());
                c.districtID = district == null ? 0 : district.getID();


                String work = fields.get(Col.IDWORK).get().trim();
                if (work.isEmpty() || work.equals("0")) {
                    c.job = "";
                } else {
                    c.job = jobMap.get(work);
                    if (c.job == null) {
                        c.job = "";
                    }
                }
                String prof = fields.get(Col.PROF).get().trim();
                if (prof.isEmpty()) {
                    c.appointmentID = 0;
                } else {
                    c.appointmentID = dirApp.getItemFromTitle(Converter.firstUpper(prof, false)).getID();
                }


                c.inn = fields.get(Col.INN).get().trim();
                c.polSeria = fields.get(Col.POLSERIA).get().trim();
                c.polNumber = fields.get(Col.POLNUMBER).get().trim();
                DirectorySimpleItem doctype = dirDocumentType.getItemFromExtKey(fields.get(Col.DOCUMENT).get().trim());
                c.docTypeID = doctype == null ? 0 : doctype.getID();
                if (c.docTypeID == null) {
                    c.docTypeID = ClientDocumentType.TYPE_PASSPORT_RF;
                }
                c.docSeria = fields.get(Col.DOCSERIA).get().trim();
                c.docNumber = fields.get(Col.DOCNUMBER).get().trim();
                c.snils = fields.get(Col.SNILS).get().trim();
                String namstreet = fields.get(Col.NAM_STREET).get().trim();

                //Для полисов с ошибками выставляем формальные параметры
                if (c.insurOrgID == 0) {
                    c.insurOrgID = dirInsurer.getItemFromExtKey("344").getID();
                    out.println("Предупреждение : Пациенту в полис формально выставлена страховая компания" + dbf.getName() + " lnum=(" + c.lnumber + ")");
                }
                if (c.insurAreaID ==0) {
                    c.insurAreaID = dirRegionIdCode.getItemFromExtKey("61").getID();
                    out.println("Предупреждение : Пациенту в полис формально выставлен регион" + dbf.getName() + " lnum=(" + c.lnumber + ")");
                }
                if (c.polNumber.isEmpty()) {
                    c.polNumber = Polis.FICTIVE_POLIS_NUMBER;
                    out.println("Предупреждение : Пациенту выставлен формальный номер полиса" + dbf.getName() + " lnum=(" + c.lnumber + ")");
                }

                /* Проверка кодов региона, населенного пункта и улицы
                 * Если указан KLITEM то руководствуемся им
                 * Далее проверяем соответствие улицы (либо KLREGION либо KLITEM)
                 * Если не соответствует ищем соответствие у детей по названию (название по KLSTREET, если нету то по NAM_STREET)
                 * Если нет соответствия то печатаемсообщение и выставляем адрес незавершенным (KLREGION либо KLITEM)
                 */
                String klRegionShort = null;
                try {
                    klRegionShort = klRegion.substring(0, 8);
                } catch (StringIndexOutOfBoundsException ex) {
                    //регион не указан
                }

                //item будет не нул только в том случае если KLSTREET не соответствует KLREGION либо KLITEM
                DirectoryKladrItem item = null;
                if (!klItem.isEmpty() && !klStreet.startsWith(klItem)) {
                    item = dirKladr.getItemByCode(klItem);
                } else if (klRegionShort != null && !klStreet.startsWith(klRegionShort)) {
                    item = dirKladr.getItemByCode(klRegionShort);
                }

                if (item != null) {
                    DirectoryKladrItem childByTitle = null;
                    String title = "";
                    //Попытка по названию KLSTREET
                    if (!klStreet.isEmpty()) {
                        DirectoryKladrItem itemByCode = dirKladr.getItemByCode(klStreet);
                        title = itemByCode.getTitle();
                        DirectoryKladrTypeItem type = itemByCode.getType();
                        childByTitle = item.getChildByTitle(title, type);
                    }
                    //попытка поиска по NAM_STREET
                    if (childByTitle == null && !namstreet.isEmpty()) {
                        //определяем  если это переулок
                        DirectoryKladrTypeItem type;
                        if (namstreet.toUpperCase().startsWith("ПЕР.") || namstreet.toUpperCase().startsWith("ПЕР ")) {
                            type = PER;
                        } else {
                            type = STREET;
                        }
                        //Если указан только бирский район и улица прописью то ищем улицу в бирске
                        if (item.getKladrCode().equals(BIRSKIY_RAYON)) {
                            item = dirKladr.getItemByCode(BIRSK);
                        }
                        String fixTitle = fixTitle(item.getKladrCode(), namstreet);
                        childByTitle = item.getChildByTitle(fixTitle, type);
                    }
                    if (childByTitle != null) {
                        klStreet = childByTitle.getKladrCode();
                    } else {
                        klStreet = "";
                        //Вывод только если была попытка поиска улицы
                        if (!klStreet.isEmpty() || !namstreet.isEmpty()) {
                            System.out.println("Неверное поле KLSTREET в файле" + dbf.getName() + " lnum=(" + c.lnumber + ")"
                                    + " title=[" + title + "] name=[" + namstreet + "]" + " punkt=[" + item.getTitle() + "]"
                                    + " kladr=[" + item.getKladrCode() + "]");
                            out.println("Предупреждение : Неверное поле KLSTREET в файле" + dbf.getName() + " lnum=(" + c.lnumber + ")"
                                    + " title=[" + title + "] name=[" + namstreet + "]" + " punkt=[" + item.getTitle() + "]"
                                    + " kladr=[" + item.getKladrCode() + "]");
                        }
                    }
                }

                c.kladrCode = "";
                if (!klStreet.isEmpty()) {
                    c.kladrCode = klStreet + "00";
                } else if (!klItem.isEmpty()) {
                    c.kladrCode = klItem + "00000000";
                } else if (!klRegion.isEmpty()) {
                    c.kladrCode = klRegion + "00000000";
                }

                //Корректировка и проверка СНИЛС
                String msg = FormatChecker.checkSNILS(c.snils);
                if (msg != null) {
                    String snils = "";

                    for (int j = 0; j < c.snils.length(); j++) {
                        char charAt = c.snils.charAt(j);
                        if ((charAt >= '0') && (charAt <= '9')) {
                            snils = snils + charAt;
                        }
                    }

                    if (snils.length() == 11) {
                        c.snils = snils.substring(0,3) + "-" + snils.substring(3, 6) + "-"
                                + snils.substring(6, 9) + " " + snils.substring(9, 11);
                        msg = FormatChecker.checkSNILS(c.snils);
                    }
                    if (msg != null) {
                        System.out.println("Неверное поле SNILS в файле" + dbf.getName() + " lnum=(" + c.lnumber + ")");
                        out.println("Предупреждение : Неверное поле SNILS в файле" + dbf.getName() + " lnum=(" + c.lnumber + ")");
                        c.snils = "";
                    }
                }

                String rw = fields.get(Col.REG_WRACH).get().trim();
                if (rw.isEmpty()) {
                    c.regWrach = 0;
                } else {
                    c.regWrach = Integer.parseInt(rw);
                }

                Calendar data = ((DateField)fields.get(Col.DATA)).getCalendar();
                data.set(Calendar.HOUR_OF_DAY, 0);
                data.set(Calendar.MINUTE, 0);
                data.set(Calendar.SECOND, 0);
                data.set(Calendar.MILLISECOND, 0);
                c.data = data.getTime();

                if (!c.isValid()) {
                    throw new ClipsException("Неполные данные пациента " + dbf.getName() + " lnum=(" + c.lnumber + ")");
                }
                clientChunks.add(c);

            } catch (IOException ex) {
                closeDBF(dbf);
                throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " (строка " + i + ")", ex);
            } catch (xBaseJException ex) {
                closeDBF(dbf);
                throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " (строка " + i + ")", ex);
            } catch (NumberFormatException ex) {
                closeDBF(dbf);
                throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " (строка " + i + ")", ex);
            }
            counter ++;
        }
        closeDBF(dbf);
        clientChunks = compressChunks(clientChunks, whiteList);
        //Деление массивов
        ArrayList<ArrayList<ClientChunk>> chunkLists = new ArrayList<ArrayList<ClientChunk>>();
        for (int i = 0; i < THREAD_COUNT; i++) {
            ArrayList<ClientChunk> list = new ArrayList<ClientChunk>(clientChunks.size() / THREAD_COUNT);
            chunkLists.add(list);
        }
        for (int i = 0; i < clientChunks.size(); i++) {
            ClientChunk clientChunk = clientChunks.get(i);
            int index = i % THREAD_COUNT;
            chunkLists.get(index).add(clientChunk);
        }

        ArrayList<Writer> threadList = new ArrayList<Writer>();
View Full Code Here


         * затем при дублировании чанк из белого списка может вытеснить чанк не
         * из белого списка
         */
        for (ClientChunk chunk : chunks) {
            ClientUniq cu = new ClientUniq(chunk.famID, chunk.nameID, chunk.patronID, chunk.dateBorn);
            ClientChunk oldChunk = target.get(cu);
            if (oldChunk == null) {
                target.put(cu, chunk);
            } else {
                if (whiteList.contains(chunk.lnumber)) {
                    if (!whiteList.contains(oldChunk.lnumber)) {
View Full Code Here

        int errorCount = 0;
        for (int i = 0; i < clientChunks.size(); i++) {
            if ((i%100) == 0) {
                System.out.println("Поток " + streamNumber + ": Запись пациентов в базу : " +  i/((float)clientChunks.size())*100 + "% (" + i + ") запись");
            }
            ClientChunk c = clientChunks.get(i);
            try {
                bean.get().update(c);
            } catch (Exception ex) {
                errorCount++;
                bean.clear();
View Full Code Here

TOP

Related Classes of beans.user.client.updater.ClientChunk

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.