- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
@Override
List search(Long ownerId, Long projectId, String docnumber, String ctr1, String ctr2, Long dateFrom, Long dateTo, String contract,
Double amountFrom, Double amountTo, Double vatAmountFrom, Double vatAmountTo, Double withVatAmountFrom,
Double withVatAmountTo, Boolean defect, DocumentDefect d, Long vatId, Integer limit, String sortField, String order, String docType) {
// доступные проекты
List projects = projectDAO.findAll(ownerId)
if(!projects){
logger.warn("Ошибка отображения списка документов: нет доступных проектов: ownerId:$ownerId")
return []
}
Criteria criteria = currentSession.createCriteria(DocumentView)
.createAlias("document", "d")//
.createAlias("d.project", "p")//
.add(Restrictions.in("p.id", projects.id))//
// if(projectId)
// criteria.add(Restrictions.eq("d.project.id", projectId))
if (docnumber)
criteria.add(Restrictions.ilike("docNumber", docnumber, MatchMode.ANYWHERE))
if (ctr1)
criteria.add(Restrictions.ilike("supplierName", ctr1, MatchMode.ANYWHERE))
if (ctr2)
criteria.add(Restrictions.ilike("customerName", ctr2, MatchMode.ANYWHERE))
if (dateFrom) {
Calendar date1 = Calendar.instance
date1.setTime(new Date(dateFrom))
criteria.add(Restrictions.ge("docDate", date1))
}
if (dateTo) {
Calendar date1 = Calendar.instance
date1.setTime(new Date(dateTo))
date1.add(Calendar.DAY_OF_MONTH, 1)
criteria.add(Restrictions.lt("docDate", date1))
}
if (contract)
criteria.add(Restrictions.ilike("contract", contract, MatchMode.ANYWHERE))
if (amountFrom)
criteria.add(Restrictions.ge("amount", amountFrom))
if (amountTo)
criteria.add(Restrictions.le("amount", amountTo))
if (vatAmountFrom)
criteria.add(Restrictions.ge("vatAmount", vatAmountFrom))
if (vatAmountTo)
criteria.add(Restrictions.le("vatAmount", vatAmountTo))
if (withVatAmountFrom)
criteria.add(Restrictions.ge("totalAmount", withVatAmountFrom))
if (withVatAmountTo)
criteria.add(Restrictions.le("totalAmount", withVatAmountTo))
if (defect) {
criteria.add(Restrictions.isNotNull("defect"))
if (d)
criteria.add(Restrictions.eq("defect", d))
}
// if (vatId)
// criteria.add(Restrictions.eq("d.", withVatAmountTo))
if (docType) {
def dt = DocumentType.values().find { it.link == docType || it.code == docType }
if (dt)
criteria.add(Restrictions.like("docLink", dt.code, MatchMode.START))
else
logger.error("Неправильное значение параметра фильтрации по виду документа [d_t:$docType]. Допустимые значения ${DocumentType.values().code}")
}
// получаем общее кол-во записей без ограничений по странице
def rowCount = criteria.setProjection(Projections.rowCount()).uniqueResult() as Integer
List result = criteria.setProjection(null)//
.setResultTransformer(Criteria.ROOT_ENTITY)//
.addOrder(Order."$order"(sortField))//
.setMaxResults(limit)//
.list()
[rowCount, result]
}
taburetka 20.12.2013 18:51 # −1
floppy 20.12.2013 18:56 # +1
3.14159265 20.12.2013 19:19 # 0
WGH 21.12.2013 15:49 # −3
anonimb84a2f6fd141 21.12.2013 16:06 # −2
3.14159265 21.12.2013 16:59 # +2
Либо передача парметром структуры (POJO).
Копировать столько данных через стек - однозначное западло, вне зависимости от именованных параметров и языка.
Stertor 21.12.2013 20:55 # +2
+1
Всегда так делаю в дельфях. А вообще, года 4 назад прочел у msrem-a, что в целях выйгрыша в скорости целесообразнее передавать в процедуру или функцию не более 3-4 параметров. Асм я так хорошо не знаю, но могу предположить, что в этом случае не будут задействованы дополнительные регистры.
kegdan 21.12.2013 21:05 # 0
anonimb84a2f6fd141 21.12.2013 21:08 # +2
kegdan 21.12.2013 21:12 # −1
anonimb84a2f6fd141 21.12.2013 22:05 # 0
3.14159265 21.12.2013 22:13 # +2
bormand 21.12.2013 21:45 # +2
Не всегда, можно поюзать var или const, чтобы передать по ссылке.
3.14159265 21.12.2013 21:45 # +1
А Вы свой человек, я посмотрю.
Stertor 21.12.2013 22:31 # +1
kegdan 21.12.2013 20:30 # −1
Ну то есть передается набор команд, которые выполняются в зависимости от их контекста.
guest 21.12.2013 20:39 # −1
guest 20.12.2013 19:32 # −1
Этот метод тоже каша, причем полная.
anonimb84a2f6fd141 21.12.2013 16:08 # −1
Это точно жава?
guest 21.12.2013 17:19 # 0
kegdan 21.12.2013 20:54 # −1
Lure Of Chaos 22.12.2013 13:11 # +1
roman-kashitsyn 22.12.2013 15:25 # +1