Opened 11 months ago

Closed 11 months ago

Last modified 11 months ago

#1172 closed дефект (дубликат)

Необходимо изменить процедуры для работы ревизии r242/base

Reported by: Denis_N Owned by: Denis_N
Priority: critical Component: БД изделий АДС
Keywords: Cc:

Description (last modified by Denis_N)

Необходимо изменить процедуры для работы ревизии r242/base, где был исправлен баг: несоответствия должны выводить только непустые комментарии типа Запись, а выводят и пустые тоже

drop procedure mismatchQuery;

DELIMITER }

CREATE PROCEDURE mismatchQuery(min int, max int, searchName varchar (100), searchSerial varchar (100), searchComment varchar (10000)) READS SQL DATA
BEGIN
set @prevtotal := 0;
set @mintotal := 0;
select * from (select *, @mintotal as mintotal, @prevtotal := @mintotal - total as prevtotal from
(select products.serial, history.uid, history.date, hist1.total from history inner join
(select uid, count(uid) as total from history where (type_write = "mismatch" or type_write = 'record' or type_write = "repair" or
(type_write = "otk" and status = "fail") or (type_write = "testing" and status = "fail")) and comment is not null and comment != group by uid) as hist1 on history.uid = hist1.uid
inner join products on products.uid = history.uid where (products.name like searchName
and products.serial like searchSerial and history.comment like searchComment) and (history.uid, history.date) in (select uid, max(date) from history where (type_write = "mismatch" or type_write = 'record' or type_write = "repair" or
(type_write = "otk" and status = "fail") or (type_write = "testing" and status = "fail" )) and comment is not null and comment !=
group by uid )
group by products.serial, history.uid, history.date, hist1.total order by history.date desc) as hist2
where (@mintotal := @minTotal + total)) as hust2 where hust2.mintotal > min and hust2.prevtotal < max;

END}
DELIMITER ;


drop procedure mismatchQueryWithoutOtkRows;

DELIMITER }

CREATE PROCEDURE mismatchQueryWithoutOtkRows(min int, max int, searchName varchar (100), searchSerial varchar (100), searchComment varchar (10000)) READS SQL DATA
BEGIN
set @prevtotal := 0;
set @mintotal := 0;
select * from (select *, @mintotal as mintotal, @prevtotal := @mintotal - total as prevtotal from
(select products.serial, history.uid, history.date, hist1.total from history inner join
(select uid, count(uid) as total from history where (type_write = "mismatch" or type_write = 'record'
or type_write = "repair" or (type_write = "testing" and status = "fail")) and comment is not null and comment != group by uid) as hist1 on history.uid = hist1.uid
inner join products on products.uid = history.uid where (products.name like searchName
and products.serial like searchSerial and history.comment like searchComment) and (history.uid, history.date) in
(select uid, max(date) from history where (type_write = "mismatch" or type_write = 'record' or type_write = "repair" or
(type_write = "testing" and status = "fail") or history.type_write = 'record') and comment is not null and comment !=
group by uid)
group by products.serial, history.uid, history.date, hist1.total order by history.date desc) as hist2
where (@mintotal := @minTotal + total)) as hust2 where hust2.mintotal > min and hust2.prevtotal < max;

END}
DELIMITER ;

Attachments (2)

1.png (257.8 KB ) - added by san 11 months ago.
2.png (216.3 KB ) - added by san 11 months ago.

Download all attachments as: .zip

Change History (19)

comment:1 by Denis_N, 11 months ago

Description: modified (diff)
Priority: minorcritical
Summary: Необходимо изменить процедуры для работы ревизии №Необходимо изменить процедуры для работы ревизии r242/base

in reply to:  description comment:2 by alx, 11 months ago

Replying to Denis_N:

Необходимо изменить процедуры для работы ревизии r242/base, где был исправлен баг: несоответствия должны выводить только непустые комментарии типа Запись, а выводят и пустые тоже

IMHO просбелма не в том, что процедура выводит пустые комментарии, а в том, что система позволяет пользователю пустые комментарии записывать - см. #1156, где я об этом уже писал.

comment:3 by san, 11 months ago

Некоторые Записи в истории могут быть без комментария, если пользователю и правда нечего сказать, например запись о внесении изделия в БД.

in reply to:  3 comment:4 by alx, 11 months ago

Replying to san:

Некоторые Записи в истории могут быть без комментария, если пользователю и правда нечего сказать, например запись о внесении изделия в БД.

Во-первых, БД предназначена для хранения информации о "внесении изменений" в производимые АДС изделия, а не в БД (иначе получается замкнутый круг: надо было бы вносить в БД запись о внесении в БД записи о внесении записи...).

