Opened 9 months ago

Closed 3 months ago

#1207 closed улучшение (fixed)

Необходимо создать процедуру в MYSQL, и новый столбец `bond` в таблице history для работы ревизии r312/base

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

Description (last modified by Denis_N)

Необходимо изменить процедуру для работы интерфейса "Несоответствия"

drop procedure mismatchQuery;

DELIMITER $$

CREATE PROCEDURE `mismatchQuery` (`min` INT, `max` INT, `searchName` VARCHAR(100), `searchSerial` VARCHAR(100), `searchComment` VARCHAR(10000))
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 ((`history`.type_write = 'mismatch' and (`history`.`status` is null or `history`.`status` = 'fail'))
    or (`history`.type_write = 'mismatch' and `history`.`status` = 'ok' and `history`.bond is null)) 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 ((`history`.type_write = 'mismatch' and (`history`.`status` is null or `history`.`status` = 'fail'))
    or (`history`.type_write = 'mismatch' and `history`.`status` = 'ok' and `history`.bond is null)) and history.comment like searchComment 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 ;

Также необходимо создать новый столбец bond в таблице history, который служит для связи несоответствий и их решений:
alter table history add column bond int default null;

Change History (10)

comment:1 by Denis_N, 9 months ago

Component: Разное и всякоеБД изделий АДС
Type: дефектулучшение

comment:2 by Denis_N, 9 months ago

In 312/base:

Улучшен интерфейс "Несоответствия" (Важно!!! Необходимо обновить процедуру. See #1207 ):

  1. Теперь решения к несоответствиям выводятся в отдельном столбце (раньше они выводились просто в таких же строках, что и несоответствия и другие записи)
  2. Выводятся только несоответствия и их решения. В связи с этим убран чекбокс "Не выводить записи ОТК и Запись"
  3. Записать "несоответствие + решение" можно вверху в строке, теперь это занимает меньше места, чем было ранее. "Только решение" можно записать в столбце решения напротив строки несоответствия
  4. Рядом с серийным номером отображаются иконки, свидетельствующие о том все ли "Несоответствия" решены у данного изделия. При записи решения, если все решения в базе окажутся решены, то в интерфейсе автоматически изменятся иконки
  5. Большие комментарии (несоответствия и решения) теперь скрыты. Изначально видна лишь одна строка. Их можно раскрыть

comment:3 by Denis_N, 9 months ago

Summary: Необходимо создать процедуру в MYSQL для работы ревизииНеобходимо создать процедуру в MYSQL для работы ревизии r312/base

comment:4 by Denis_N, 9 months ago

Description: modified (diff)

comment:5 by Denis_N, 9 months ago

Summary: Необходимо создать процедуру в MYSQL для работы ревизии r312/baseНеобходимо создать процедуру в MYSQL, и новый столбец `bond` в таблице history для работы ревизии r312/base

comment:6 by san, 9 months ago

Description: modified (diff)

исправил опечатку

comment:7 by alx, 9 months ago

Прочитал предложение тикета и у меня возникли вопросы.

Во-первых, насколько я вижу, значение столбца bond в mismatchQuery проверяется на NULL и на пустую строку (''). Но bond имеет числовой тип (int)! Как его значение может быть строкой??? В чем смысл такого сравнения?

comment:8 by alx, 9 months ago

Посмотрел changeset:312/base. Насколько я понял, в столбце bond предлагается хранить ссылку на запись истории (по ключу N). Не следует ли, в таком случае, добавить также foreign key во избежание возможных неконсистентностей?

comment:9 by Denis_N, 3 months ago

Description: modified (diff)

Во-первых, насколько я вижу, значение столбца bond в mismatchQuery проверяется на NULL и на пустую строку (''). Но bond имеет числовой тип (int)! Как его значение может быть строкой??? В чем смысл такого сравнения?

alx, исправил в описании

Посмотрел changeset:312/base. Насколько я понял, в столбце bond предлагается хранить ссылку на запись истории (по ключу N). Не следует ли, в таком случае, добавить также foreign key во избежание возможных неконсистентностей?

У себя на сервере в базе изменил. Создал тикет для san: https://trac.adc-line.ru/mc-04/ticket/1252#comment:1

Last edited 3 months ago by Denis_N (previous) (diff)

comment:10 by san, 3 months ago

Resolution: fixed
Status: assignedclosed

In 337/base:

Изменения в структуре БД:
В history добавлен столбец bond и внешний ключ для него.
Изменена процедура mismatchQuery.
Удалена неиспользуемая ныне процедура mismatchQueryWithoutOtkRows

Closes #1252,#1207

Note: See TracTickets for help on using tickets.