diff --git a/src/main/java/com/markma/leave_manager_spb/controller/LeaveDetailHandler.java b/src/main/java/com/markma/leave_manager_spb/controller/LeaveDetailHandler.java index a2004e4..524ba33 100644 --- a/src/main/java/com/markma/leave_manager_spb/controller/LeaveDetailHandler.java +++ b/src/main/java/com/markma/leave_manager_spb/controller/LeaveDetailHandler.java @@ -1,7 +1,11 @@ package com.markma.leave_manager_spb.controller; import com.markma.leave_manager_spb.entity.LeaveDetail; +import com.markma.leave_manager_spb.entity.OutDetail; +import com.markma.leave_manager_spb.entity.UserDetail; import com.markma.leave_manager_spb.repository.LeaveDetailRepository; + +import com.markma.leave_manager_spb.repository.UserDetailRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -17,6 +21,8 @@ import java.util.Locale; public class LeaveDetailHandler { @Autowired private LeaveDetailRepository leaveDetailRepository; + @Autowired + private UserDetailRepository userDetailRepository; public static long dateToMs(String _date, String pattern) { SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.getDefault()); @@ -151,5 +157,29 @@ public class LeaveDetailHandler { } } + @GetMapping("findFromSID/{school_id}") + public List findFromSID(@PathVariable("school_id") int school_id) { + List LDs = leaveDetailRepository.findAll(); + List UDs = userDetailRepository.findAll(); + UserDetail UD = null; + LeaveDetail LD = null; + List result = new ArrayList(); + for (int i = 0; i < UDs.size(); i++) { + UD = UDs.get(i); + if (UD.getSchool_id().equals(school_id)) { + break; + } + } + Integer UDid = UD.getId(); + for (int i = 0; i < LDs.size(); i++) { + LD = LDs.get(i); + + if (LD.getUserid().equals(UDid)) { + result.add(LD); + } + } + return result; + } + } diff --git a/src/main/java/com/markma/leave_manager_spb/controller/OutDetailHandler.java b/src/main/java/com/markma/leave_manager_spb/controller/OutDetailHandler.java index aaa076c..6070b60 100644 --- a/src/main/java/com/markma/leave_manager_spb/controller/OutDetailHandler.java +++ b/src/main/java/com/markma/leave_manager_spb/controller/OutDetailHandler.java @@ -1,20 +1,99 @@ package com.markma.leave_manager_spb.controller; +import com.markma.leave_manager_spb.entity.LeaveDetail; import com.markma.leave_manager_spb.entity.OutDetail; +import com.markma.leave_manager_spb.entity.OutLeaveDetail; +import com.markma.leave_manager_spb.entity.UserDetail; +import com.markma.leave_manager_spb.repository.LeaveDetailRepository; +import com.markma.leave_manager_spb.repository.UserDetailRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.markma.leave_manager_spb.repository.OutDetailRepository; +import java.io.IOError; +import java.util.ArrayList; import java.util.List; +import static com.markma.leave_manager_spb.controller.LeaveDetailHandler.dateToMs; + @RestController @RequestMapping("/outDetail") public class OutDetailHandler { @Autowired private OutDetailRepository outDetailRepository; + @Autowired + private LeaveDetailRepository leaveDetailRepository; + @Autowired + private UserDetailRepository userDetailRepository; @GetMapping("/findAll") public List findAll() { return outDetailRepository.findAll(); } + + @GetMapping("findAndReturnOLDs/{page}/{size}") + public List findAndReturnOLD(@PathVariable("page") int page, @PathVariable("size") int size) { + List result = outDetailRepository.findAll(); + List OLDs = new ArrayList(); + int num = 0, pageNum = 0; + for (int i = 0; i < result.size(); i++) { + num++; + pageNum = num / size; + if (num % size != 0) pageNum++; + if (pageNum == page) { + OutDetail OD = result.get(i); + OutLeaveDetail OLD = new OutLeaveDetail(); + OLD.setId(i + 1); + + Integer ldi = OD.getLeave_detail_id(); + List LDs = leaveDetailRepository.findAll(); + LeaveDetail LD = null; + for (int j = 0; j < LDs.size(); j++) { + LD = LDs.get(i); + if (LD.getId().equals(ldi)) { + break; + } + } + OLD.setBack_time(LD.getBack_time()); + OLD.setLeave_time(LD.getLeave_time()); + + Integer user_id = OD.getUserid(); + List UDs = userDetailRepository.findAll(); + UserDetail UD = null; + for (int j = 0; j < UDs.size(); j++) { + UD = UDs.get(i); + if (UD.getId().equals(user_id)) { + break; + } + } + OLD.setUsername(UD.getName()); + OLD.setSchool_id(UD.getSchool_id()); + + OLD.setOut_time(OD.getOut_time()); + OLD.setReturn_time(OD.getReturn_time()); + + if (OLD.getOut_time() == null) { + OLD.setExceed_type("未出"); + OLDs.add(OLD); + continue; + } + if (OLD.getReturn_time() == null) { + OLD.setExceed_type("未归"); + OLDs.add(OLD); + continue; + } + long backTimeMS = dateToMs(OLD.getBack_time(), "yyyy-mm-dd hh:mm:ss"); + long returnTimeMS = dateToMs(OLD.getReturn_time(), "yyyy-mm-dd hh:mm:ss"); + if (backTimeMS >= returnTimeMS) { + OLD.setExceed_type("正常"); + } else { + OLD.setExceed_type("超假"); + } + OLDs.add(OLD); + } + } + return OLDs; + } + + } diff --git a/src/main/java/com/markma/leave_manager_spb/entity/OutLeaveDetail.java b/src/main/java/com/markma/leave_manager_spb/entity/OutLeaveDetail.java new file mode 100644 index 0000000..4938b1d --- /dev/null +++ b/src/main/java/com/markma/leave_manager_spb/entity/OutLeaveDetail.java @@ -0,0 +1,24 @@ +package com.markma.leave_manager_spb.entity; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.util.Date; + +@Entity +@Data +public class OutLeaveDetail { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + private String username; + private String school_id; + private String leave_time; + private String back_time; + private String out_time; + private String return_time; + private String exceed_type; +}