Во-вторых, если в историю вносится запись о каком-то изменении (даже если это изменение касается БД, а не изделия, что мне кажется неправильным), в этой записи должно быть написано, какое изменение внесено, не так ли? Иначе какой вообще смысл в такой записи? Какую полезную информацию пользователю дает пустая запись в истории? По-моему никакую никакую... Вот и разработчик косвенно в этом со мной согласен, не выводя такие записи... :)

comment:5 by san, 11 months ago

Наверное я не точно выразился. Я имел в виду запись о приёмке изделия.
Запись не пустая, в ней пустой комментарий. Полезные данные в этой записи: от кого когда и кем была принята плата, но в интерфейсе Несоотвествия нет смысла отображать такую запись.

in reply to:  5 comment:6 by alx, 11 months ago

Replying to san:

Наверное я не точно выразился. Я имел в виду запись о приёмке изделия.
Запись не пустая, в ней пустой комментарий.
Полезные данные в этой записи: от кого когда и кем была принята плата,

Так комментарий - это самое главное поле в истории, ради которого, собственно, записи и вносятся! Если в записи поле "комментарий" пустое, то как человек, прочитавший такую запись, догадается, что произошла приемка изделия, а не, например, пролив на него кофе из чашки? ИМХО вполне разумно и оправданно требовать от пользователя описать в комментарии суть произошедшего с изделием события - например "плата принята из монтажа" в описанной тобой ситуации...

но в интерфейсе Несоотвествия нет смысла отображать такую запись.

Следовательно, нет смысла такую запись и записывать!

by san, 11 months ago

Attachment: 1.png added

comment:7 by san, 11 months ago

Не соглашусь. Вот пример записи без комментария, как видишь она вполне информативна. Изделие изготовленное в АДС приняли на производство.

in reply to:  7 comment:8 by alx, 11 months ago

Replying to san:

Не соглашусь. Вот пример записи без комментария, как видишь она вполне информативна.

В свою очередь, тоже не соглашусь. По этой записи лично я, например, не могу понять, что именно произошло с изделием 30 мая в 10:28.

Изделие изготовленное в АДС приняли на производство.

  1. Каким образом, прочитав эту запись, можно догадаться, что изделие принято? ИМХО никаким. Я вижу на твоем скриншоте слово "принята" (не понятно, кстати, почему в женском роде) в единственном месте - в заголовке таблицы, а не в собственно записи (как например, и слово "отправлена" тоже)...
  1. Если изделие было принято, то от кого? В поле "От кого принята" на приведенном тобой скриншоте написано "АДС". АДС приняла плату сама от себя? :) Нонсенс какой-то...

comment:9 by san, 11 months ago

  1. Если поле "от кого" заполнено, значит принято
  2. Да так и было. АДС изготовила ретранслятор и приняла на производство, так-же бывает когда плату паяем мы сами, а если кто-то другой спаяет так и будет написано:


by san, 11 months ago

Attachment: 2.png added

in reply to:  9 comment:10 by alx, 11 months ago

Replying to san:

  1. Если поле "от кого" заполнено, значит принято

Серьезно? :)

Во-первых, как пользователь об этом должен догадаться? Я вот почему-то не догадался (недогадливый наверное)... :)

Во-вторых, я думаю, что даже если бы это было прямо записано в РЭ (которого нет), ни один пользователь (кроме самого разработчика, принявшего такое странное решение) не сможет это правило запомнить и каждый раз читая историю, производить в голове данное умозаключение (а через пол-года и сам разработчик об этом забудет и сам начнет путаться)...

А вот было бы в комментарии написано: "плата принята" - и догадываться бы не пришлось...

  1. Да так и было.

Иными словами, в историю изделия была занесена запись о том, что с изделием ничего не произошло. :) Гениально! :) В таком случае (отвечая на твой comment:3), если пользователю нечего было сказать, то и не надо было заносить бессмысленную запись в историю.

АДС изготовила ретранслятор и приняла на производство,

А что ты понимаешь под приемом?

В моем понимании прием - это когда кто-то другой нам ретранслятор передал, а мы от него приняли. До передачи ретранслятор был в чужой зоне ответственности, а при передачи (и нашем приеме) - перешел в нашу зону ответственности. В моем понимании в приведенном тобой примере никакого приема-передачи просто не было. Приема-передачи самому себе от самого себя в моем понимании быть не может. Изделие как было в нашей зоне ответственности, так в ней и осталось. С изделием ничего не произошло, его статус никак не изменился. Следовательно, и в историю записывать нечего.

так-же бывает когда плату паяем мы сами, а если кто-то другой спаяет так и будет написано:

