} else {
throw new UnsupportedOperationException("Данный метод применим только к договору ОМС");
}
int serrenCount = getEntityCount(ServiceRender.class, new Field[]{new Field("polis.contract", getExistentEntity())});
if (serrenCount > 0) {
throw new EDataIntegrity("Невозможно обновить цены в контракте по которому уже были назначены услуги (" +
+ serrenCount + " услуг).");
}
/*Сначала выбираются все контрактсервайсы относящиеся к посещениям
* создается 3 мапа
* 1) код услуги - услуга
* 2) код типа приема - тип приема
* 3) код(услуги+типа приема) - контрактсервайс
*/
Field[] f = new Field[]{
new Field("serviceGroup.id", ServiceGroup.SERVICE_GROUP_VISIT)
};
List<Service> services = findEntityList(Service.class, f);
HashMap<String, Service> serviceMap = new HashMap<String, Service>();
for (Service service : services) {
serviceMap.put(service.getCode(), service);
}
List<ReceptionType> rtList = findEntityList(ReceptionType.class);
HashMap<String, ReceptionType> rtMap = new HashMap<String, ReceptionType>();
for (ReceptionType rt : rtList) {
rtMap.put(rt.getExtKey(), rt);
}
Field[] f2 = new Field[]{
new Field("contract", getExistentEntity()),
new Field("service.serviceGroup.id", ServiceGroup.SERVICE_GROUP_VISIT)
};
List<ServicePrice> prices = findEntityList(ServicePrice.class, f2);
HashMap<String, ServicePrice> priceMap = new HashMap<String, ServicePrice>();
for (ServicePrice servicePrice : prices) {
priceMap.put(servicePrice.getReceptionType().getExtKey() + servicePrice.getService().getCode(), servicePrice);
}
ArrayList<AuditDetails> auditDetList = new ArrayList<AuditDetails>();
CollaboratorAbstract collab = getCollaborator();
for (VisitPrice visitPrice : visitPriceList) {
if (Float.parseFloat(visitPrice.getPrice()) == 0) {
continue;
}
String rt;
String visit;
int price;
if (visitPrice.getId().length() != 6) {
throw new EDataIntegrity("В таблице стоимости посещений неверный ID : " + visitPrice.getId());
}
rt = visitPrice.getId().substring(0, 3);
visit = visitPrice.getId().substring(3, 6);
price = (int) (Float.parseFloat(visitPrice.getPrice())*100);
Service service = serviceMap.get(visit);
if (service == null) {
throw new EDataIntegrity("В базе отсутствует посещение с кодом " + visit +
". Обновите справочник посещений");
}
ReceptionType receptionType = rtMap.get(rt);
if (receptionType == null) {
throw new EDataIntegrity("В базе отсутствует тип приема с кодом " + visit +
". Обновите справочник типов приемов");
}
ServicePrice servicePrice = priceMap.get(visitPrice.getId());