Обновление расписания в весенней загрузке - PullRequest
0 голосов
/ 14 октября 2019

Я новичок в весенней загрузке и сейчас работаю над проектом расписания. В моей системе добавление и удаление timeTable работает правильно, а обновление timeTable - нет. Когда я добавляю timeTable, он создает (# timeslots * #days строк в таблице базы данных, и у всех этих строк есть общий код). Когда я выбираю edit, http://localhost:8080/timeTableMapping/edit/116 передается как URL (116 - общий код). Что мне нужно сделать, это загрузить правильную тему в поле соответствующего и сохранить правильно обновленные данные в базе данных. Кто-нибудь может мне помочь. thx

Update TimeTable view

Database View

updatetimeTableMapping view

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
    <link rel="stylesheet" type="text/css" href="static/css/timeTableMapping.css" th:href="@{/css/timeTableMapping.css}">
    <meta charset="UTF-8">
    <title>Update Time Table</title>
</head>
<body>



</form>
<div class="container2">
    <form action="#" th:action="@{/timeTableMapping/saveAll}" th:object="${timeTableMapping}" method="post">
        <table border="0" cell[adding="10">
            <tr>
                <td><h1>Time Table:</h1></td>

                <td>
                    <select th:field="*{code}">
                        <option value="">Choose..</option>
                        <option th:each="timeTable: ${timeTables}" th:value="${timeTable.id}" th:text="${timeTable.name}"/>
                    </select>
                </td>
            </tr>
        </table>

        <table border="1" >
            <thead>
            <tr>
            </tr>
            <br>
            <th></th>
            <th>Monday</th>
            <td style="background-color: cornflowerblue;"></td >
            <td style="background-color: cornflowerblue;"></td>
            <td style="background-color: cornflowerblue;"></td>
            <th>Tuesday</th>
            <td style="background-color: cornflowerblue;"></td >
            <td style="background-color: cornflowerblue;"></td>
            <td style="background-color: cornflowerblue;"></td>
            <th>Wednesday</th>
            <td style="background-color: cornflowerblue;"></td >
            <td style="background-color: cornflowerblue;"></td>
            <td style="background-color: cornflowerblue;"></td>
            <th>Thursday</th>
            <td style="background-color: cornflowerblue;"></td >
            <td style="background-color: cornflowerblue;"></td>
            <td style="background-color: cornflowerblue;"></td>
            <th>Friday</th>
            <td style="background-color: cornflowerblue;"></td >
            <td style="background-color: cornflowerblue;"></td>
            <td style="background-color: cornflowerblue;"></td>



            </thead>
            <tbody>

            <th:block th:each="time : ${times}">
                <tr>

                    <th th:text="${ time.start }+':00 - ' + ${ time.end }+':00'"></th>

                    <th:block th:each="day : ${days}">
                        <td>
                            <select th:field="*{subject_code}">
                                <option value=""></option>
                                <option th:each="subject: ${subjects}" th:value="${subject.subject_code}" th:selected="${subject_code}" th:text="${subject.name} "/>

                        <td><input type="text"  th:value="${day.name}" name="day" style="display:none;width:0px" /></td>
                        <td><input type="text"  th:value="${time.start}" name="start" style="display:none;width:0px" /></td>
                        <td><input type="text"  th:value="${time.end}" name="end" style="display:none;width:0px" /></td>


                        </select>
                        </td>
                    </th:block>

                </tr>


            </th:block>

            <tr>
                <td colspan="2">
                    <button type="submit">Save</button>
                </td>
            </tr>

            </tbody>
        </table>
    </form>
</div>

</body>
</html>

timeTableMapping Model

@Entity
@Table(name="timetablemappings")
@EntityListeners(AuditingEntityListener.class)
public class TimeTableMapping {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String day;
    private String start;
    private String end;
    private String subject_code;
    private String time_table_code;
    private Long code;

    public TimeTableMapping () {
    }

    public TimeTableMapping(Long code) {
        this.code = code;
    }

    public TimeTableMapping(String day, String start, String end, String subject_code, String time_table_code, Long code) {
        this.day = day;
        this.start = start;
        this.end = end;
        this.subject_code = subject_code;
        this.time_table_code = time_table_code;
        this.code = code;
    }

    public TimeTableMapping( Long code,String day, String start, String end, String subject_code) {
        this.code = code;
        this.day = day;
        this.start = start;
        this.end = end;
        this.subject_code = subject_code;

    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getDay() {
        return day;
    }

    public void setDay(String day) {
        this.day = day;
    }

    public String getStart() {
        return start;
    }

    public void setStart(String start) {
        this.start = start;
    }

    public String getEnd() {
        return end;
    }

    public void setEnd(String end) {
        this.end = end;
    }

    public String getSubject_code() {
        return subject_code;
    }

    public void setSubject_code(String subject_code) {
        this.subject_code = subject_code;
    }

    public String getTime_table_code() {
        return time_table_code;
    }

    public void setTime_table_code(String time_table_code) {
        this.time_table_code = time_table_code;
    }

    public Long getCode() {
        return code;
    }

    public void setCode(Long code) {
        this.code = code;
    }
}

репозиторий timeTableMapping

@Repository
public interface TimeTableMappingRepository extends JpaRepository<TimeTableMapping, Long> {

        @Query("SELECT DISTINCT t.code  FROM TimeTableMapping t")
        List<Long> findTimeTableMappingDistinctByCode();

        List<TimeTableMapping> findByCode(Long code);

}

timeTableMapping DAO

@Service
public class TimeTableMappingDAO {

    @Autowired
    TimeTableRepository timeTableRepository;

    @Autowired
    TimeTableMappingRepository timeTableMappingRepository;


    //to save
    public TimeTableMapping save(TimeTableMapping timeTableMapping){
        return timeTableMappingRepository.save(timeTableMapping);
    }

    //to save all
    public void saveAll(List<TimeTableMapping> timeTableMapping){
        timeTableMappingRepository.saveAll(timeTableMapping);
    }

        //to search all
    public List<TimeTableMapping> findAll(){
        return timeTableMappingRepository.findAll();
    }

    public List<Long> findDistinct(){
      return timeTableMappingRepository.findTimeTableMappingDistinctByCode();
   }

    //get by id
    public TimeTableMapping findById(Long id){
        return timeTableMappingRepository.findById(id).orElse(null);
    }

    //public TimeTableMapping findByCode(Long code){
   //     return timeTableMappingRepository.findByCode(code);
    //}


    //delete
    public void delete(Long id){
        timeTableMappingRepository.deleteById(id);
    }


}

контроллер timeTableMapping

@Controller
public class TimeTableMappingController {
    @Autowired
    private  TimeTableMappingDAO timeTableMappingDAO;

    @Autowired
    private TimeTableDAO timeTableDAO;

    @Autowired
    private SubjectDAO subjectDAO;

    @Autowired
    private StudentGroupDAO studentGroupDAO;

    @Autowired
    private DayDAO dayDAO;

    @Autowired
    private TimeDAO timeDAO;



    @RequestMapping("/timeTableMapping")
    public String viewHomePage(Model model){
        System.out.println("hey");
        List<Long> timeTableMappingDetails= timeTableMappingDAO.findDistinct();
       // List<TimeTableMapping>  timeTableMappingDetails=timeTableMappingDAO.select(timeTableMappingDetails1);
        System.out.println("hey");
        System.out.println(timeTableMappingDetails.toString());
        List<TimeTableMapping> tempList=new ArrayList<>();

        for(int i = 0 ; i < timeTableMappingDetails.size(); i++) {
            TimeTableMapping tempTimeTable = new TimeTableMapping();
            tempTimeTable.setCode(timeTableMappingDetails.get(i));
            tempList.add(tempTimeTable);
            System.out.println(timeTableMappingDetails.get(i));

        }
        model.addAttribute("timeTableMappingDetails",tempList);

        return "timeTableMapping";
    }


    @RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST)
    public String saveTimeTable(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){

        String[] dayArray = timeTableMapping.getDay().split(",");
        String[] subArray = timeTableMapping.getSubject_code().split(",");
         String[] startArray = timeTableMapping.getStart().split(",");
        String[] endArray = timeTableMapping.getEnd().split(",");

        String[] uniqueDay = Arrays.stream(dayArray).distinct().toArray(String[]::new);
        String[] uniqueStart = Arrays.stream(startArray).distinct().toArray(String[]::new);
        String[] uniqueEnd = Arrays.stream(endArray).distinct().toArray(String[]::new);


        List<TimeTableMapping> tempList = new ArrayList<>();
        int count=0;
        for(int j=0;j<uniqueStart.length;j++) {

            for(int i = 0 ; i < uniqueDay.length; i++) {
                TimeTableMapping tempTimeTable = new TimeTableMapping();
                tempTimeTable.setStart(uniqueStart[j]);
                System.out.println(uniqueStart[j]);

                tempTimeTable.setEnd(uniqueEnd[j]);
                tempTimeTable.setTime_table_code(timeTableMapping.getTime_table_code());
                tempTimeTable.setCode(timeTableMapping.getCode());
                tempTimeTable.setDay(uniqueDay[i]);
                tempTimeTable.setSubject_code(subArray[count]);
                tempList.add(tempTimeTable);
                count++;

            }
        }

        timeTableMappingDAO.saveAll(tempList);
        return  "redirect:/timeTableMapping";
    }


    @RequestMapping("/timeTableMapping/new")
    public String addTimeTableMapping(Model model){
        System.out.println("hey");
        System.out.println("hey");
        TimeTableMapping timeTableMapping =new TimeTableMapping();
        model.addAttribute("timeTableMapping",timeTableMapping);

        List<TimeTable> timeTableDetail = timeTableDAO.findAll();
        model.addAttribute("timeTables", timeTableDetail);

        List<Subject> subjectDetail = subjectDAO.findAll();
        model.addAttribute("subjects", subjectDetail);

        String[] days = new String[] { "Monday", "Tuesday"};

        List<Day> dayDetails = dayDAO.findAll();
        model.addAttribute("days",dayDetails);

        List<Time> timeDetails = timeDAO.findAll();
        model.addAttribute("times",timeDetails);

        return "addTimeTableMapping";
    }


    @RequestMapping("/timeTableMapping/edit/{id}")
    public ModelAndView updateTimeTable(@PathVariable(name="id")Long id){
        ModelAndView mav=new ModelAndView(("updateTimeTableMapping"));

        //mav.addObject("timeTableMapping", new TimeTableMapping());

        TimeTableMapping timeTableMapping = timeTableMappingDAO.findById(id);
        //System.out.println(timeTableMapping.getTime_table_code());
       // List<TimeTableMapping> timeTableMapping1= timeTableMappingDAO.select(timeTableMapping.getTime_table_code());
        mav.addObject("timeTableMapping",timeTableMapping);


        List<TimeTable> timeTableDetails = timeTableDAO.findAll();
        mav.addObject("timeTables", timeTableDetails);

        List<Subject> subjectDetails = subjectDAO.findAll();
        mav.addObject("subjects", subjectDetails);

        List<StudentGroup> studentGroupDetails = studentGroupDAO.findAll();
        mav.addObject("studentGroups",studentGroupDetails);

        List<Day> dayDetails = dayDAO.findAll();
        mav.addObject("days",dayDetails);

        List<Time> timeDetails = timeDAO.findAll();
        mav.addObject("times",timeDetails);


        return  mav;
    }

    @RequestMapping("/timeTableMapping/delete/{code}")
    public String deleteProduct(@PathVariable(name="code") Long code){
        timeTableDAO.delete(code);
        return  "redirect:/timeTableMapping";
    }
}

репозиторий Github https://github.com/Ayesh17/attendance

...