Это - такой же не не информативный скриншот, что и предыдущий. По нему я точно так же не могу понять, что произошло с платой (если не учитывать твое разъяснение в п. 1). По-прежнему искренне не понимаю, почему нельзя писать открытым текстом "принято от Кама-контракта" (или хотя бы просто "Принято", учитывая, что от кого - уже указано) вместо того чтобы потом всем догадываться по каким-то неписанным правилам, что же эта запись означает...

Last edited 11 months ago by alx (previous) (diff)

comment:11 by Denis_N, 11 months ago

Component: MC04-DSL-3U и его платыБД изделий АДС
Owner: changed from san to Denis_N

comment:12 by Denis_N, 11 months ago

Зайду к вам на "60 минут"))

Я согласен с Алексеем, поскольку считаю, что запись record будет понятнее, если в комментарии будет какое-то разъяснение. Его можно сделать автоматическим, чтобы это не замедляло производственный процесс, т.е. от условий в интерфейсе, если комментарий пустой, то туда автоматически записывается информация с каким-нибудь маркером, который можно указать при sql-запросе к базе, чтобы не выводить эти комментарии в и-е "Несоответсвия"

Уже есть записи с типом "Трансформация", у которых в комментарии указано из какого в какое трансформировалось изделие

in reply to:  12 ; comment:13 by alx, 11 months ago

Replying to Denis_N:

Зайду к вам на "60 минут"))

Сам с собой договариваешься о встрече? :)

Его можно сделать автоматическим, чтобы это не замедляло производственный процесс, т.е. от условий в интерфейсе, если комментарий пустой, то туда автоматически записывается информация с каким-нибудь маркером, который можно указать при sql-запросе к базе, чтобы не выводить эти комментарии в и-е "Несоответсвия"

Ход мысли одобряю. Это мне самому приходило в голову. Но только я не согласен с такой реализацией. Я считаю, что система не должна сама что-либо записывать в поле комментария. Поле комментария должно оставаться только для текста, введенного живым пользователем. Зато при выводе истории система могла бы автоматически отображать текст "Принято от Кама-контракта". Отображать его можно прямо в поле комментария (дополнительно к введенному пользователем), но он обязательно должен явным образом отличаться от текста комментария, введенного человеком (отображаться другим цветом, другим шрифтом и т.п. - см. например как trac отображает выше "Владелец: изменён с san на Denis_N").

comment:14 by san, 11 months ago

Resolution: дубликат
Status: newclosed

В связи с появлением более актуального #1175, этот тикет закрываю

in reply to:  13 ; comment:15 by Denis_N, 11 months ago

Алексей, правильно ли я понимаю, что под твое предложение подходит примерно следующее: например, появилась запись в таблице история, у которой в столбце "от кого принята " значение "АДС", и в столбце "кому-отправлена" значение тоже "АДС", то при выводе этих записей, например, в Истории добавить текст к тексту комментария (отличный стилями от текста комментария, или в каком-либо ином виде) содержащий, например, "Изделие было принято на производство"?

in reply to:  15 comment:16 by alx, 11 months ago

Replying to Denis_N:

Алексей, правильно ли я понимаю, что под твое предложение подходит примерно следующее: например, появилась запись в таблице история, у которой в столбце "от кого принята " значение "АДС", и в столбце "кому-отправлена" значение тоже "АДС", то при выводе этих записей, например, в Истории добавить текст к тексту комментария (отличный стилями от текста комментария, или в каком-либо ином виде) содержащий, например, "Изделие было принято на производство"?

Нет, неправильно. По моему мнению, в идеале, такую запись система не должна записывать (так как она бессмысленна - нельзя принять изделие у самого себя, см. comment:10).

Хотя, с практической точки зрения, я не вижу возможности это пользователю запретить, если он сознательно задался целью внести в БД бессмысленную запись - ведь он может записать в поле "от кого" самые разные варианты - АДС, "АДС", ООО "АДС", компания "АДС", фирма "АДС", Компания "АДС" (ООО) и т.д. и т.п... Все возможные варианты все равно не предусмотришь... :)

Last edited 11 months ago by alx (previous) (diff)

in reply to:  15 comment:17 by alx, 11 months ago

Replying to Denis_N:

Алексей, правильно ли я понимаю, что под твое предложение подходит примерно следующее

Если же ты спрашивал конкретно про отображение такой записи (которая в результате ошибки все-таки была занесена в БД), то в целом правильно. Только непонятно, откуда тут взялось "производство" - из описанной тобой записи никак не следует, что изделие принято именно на производство (а не, например, на склад). Мне кажется, что в записи о приемке более важным является то, от какой организации было принято изделие, а не то, в какое подразделение АДС оно потом попало. Поэтому было бы лучше отображать "принято от <xxx>".

Last edited 11 months ago by alx (previous) (diff)
Note: See TracTickets for help on using tickets.