Фрагмент для ознакомления
setsfname(ids,x.sfname); eam_ordersalaryapi.setslname(ids,x.slname); eam_ordersalaryapi.setsmidname(ids,x.smidname); eam_ordersalaryapi.setsordernumber(ids,y.snumber); eam_ordersalaryapi.setidAssignment(ids,y.idassign); eam_ordersalaryapi.setsDepartmentCode(ids,WRK_AssignmentAPI.GetidDepartment_MC(y.idDepartment)); end loop; if (summa_chel-res_control<0.1) and (summa_chel-res_control)>-0.1 then eam_ordersalaryapi.setnsumtopay(ids,res_chel+summa_chel-res_control); --впоследнейзаписикорректируемпогрешностьокругления end if; if (hours_total-hours_control<0.1) and (hours_total-hours_control>-0.1) then eam_ordersalaryapi.sethours(ids,hours_wrk-hours_total+hours_control); --впоследнейзаписикорректируемпогрешностьокругления end if; res_chel:=0; summa_chel:=0; res_control:=0; hours_total:=0; hours_control:=0; commit; end loop;for x in (select wr.iddepowner, wr.iddepartment, spr.sum_vo, ord.snumber, ord.id, wr.idorder, ord.dperiod, spr.user_code_pay /*from btk.eam_spreadsheet spr, btk.eam_order ord, btk.wrk_assignment wr, btk.eam_spreadsheet ss where spr.idperiod=id_period and (spr.user_code_pay=1 or spr.user_code_pay=2) and ord.id=wr.idorder and ss.idassignment=wr.id and ss.sum_vo!=0 and spr.idassignment=ss.idassignment) */ from btk.eam_spreadsheet spr, btk.eam_order ord, btk.wrk_assignment wr --выборнарядовссистемойоплатыПовременная where spr.idperiod=id_period and (wr.idformpay = 110777510001) and ord.id=wr.idorder and spr.idassignment=wr.id ) loop ids:=eam_orderSalaryapi.insertitem(); eam_ordersalaryapi.setnsumtopay(ids,x.sum_vo);-- eam_ordersalaryapi.sethours(ids,hours_wrk); eam_ordersalaryapi.setncodetopay(ids,x.user_code_pay); eam_ordersalaryapi.setiddepowner(ids,x.iddepowner); eam_ordersalaryapi.setdperiod(ids,dperiod); eam_ordersalaryapi.setidperiod(ids,id_period);-- eam_ordersalaryapi.setidperson(ids,x.idperson); -- eam_ordersalaryapi.setntabnumber(ids,x.scodename);-- eam_ordersalaryapi.setsfname(ids,x.sfname);-- eam_ordersalaryapi.setslname(ids,x.slname);-- eam_ordersalaryapi.setsmidname(ids,x.smidname); eam_ordersalaryapi.setsordernumber(ids,x.snumber); eam_ordersalaryapi.setsDepartmentCode(ids,WRK_AssignmentAPI.GetidDepartment_MC(x.idDepartment)); end loop; commit;delete from eam_ordersalary@dbimp; --очищаемтаблицуна HSODBC иперекачиваемтуда.commit; insert into eam_ordersalary@dbimp (idDepOwner, dPeriod, Ntabnumber, slname, sfname,smidname, ncodetopay,nsumtopay, hours, sordernumber,sdepartmentcode)select o.iddepowner, o.dPeriod, o.Ntabnumber, o.slname, o.sfname,o.smidname, o.ncodetopay,o.nsumtopay,o.hours, o.sordernumber,o.sdepartmentcodefrom eam_ordersalary owhere o.idperiod=id_period; commit;--impsalary.importorder@dbimp(1510553001,dperiod); --commit;end;static procedure AfterEdit(idpSelf in number)asbegin EAM_ORDERSALARYDPI.AfterEdit(idpSelf);end;end; String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date " + //17 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "where s.code='%s' ", ErrorStatusBean.NEW_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; }asstatic procedure Calculate(id_period in number)assumma_nar number(10,2);summa_chel number(10,2);res_chel number(10,2);res_control number(10,2);hours_wrk number(10,2);hours_total number(10,2);Hours_control number(10,2);ids int;dperiod date;beginsumma_nar:=0;summa_chel:=0;delete from eam_ordersalary o where o.idperiod = id_period;commit;select a.dend into dperiodfrom eam_assignperiod awhere a.id = id_period; for x in (select br.sumtopay, bs.scodename, bs.sfname, bs.slname, bs.smidname, br.user_code_pay, br.idbrigade, br.idperson from eam_brigsalary br, bs_person bs where br.idperiod=id_period and br.sumtopay!=0 and br.idperson=bs.id)-- and br.bmanual=0) распределяемвсесуммыloop --выбираем из таблицы результаты по людямsumma_chel:=x.sumtopay; summa_nar:=0;--выбираем наряды этого периода, его бригады, с этим видом оплатыfor z in (select * from eam_spreadsheet spr where spr.idperiod=id_period and spr.idbrigade=x.idbrigade and spr.user_code_pay=x.user_code_pay) loop summa_nar:=summa_nar+z.sum_vo;--считаем сумму по виду оплаты по всей бригадеend loop; hours_control:=0; hours_total:=0; if x.user_code_pay=3 then for w in (select t.hours as hrs from eam_tabel_tot t where t.idperiod=id_period and t.t2='Я ' and (t.user_code_pay=3 or t.user_code_pay is null) and t.idperson=x.idperson and t.idbrigade=x.idbrigade) -- добавлено условие на выбор табеля по бригаде, чтобы не задваивались записи, когда переходил по разным бригадам в течение месяцаloop hours_control:=hours_control+w.hrs; end loop; else for w in (select t.hours as hrs from eam_tabel_tot t where t.idperiod=id_period and t.user_code_pay=x.user_code_pay and t.idperson=x.idperson and t.idbrigade=x.idbrigade) loop hours_control:=hours_control+w.hrs; end loop; end if; res_chel:=0; res_control:=0; for y in (select wr.iddepowner, wr.iddepartment, spr.sum_vo, ord.snumber, ord.id, wr.idorder, ord.dperiod, wr.id as idassign from eam_spreadsheet spr, eam_order ord, wrk_assignment wr where spr.idperiod=id_period and spr.idbrigade=x.idbrigade and spr.user_code_pay=x.user_code_pay and ord.id=wr.idorder and spr.idassignment=wr.id and spr.sum_vo!=0) loop res_chel:=summa_chel*y.sum_vo/summa_nar; res_control:= res_control+res_chel; hours_wrk:=Hours_control*y.sum_vo/summa_nar; hours_total:=hours_total+Hours_wrk; ids:=eam_orderSalaryapi.insertitem(); eam_ordersalaryapi.setnsumtopay(ids,res_chel); eam_ordersalaryapi.sethours(ids,hours_wrk); eam_ordersalaryapi.setncodetopay(ids,x.user_code_pay); eam_ordersalaryapi.setiddepowner(ids,y.iddepowner); eam_ordersalaryapi.setdperiod(ids,dperiod); eam_ordersalaryapi.setidperiod(ids,id_period); eam_ordersalaryapi.setidperson(ids,x.idperson); eam_ordersalaryapi.setntabnumber(ids,x.scodename); eam_ordersalaryapi.setsfname(ids,x.sfname); eam_ordersalaryapi.setslname(ids,x.slname); eam_ordersalaryapi.setsmidname(ids,x.smidname); eam_ordersalaryapi.setsordernumber(ids,y.snumber); eam_ordersalaryapi.setidAssignment(ids,y.idassign); eam_ordersalaryapi.setsDepartmentCode(ids,WRK_AssignmentAPI.GetidDepartment_MC(y.idDepartment)); end loop; if (summa_chel-res_control<0.1) and (summa_chel-res_control)>-0.1 then eam_ordersalaryapi.setnsumtopay(ids,res_chel+summa_chel-res_control); --впоследнейзаписикорректируемпогрешностьокругления end if; if (hours_total-hours_control<0.1) and (hours_total-hours_control>-0.1) then eam_ordersalaryapi.sethours(ids,hours_wrk-hours_total+hours_control); --впоследнейзаписикорректируемпогрешностьокругления end if; res_chel:=0; summa_chel:=0; res_control:=0; hours_total:=0; hours_control:=0; commit; end loop;for x in (select wr.iddepowner, wr.iddepartment, spr.sum_vo, ord.snumber, ord.id, wr.idorder, ord.dperiod, spr.user_code_pay /*from btk.eam_spreadsheet spr, btk.eam_order ord, btk.wrk_assignment wr, btk.eam_spreadsheet ss where spr.idperiod=id_period and (spr.user_code_pay=1 or spr.user_code_pay=2) and ord.id=wr.idorder and ss.idassignment=wr.id and ss.sum_vo!=0 and spr.idassignment=ss.idassignment) */ from btk.eam_spreadsheet spr, btk.eam_order ord, btk.wrk_assignment wr --выборнарядовссистемойоплатыПовременная where spr.idperiod=id_period and (wr.idformpay = 110777510001) and ord.id=wr.idorder and spr.idassignment=wr.id ) loop ids:=eam_orderSalaryapi.insertitem(); eam_ordersalaryapi.setnsumtopay(ids,x.sum_vo);-- eam_ordersalaryapi.sethours(ids,hours_wrk); eam_ordersalaryapi.setncodetopay(ids,x.user_code_pay); eam_ordersalaryapi.setiddepowner(ids,x.iddepowner); eam_ordersalaryapi.setdperiod(ids,dperiod); eam_ordersalaryapi.setidperiod(ids,id_period);-- eam_ordersalaryapi.setidperson(ids,x.idperson); -- eam_ordersalaryapi.setntabnumber(ids,x.scodename);-- eam_ordersalaryapi.setsfname(ids,x.sfname);-- eam_ordersalaryapi.setslname(ids,x.slname);-- eam_ordersalaryapi.setsmidname(ids,x.smidname); eam_ordersalaryapi.setsordernumber(ids,x.snumber); eam_ordersalaryapi.setsDepartmentCode(ids,WRK_AssignmentAPI.GetidDepartment_MC(x.idDepartment)); end loop; commit;delete from eam_ordersalary@dbimp; --очищаемтаблицуна HSODBC иперекачиваемтуда.commit; insert into eam_ordersalary@dbimp (idDepOwner, dPeriod, Ntabnumber, slname, sfname,smidname, ncodetopay,nsumtopay, hours, sordernumber,sdepartmentcode)select o.iddepowner, o.dPeriod, o.Ntabnumber, o.slname, o.sfname,o.smidname, o.ncodetopay,o.nsumtopay,o.hours, o.sordernumber,o.sdepartmentcodefrom eam_ordersalary owhere o.idperiod=id_period; commit;--impsalary.importorder@dbimp(1510553001,dperiod); --commit;end;static procedure AfterEdit(idpSelf in number)asbeginКодпрограммыEAM_ORDERSALARYDPI.AfterEdit(idpSelf);end;end; String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date " + //17 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "where s.code='%s' ", ErrorStatusBean.NEW_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; } public ArrayList getOverTimeError() throws SQLException { String sql = "SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE e.correction_date is null "; Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { Date creationDate = rs.getTimestamp(4); Date correctionDate = new Date(); // еслитипошибки "ошибка" if ((rs.getString(18).equals(ErrorTypeBean.ERROR_TYPE)) &&// если приоритет = высокий то 48 часов (((rs.getString(19).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) > 0)) || // если приоритет средний то 120 часов(rs.getString(19).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) > 0) ||// если приоритет низкий то 240 часов (rs.getString(19).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0)) || // еслитипошибки "доработка" ((rs.getString(18).equals(ErrorTypeBean.REVISION_TYPE)) &&// если приоритет = высокий то 72 часов ((rs.getString(19).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 72) > 0) || // если приоритет средний то 240 часов(rs.getString(19).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0) ||// если приоритет низкий то 480 часов (rs.getString(19).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 480) > 0)))) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } } return result; } public ArrayList getCriticalError() throws SQLException { String sql = "SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE e.correction_date is null "; Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { Date creationDate = rs.getTimestamp(4); Date correctionDate = new Date(); // еслитипошибки "ошибка" if (((rs.getString(18).equals(ErrorTypeBean.ERROR_TYPE)) &&// если приоритет = высокий то 48 часов ((rs.getString(19).equals("1") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 40) >= 0) ||// если приоритет средний то 120 часов (rs.getString(19).equals("2") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 100) >= 0) ||// если приоритет низкий то 240 часов (rs.getString(19).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 200) >= 0))) || // еслитипошибки "доработка" ((rs.getString(18).equals(ErrorTypeBean.REVISION_TYPE)) &&// если приоритет = высокий то 72 часов ((rs.getString(19).equals("1") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 40) >=0) ||// если приоритет средний то 240 часов (rs.getString(19).equals("2") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 100) >=0) || // если приоритет низкий то 480 часов (rs.getString(19).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 200) >= 0)))) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } } return result; } public int getAllFicsedErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = String.format("SELECT count(*) FROM error " + "inner join errorstatus " + "ON error.status_id = errorstatus.errorstatus_id " + "INNER JOIN errortype " + "ON error.errortype_id = errortype.errortype_id " + "WHERE errortype.code = '%s' and errorstatus.code='%s' " + "and error.correction_date is not null ", ErrorTypeBean.ERROR_TYPE, ErrorStatusBean.CORRECTED_CODE); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; if (rs.next()) { result = rs.getInt(1); } return result; } public ArrayList getAllFicsedError() throws SQLException { String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE et.code = '%s' and s.code='%s' " + "and e.correction_date is not null ", ErrorTypeBean.ERROR_TYPE, ErrorStatusBean.CORRECTED_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; } public int getAllAdditionalErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = String.format("SELECT count(*) FROM error " + "inner join errorstatus " + "ON error.status_id = errorstatus.errorstatus_id " + "INNER JOIN errortype " + "ON error.errortype_id = errortype.errortype_id " + "WHERE errortype.code = '%s' and errorstatus.code='%s' " + "and error.correction_date is not null", ErrorTypeBean.REVISION_TYPE, ErrorStatusBean.CORRECTED_CODE); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; if (rs.next()) { result = rs.getInt(1); } return result; } public ArrayList getAllAdditionalError() throws SQLException { String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE et.code = '%s' and s.code='%s' " + "and e.correction_date is not null ", ErrorTypeBean.REVISION_TYPE, ErrorStatusBean.CORRECTED_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; } public int getOverTimeErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = "SELECT e.creation_date, e.correction_date, " + "et.code, ep.code FROM error as e " + "INNER JOIN errortype et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorpriority ep ON e.priority_id = ep.errorpriority_id " + "WHERE e.correction_date is null "; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0;public ArrayList getOverTimeError() throws SQLException { String sql = "SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12"e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE e.correction_date is null "; Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { Date creationDate = rs.getTimestamp(4); Date correctionDate = new Date(); // еслитипошибки "ошибка" if ((rs.getString(18).equals(ErrorTypeBean.ERROR_TYPE)) &&// если приоритет = высокий то 48 часов (((rs.getString(19).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) > 0)) || // если приоритет средний то 120 часов(rs.getString(19).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) > 0) ||// если приоритет низкий то 240 часов (rs.getString(19).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0)) || // еслитипошибки "доработка" ((rs.getString(18).equals(ErrorTypeBean.REVISION_TYPE)) &&// если приоритет = высокий то 72 часов ((rs.getString(19).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 72) > 0) || // если приоритет средний то 240 часов(rs.getString(19).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0) ||// если приоритет низкий то 480 часов (rs.getString(19).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 480) > 0)))) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } } return result; } public ArrayList getCriticalError() throws SQLException { String sql = "SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE e.correction_date is null "; Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { Date creationDate = rs.getTimestamp(4); Date correctionDate = new Date(); // еслитипошибки "ошибка" if (((rs.getString(18).equals(ErrorTypeBean.ERROR_TYPE)) &&// если приоритет = высокий то 48 часов ((rs.getString(19).equals("1") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 40) >= 0) ||// если приоритет средний то 120 часов (rs.getString(19).equals("2") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 100) >= 0) ||// если приоритет низкий то 240 часов (rs.getString(19).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 200) >= 0))) || // еслитипошибки "доработка" ((rs.getString(18).equals(ErrorTypeBean.REVISION_TYPE)) &&// если приоритет = высокий то 72 часов ((rs.getString(19).equals("1") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 40) >=0) ||// если приоритет средний то 240 часов (rs.getString(19).equals("2") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 100) >=0) || // если приоритет низкий то 480 часов (rs.getString(19).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 200) >= 0)))) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } } return result; } public int getAllFicsedErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = String.format("SELECT count(*) FROM error " + "inner join errorstatus " + "ON error.status_id = errorstatus.errorstatus_id " + "INNER JOIN errortype " + "ON error.errortype_id = errortype.errortype_id " + "WHERE errortype.code = '%s' and errorstatus.code='%s' " + "and error.correction_date is not null ", ErrorTypeBean.ERROR_TYPE, ErrorStatusBean.CORRECTED_CODE); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; if (rs.next()) { result = rs.getInt(1); } return result; } public ArrayList getAllFicsedError() throws SQLException { String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE et.code = '%s' and s.code='%s' " + "and e.correction_date is not null ", ErrorTypeBean.ERROR_TYPE, ErrorStatusBean.CORRECTED_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; } public int getAllAdditionalErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = String.format("SELECT count(*) FROM error " + "inner join errorstatus " + "ON error.status_id = errorstatus.errorstatus_id " + "INNER JOIN errortype " + "ON error.errortype_id = errortype.errortype_id " + "WHERE errortype.code = '%s' and errorstatus.code='%s' " + "and error.correction_date is not null", ErrorTypeBean.REVISION_TYPE, ErrorStatusBean.CORRECTED_CODE); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; if (rs.next()) { result = rs.getInt(1); } return result; } public ArrayList getAllAdditionalError() throws SQLException { String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE et.code = '%s' and s.code='%s' " + "and e.correction_date is not null ", ErrorTypeBean.REVISION_TYPE, ErrorStatusBean.CORRECTED_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList result = new ArrayList(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; } while (rs.next()) { Date creationDate = rs.getTimestamp(1); Date correctionDate = new Date(); // еслитипошибки "ошибка" if ((rs.getString(3).equals(ErrorTypeBean.ERROR_TYPE)) &&// если приоритет = высокий то 48 часов (((rs.getString(4).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) > 0)) || // если приоритет средний то 120 часов(rs.getString(4).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) > 0) ||// если приоритет низкий то 240 часов (rs.getString(4).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0)) || // еслитипошибки "доработка" ((rs.getString(3).equals(ErrorTypeBean.REVISION_TYPE)) &&// если приоритет = высокий то 72 часов ((rs.getString(4).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 72) > 0) || // если приоритет средний то 240 часов(rs.getString(4).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0) ||// если приоритет низкий то 480 часов (rs.getString(4).equals("3") &&((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 480) > 0)))) { result++;} } return result; }Взаимодействие с БД средствами PHPMail – Класс письмоPrivate:$idid письма в таблице$content Содержимое письма$date_create Дата добавления в таблицу письмаPublic :__construct ($data)Вызывает контсруктор объекта (устанавливает значения полей)__get_id()Получить значение переменной $id__get_content()Получить значение переменной $content__get_date_create()Получить значение переменной $ date_create__set_id ($val)Установить значение переменной $id__set_content ($val)Установить значение переменной $content__set_date_create ($val)Установить значение переменной $ date_createMailManager – Отвечает за создание письма и рассылку пользователямpublic static:CreateMail ($content)Сохраняет письмо в БДSendMailText ($mailAdres,$content)Отправляет письмо по указанному адресуCreateMailing ($listCategories,$content)Выполняет рассылку всем пользователям, подписанным на категории, содержащимся в списке $ listCategoriesGetListMails ($start,$skip)Возвращает массив писем размером $skip начиная с элемента $start из БДCategory – Класс категория (тема подписки)Private:$idid категории в таблице$name Название категории$descriptionОписание категории$promo_content Контент, который будет представлять на сайте категорию.$date_create Дата добавления в таблицу письмаPublic :__construct ($data)Вызывает контсруктор объекта (устанавливает значения полей)__get_id()Получить значение переменной $id__get_name()Получить значение переменной $name__get_description()Получить значение переменной $ description__get_promo_content()Получить значение переменной $promo_content__get_date_create()Получить значение переменной $date_create__set_id ($val)Установить значение переменной $id__set_name ($val)Установить значение переменной $name__set_description ($val)Установить значение переменной $description__set_promo_content ($val)Установить значение переменной $ promo_content__set_date_create ($val)Установить значение переменной $ date_createMailManager – Управляет множеством товаров как одной сущностью public static:CreateMail ($content)Сохраняет письмо в БДSendMailText ($mailAdres,$content)Отправляет письмо по указанному адресу CreateMailing ($listCategories,$content)Выполняет рассылку всем пользователям, подписанным на категории, содержащимся в списке $ listCategoriesGetListMails ($start,$skip)Возвращает массив писем размером $skip начиная с элемента $start из БДUser – Класс пользовательPrivate:$idid пользователя в таблице$email Адрес электронной почты пользователя$nicknameИмя пользователя на сайте$password_hashХэш пароля пользователя$saltСоль пользователя при получении хэша пароля$reg_dateДата регистрации пользователя$last_update Последнее обновление настроек пользователя$roleПрава пользователя (user/admin)Public:__construct ($data)Вызывает контсруктор объекта (устанавливает значения полей)__get_u_id()Получить значение переменной $u_id__get_role()Получить значение переменной $role__get_email()Получить значение переменной $email__get_nickname()Получить значение переменной $nickname__get_reg_date()Получить значение переменной $reg_date__get_last_update()Получить значение переменной $last_update__get_salt()Получить значение переменной $salt__get_password_hash()Получить значение переменной $ password_hash__set_u_id ($val)Установить значение переменной $u_id__set_role ($val)Установить значение переменной $role__set_email ($val)Установить значение переменной $email__set_nickname ($val)Установить значение переменной $nickname__set_reg_date ($val)Установить значение переменной $reg_date__set_last_update ($val)Установить значение переменной $last_update__set_salt ($val)Установить значение переменной $salt__set_password_hash ($val)Установить значение переменной $ password_hashUserManager – Класс отвечает за регистрацию/ аутентификацию/удаление пользователейPublic :__construct()Вызывает контсруктор объекта (устанавливает значения полей)Public static :generateSalt()Возвращает случайную последовательность для соли к паролю пользователяmyCrypt ($pass,$salt)()Возвращает хэш пароля пользователя и солиupdateHashe_Cookie ($q_id,$q_hahs)Устанавливает в cookie новое значение параметра SH (используется для автоматического логина пользователя)checkUserByNickname_Pass ($login,$pass)Сравнивает введенный пароль пользователя с хранящимся в базе (их хэши) и возвращает ID пользователя в случае совпаденияsetCookie ($id=null)Устанавливает cookie в браузер пользователя (параметры userid, SH)delCookie ($id=null)Удаляет cookie с браузера пользователяrefreshUser ($q_id,$q_hahs)Обновляет параметр SH в cookie пользователяregistrationUser ($login,$pass,$mail)Регистрирует пользователя – сохраняет в БД его логин, пароль и адрес электронной почтыrecoveryUserByNickname ($login) Отсылает на почту пользователя по его запросу новый пароль, сгенерированный автоматическиrecoveryUserByID ($userid) Отсылает на почту пользователя по запросу администратора новый пароль, сгенерированный автоматическиsendUserNewPassByMail ($usr0,$new_pass)Функция отвечает непостредственно за отсылку пользователю пароляcheckUserByNickname ($login)Проверяет наличие в БД пользователя с переданным логиномdeleteUser ($id) Удаляет пользователя из БДSettingController – Класс отвечает за действия над пользователями из административной части сайтаPublic static :getListUsers()Возвращает список пользователейgetListCategories()Возвращает списко категорийgetUserByID ($u_id)Возвращает данные пользователя по его IDgetCategoryByID ($cat_id)Возвращает данные каотегории по ее IDgetCategoriesMapByUser ($u_id) Возвращает все категории и выделяет категории, на которые подписан пользовательgetNumberSubscriberByCategoryId ($cat_id)Вовзращает число подписанных пользователей на категориюupdateSubscription ($userid,$cat_id,$statuse) Изменяет состояние подписки пользователя на категориюupdateRole ($userid,$role) Изменяет права пользователя на сайтеnewCategory ($name,$description,$content)Создает новую категориюupdateCategory ($cat_id,$name,$description,$content)Изменяет категориюdeleteCategory ($cat_id)Удаляет категориюDBConnect– Класс для работы с БДprivate static:$DB_HOSTАдрес БД$DB_NAMEИмя БД$DB_USERИмя пользователя в БД$DB_PASSПароль пользователя в БДprotected $DBH;Объект - соединение с БДpublic function:getUserByID ($id=null)Возвращает пользователяdeleteUserByID ($u_id)Удаляет пользователя из БДgetUserByNickname ($nickname=null)Возвращает пользователя по его логинуgetUserByNicknameForRecovery ($login)Возвращает пользователя (его ID) если он есть в БД (логин)getUserByMail ($mail=null)Возвращет пользователя по его адресу электронной почтыaddSubscription ($fk_user,$fk_category)Добавляет подписку пользователю на категориюDBConnect– Класс для работы с БДdelSubscription ($fk_user,$fk_category)Удаляет подписку пользователю на категориюaddMailingMap ($fk_mail,$fk_category)Добавляет в БД информацию о том, какое сообщение было отправлено по каким категориямdelMailingMap ($fk_mail,$fk_category)Удаляет из БД информацию о том, какое сообщение было отправлено по каким категориямaddUser ($nickname,$pass_hash,$salt,$mail=null,$role='user')Добавляет в БД нового пользователяaddCoupleUserID_Hash ($u_id,$hash)Добавляет в таблицу хэшей пару – ID пользователя и его хэщdelCoupleUserID_Hash ($u_id,$hashУдаляет запись из таблицы хэшейupdCoupleUserID_Hash ($u_id,$hash,$new_hash)Обновляет запись в таблице хэшейgetCountCoupleUserID_Hash($u_id,$hash)Возвращает из БД число устройств, с которых залогинен пользовательgetCountUsersByMail ($mail)Возвращает число пользователей в БД с указанным адресом электронной почтыupdPassword_SoltByUserID ($u_id,$new_pass_hash,$new_solt)Обновляет хэш и соль пароля пользователя getListUsers ($skip=0,$max=1000)Возвращает список пользователейgetListCategories ($skip=0,$max=100)Возвращает список категорийgetMapCategoriesByUser ($userid)Возвращает список всех категорий и отмечает на какие подписан пользовательgetCountSubscriberByCategoryID ($cat_id)Возвращает число пользователей подписанных на категориюgetCategoryByID ($id=null)Возвращает данные о категории updUserRoleByID ($id,$role)Обновляет права пользователя на сайтеaddCategory ($name,$description,$content)Добавляет новую категориюupdateCategory ($id, $name, $description, $content)Обновляет параметры категорииdeleteCategory ($id)Удаляет категориюaddMail ($content)Записывает в БД текст письмаgetListEmailsByCategoriesID($listCategoryID)Возвращает массив адресов электронных почт пользователей, подписанных на категории, указанные в параметр getListMailsForArhive ($start=0,$skip=20)Возвращает массив писем, которые были посланы по категориям, указанным в параметре
Вопрос-ответ:
Какая информация содержится в аналитической части статьи?
Аналитическая часть статьи содержит технико-экономическую характеристику предметной области и предприятия, анализ деятельности предприятия, характеристику организационной структуры управления предприятием, а также описание программной и технической архитектуры информационной системы предприятия. В статье также приводится характеристика комплекса задач и обоснование необходимости автоматизации.
Какая информация содержится в разделе "Характеристика предприятия и его деятельности"?
В разделе "Характеристика предприятия и его деятельности" содержится описание конкретного предприятия и его основной вид деятельности. Приводится информация о продаже продуктов питания и сельхозпродукции, а также данные о рынке, конкурентных преимуществах предприятия, особенностях производственного процесса и т.д.
Как организована структура управления предприятием?
Структура управления предприятием описывается в разделе "Организационная структура управления предприятием". В статье указываются все подразделения предприятия, их функции и взаимосвязи, роли и ответственность руководителей по разным направлениям деятельности, а также информация о структуре команды разработчиков программного обеспечения.
Почему необходимо автоматизировать задачи по продаже продуктов питания и сельхозпродукции?
Необходимость автоматизации задач по продаже продуктов питания и сельхозпродукции обосновывается в статье. Приводятся аргументы, такие как повышение эффективности работы предприятия, улучшение качества обслуживания клиентов, увеличение прибыли, сокращение затрат на ручную обработку данных и оперативный контроль над процессом продажи.
Какая информация содержится в программной и технической архитектуре информационной системы предприятия?
В программной и технической архитектуре информационной системы предприятия описывается технологическое решение, используемое для разработки и функционирования системы. Указываются основные компоненты и модули системы, а также технические требования к аппаратному и программному обеспечению.
Какую информацию включает в себя аналитическая часть разработки информационно-программного обеспечения?
Аналитическая часть разработки информационно-программного обеспечения включает в себя технико-экономическую характеристику предметной области и предприятия, анализ деятельности предприятия, организационную структуру управления предприятием, а также программную и техническую архитектуру информационной системы предприятия.
Что включает в себя характеристика предприятия и его деятельности в аналитической части разработки информационно-программного обеспечения?
Характеристика предприятия и его деятельности включает в себя описание основных аспектов деятельности предприятия, таких как производственные мощности, номенклатура продукции, ассортимент товаров, объем производства, продажи и т.д.
Какова програмная и техническая архитектура информационной системы предприятия?
Программная и техническая архитектура информационной системы предприятия включает в себя описание используемых программных компонентов (например, баз данных, интерфейсов пользователей, модулей аналитики) и технических решений (например, серверов, сетевого оборудования), которые используются для автоматизации процессов на предприятии.
Какие задачи необходимо решить для автоматизации продажи продуктов питания и сельхозпродукции?
Для автоматизации продажи продуктов питания и сельхозпродукции необходимо решить следующие задачи: учет и хранение информации о продуктах и их наличии на складе, управление заказами и доставкой, ведение клиентской базы данных, учет финансовых операций и т.д. Автоматизация поможет оптимизировать процессы и увеличить эффективность работы предприятия.
Почему автоматизация продажи продуктов питания и сельхозпродукции является необходимой?
Автоматизация продажи продуктов питания и сельхозпродукции является необходимой, так как позволяет сократить количество ручных операций, упростить и ускорить процессы продажи и доставки, повысить точность учета и контроля, а также улучшить обслуживание клиентов. Это обеспечивает более эффективное функционирование предприятия и увеличивает его конкурентоспособность.
Что представляет собой информационно-программное обеспечение для продажи продуктов питания и сельхозпродукции?
Информационно-программное обеспечение для продажи продуктов питания и сельхозпродукции - это комплекс программных средств, разработанных специально для автоматизации процессов продажи и управления данными о продуктах питания и сельхозпродукции. Оно позволяет эффективно управлять запасами, учетом, заказами и другими операциями, связанными с продажами продуктов.