ReservationSchoolController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.xjrsoft.module.personnel.controller;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import cn.hutool.core.util.ObjectUtil;
  5. import cn.hutool.core.util.StrUtil;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  8. import com.baomidou.mybatisplus.core.metadata.IPage;
  9. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  10. import com.github.yulichang.toolkit.MPJWrappers;
  11. import com.xjrsoft.common.constant.GlobalConstant;
  12. import com.baomidou.mybatisplus.core.toolkit.StringPool;
  13. import com.xjrsoft.common.page.ConventPage;
  14. import com.xjrsoft.common.page.PageOutput;
  15. import com.xjrsoft.common.model.result.RT;
  16. import com.xjrsoft.common.utils.QrCodeUtil;
  17. import com.xjrsoft.common.utils.VoToColumnUtil;
  18. import com.xjrsoft.config.CommonPropertiesConfig;
  19. import com.xjrsoft.module.organization.entity.Department;
  20. import com.xjrsoft.module.personnel.dto.AddReservationSchoolDto;
  21. import com.xjrsoft.module.personnel.dto.ReservationSchoolVisitorPageDto;
  22. import com.xjrsoft.module.personnel.dto.UpdateReservationSchoolDto;
  23. import cn.dev33.satoken.annotation.SaCheckPermission;
  24. import com.xjrsoft.module.personnel.dto.ReservationSchoolPageDto;
  25. import com.xjrsoft.module.personnel.entity.ReservationSchool;
  26. import com.xjrsoft.module.personnel.entity.ReservationSchoolPeople;
  27. import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
  28. import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
  29. import com.xjrsoft.module.personnel.service.IReservationSchoolService;
  30. import com.xjrsoft.module.personnel.vo.ReservationSchoolPageVo;
  31. import com.xjrsoft.module.personnel.vo.ReservationSchoolVisitorPageVo;
  32. import com.xjrsoft.module.personnel.vo.ReservationSchoolVo;
  33. import com.xjrsoft.module.personnel.vo.StundentFaceProcessPageVo;
  34. import com.xjrsoft.module.room.entity.RoomValueWeek;
  35. import com.xjrsoft.module.system.entity.DictionaryDetail;
  36. import com.xjrsoft.module.teacher.entity.XjrUser;
  37. import io.swagger.annotations.Api;
  38. import io.swagger.annotations.ApiOperation;
  39. import lombok.AllArgsConstructor;
  40. import org.springframework.web.bind.annotation.*;
  41. import javax.validation.Valid;
  42. import javax.validation.constraints.NotNull;
  43. import java.text.SimpleDateFormat;
  44. import java.util.Date;
  45. import java.util.List;
  46. /**
  47. * @title: 预约进校
  48. * @Author dzx
  49. * @Date: 2024-05-11
  50. * @Version 1.0
  51. */
  52. @RestController
  53. @RequestMapping("/personnel" + "/reservationSchool")
  54. @Api(value = "/personnel" + "/reservationSchool",tags = "预约进校代码")
  55. @AllArgsConstructor
  56. public class ReservationSchoolController {
  57. private final IReservationSchoolService reservationSchoolService;
  58. private final CommonPropertiesConfig commonPropertiesConfig;
  59. @GetMapping(value = "/page")
  60. @ApiOperation(value="预约进校列表(分页)")
  61. @SaCheckPermission("reservationschool:detail")
  62. public RT<PageOutput<ReservationSchoolPageVo>> page(@Valid ReservationSchoolPageDto dto){
  63. LambdaQueryWrapper<ReservationSchool> queryWrapper = new LambdaQueryWrapper<>();
  64. queryWrapper
  65. .orderByDesc(ReservationSchool::getId)
  66. .eq(ReservationSchool::getCreateUserId,StpUtil.getLoginIdAsLong())
  67. .select(ReservationSchool.class,x -> VoToColumnUtil.fieldsToColumns(ReservationSchoolPageVo.class).contains(x.getProperty()));
  68. if(ObjectUtil.isNotNull(dto.getType())) {
  69. Date date = new Date();
  70. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  71. if (dto.getType() == 1) {
  72. queryWrapper.le(ReservationSchool::getStartTime, sdf.format(date))
  73. .ge(ReservationSchool::getEndTime, sdf.format(date));
  74. }
  75. if (dto.getType() == 2) {
  76. queryWrapper.and(ext->ext.ge(ReservationSchool::getStartTime, sdf.format(date)).or(eee->eee.le(ReservationSchool::getEndTime, sdf.format(date))));
  77. }
  78. }
  79. IPage<ReservationSchool> page = reservationSchoolService.page(ConventPage.getPage(dto), queryWrapper);
  80. PageOutput<ReservationSchoolPageVo> pageOutput = ConventPage.getPageOutput(page, ReservationSchoolPageVo.class);
  81. return RT.ok(pageOutput);
  82. }
  83. @GetMapping(value = "/my-visitor-page")
  84. @ApiOperation(value="我的访客(分页)")
  85. @SaCheckPermission("reservationschool:detail")
  86. public RT<PageOutput<ReservationSchoolVisitorPageVo>> myVisitorPage(@Valid ReservationSchoolVisitorPageDto dto){
  87. IPage<ReservationSchoolVisitorPageVo> page = reservationSchoolService.selectJoinListPage(ConventPage.getPage(dto),
  88. ReservationSchoolVisitorPageVo.class
  89. , MPJWrappers.<ReservationSchool>lambdaJoin()
  90. .orderByDesc(ReservationSchoolPeople::getId)
  91. .disableSubLogicDel()
  92. .select("(SELECT COUNT(*) FROM reservation_school_people WHERE reservation_schooId = t.id) as people_count")
  93. .eq(ReservationSchool::getRespondentUserId,StpUtil.getLoginIdAsLong())
  94. .le(ObjectUtil.isNotNull(dto.getVisitTime()),ReservationSchool::getStartTime,dto.getVisitTime())
  95. .ge(ObjectUtil.isNotNull(dto.getVisitTime()),ReservationSchool::getEndTime,dto.getVisitTime())
  96. .like(ObjectUtil.isNotNull(dto.getName()),ReservationSchoolPeople::getName,dto.getName())
  97. .select(ReservationSchoolPeople::getId)
  98. .select(ReservationSchool.class,x -> VoToColumnUtil.fieldsToColumns(ReservationSchoolVisitorPageVo.class).contains(x.getProperty()))
  99. .leftJoin(ReservationSchoolPeople.class,ReservationSchoolPeople::getReservationSchooId,ReservationSchool::getId)
  100. .select(ReservationSchoolPeople.class,x -> VoToColumnUtil.fieldsToColumns(ReservationSchoolVisitorPageVo.class).contains(x.getProperty()))
  101. );
  102. PageOutput<ReservationSchoolVisitorPageVo> pageOutput = ConventPage.getPageOutput(page, ReservationSchoolVisitorPageVo.class);
  103. return RT.ok(pageOutput);
  104. }
  105. @GetMapping(value = "/visitor-page")
  106. @ApiOperation(value="访客记录(分页)")
  107. @SaCheckPermission("reservationschool:detail")
  108. public RT<PageOutput<ReservationSchoolVisitorPageVo>> visitorPage(@Valid ReservationSchoolVisitorPageDto dto){
  109. IPage<ReservationSchoolVisitorPageVo> page = reservationSchoolService.selectJoinListPage(ConventPage.getPage(dto),
  110. ReservationSchoolVisitorPageVo.class
  111. , MPJWrappers.<ReservationSchool>lambdaJoin()
  112. .orderByDesc(ReservationSchoolPeople::getId)
  113. .disableSubLogicDel()
  114. .select("(SELECT COUNT(*) FROM reservation_school_people WHERE reservation_schooId = t.id) as people_count")
  115. .le(ObjectUtil.isNotNull(dto.getVisitTime()),ReservationSchool::getStartTime,dto.getVisitTime())
  116. .ge(ObjectUtil.isNotNull(dto.getVisitTime()),ReservationSchool::getEndTime,dto.getVisitTime())
  117. .like(!StrUtil.isEmpty(dto.getName()),ReservationSchoolPeople::getName,dto.getName())
  118. .like(ObjectUtil.isNotNull(dto.getIdentityCard()),ReservationSchoolPeople::getIdentityCard,dto.getIdentityCard())
  119. .eq(ObjectUtil.isNotEmpty(dto.getDeptId())&&dto.getDeptId()!=0,ReservationSchool::getDeptId,dto.getDeptId())
  120. .select(ReservationSchoolPeople::getId)
  121. .selectAs(ReservationSchoolPeople::getReservationSchooId,ReservationSchoolVisitorPageVo::getPId)
  122. .select(ReservationSchool.class,x -> VoToColumnUtil.fieldsToColumns(ReservationSchoolVisitorPageVo.class).contains(x.getProperty()))
  123. .leftJoin(ReservationSchoolPeople.class,ReservationSchoolPeople::getReservationSchooId,ReservationSchool::getId)
  124. .leftJoin(Department.class,Department::getId,ReservationSchool::getDeptId,ext->ext.selectAs(Department::getName,ReservationSchoolVisitorPageVo::getDeptCn))
  125. .leftJoin(XjrUser.class,XjrUser::getId,ReservationSchool::getRespondentUserId,ext->ext.selectAs(XjrUser::getName,ReservationSchoolVisitorPageVo::getRespondentUserCn))
  126. .leftJoin(DictionaryDetail.class,DictionaryDetail::getCode, ReservationSchoolPeople::getGender, ext->ext.selectAs(DictionaryDetail::getName, ReservationSchoolVisitorPageVo::getGender))
  127. .select(ReservationSchoolPeople.class,x -> VoToColumnUtil.fieldsToColumns(ReservationSchoolVisitorPageVo.class).contains(x.getProperty()))
  128. );
  129. PageOutput<ReservationSchoolVisitorPageVo> pageOutput = ConventPage.getPageOutput(page, ReservationSchoolVisitorPageVo.class);
  130. return RT.ok(pageOutput);
  131. }
  132. @GetMapping(value = "/info")
  133. @ApiOperation(value="根据id查询预约进校信息")
  134. @SaCheckPermission("reservationschool:detail")
  135. public RT<ReservationSchoolVo> info(@RequestParam Long id){
  136. ReservationSchool reservationSchool = reservationSchoolService.getByIdDeep(id);
  137. if (reservationSchool == null) {
  138. return RT.error("找不到此数据!");
  139. }
  140. return RT.ok(BeanUtil.toBean(reservationSchool, ReservationSchoolVo.class));
  141. }
  142. @PostMapping
  143. @ApiOperation(value = "新增预约进校")
  144. @SaCheckPermission("reservationschool:add")
  145. public RT<Boolean> add(@Valid @RequestBody AddReservationSchoolDto dto){
  146. ReservationSchool reservationSchool = BeanUtil.toBean(dto, ReservationSchool.class);
  147. boolean isSuccess = reservationSchoolService.add(reservationSchool);
  148. return RT.ok(isSuccess);
  149. }
  150. @PutMapping
  151. @ApiOperation(value = "修改预约进校")
  152. @SaCheckPermission("reservationschool:edit")
  153. public RT<Boolean> update(@Valid @RequestBody UpdateReservationSchoolDto dto){
  154. ReservationSchool reservationSchool = BeanUtil.toBean(dto, ReservationSchool.class);
  155. return RT.ok(reservationSchoolService.update(reservationSchool));
  156. }
  157. @DeleteMapping
  158. @ApiOperation(value = "删除预约进校")
  159. @SaCheckPermission("reservationschool:delete")
  160. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
  161. return RT.ok(reservationSchoolService.delete(ids));
  162. }
  163. @GetMapping(value = "/info-qrcode")
  164. @ApiOperation(value="预约进校-生成二维码")
  165. @SaCheckPermission("reservationschool:detail")
  166. public RT<String> qrcode(@RequestParam Long id) throws Exception {
  167. String url = "接口生成二维码";
  168. int width = 200;
  169. int height = 200;
  170. int margin = 1;
  171. try {
  172. String base64 = QrCodeUtil.createBase64(url, width, height, margin);
  173. return RT.ok(base64);
  174. } catch (Exception e) {
  175. throw e;
  176. }
  177. }
  178. }