WelcomeBedController.java 62 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355
  1. package com.template.controller;
  2. import com.alibaba.druid.sql.visitor.functions.If;
  3. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  6. import com.sun.org.apache.bcel.internal.generic.NEW;
  7. import com.template.api.WelcomeBedControllerAPI;
  8. import com.template.common.utils.BeanUtil;
  9. import com.template.common.utils.ExcelUtils;
  10. import com.template.common.utils.paramUtils;
  11. import com.template.model.enumModel.eFileType;
  12. import com.template.model.pojo.*;
  13. import com.template.model.request.InsertWelcomeBedRequest;
  14. import com.template.model.request.UpdateWelcomeBedRequest;
  15. import com.template.model.result.CommonResult;
  16. import com.template.model.result.PageUtils;
  17. import com.template.model.vo.*;
  18. import com.template.services.*;
  19. import org.apache.poi.hssf.usermodel.HSSFRow;
  20. import org.apache.poi.hssf.usermodel.HSSFSheet;
  21. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  22. import org.apache.poi.ss.usermodel.DataFormatter;
  23. import org.apache.poi.ss.usermodel.Row;
  24. import org.apache.poi.ss.usermodel.Sheet;
  25. import org.apache.poi.ss.usermodel.Workbook;
  26. import org.apache.poi.xssf.usermodel.XSSFRow;
  27. import org.apache.poi.xssf.usermodel.XSSFSheet;
  28. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.transaction.annotation.Transactional;
  31. import org.springframework.util.StringUtils;
  32. import org.springframework.validation.BindingResult;
  33. import org.springframework.web.bind.annotation.RequestAttribute;
  34. import org.springframework.web.bind.annotation.RequestMapping;
  35. import org.springframework.web.bind.annotation.RestController;
  36. import org.springframework.web.multipart.MultipartFile;
  37. import javax.servlet.http.HttpServletResponse;
  38. import java.io.IOException;
  39. import java.io.InputStream;
  40. import java.text.ParseException;
  41. import java.util.*;
  42. import java.util.stream.Collectors;
  43. /**
  44. * <p>
  45. * 前端控制器
  46. * </p>
  47. *
  48. * @author ceshi
  49. * @since 2025-06-13
  50. */
  51. @RestController
  52. public class WelcomeBedController implements WelcomeBedControllerAPI {
  53. @Autowired
  54. private WelcomeOrgService welcomeOrgService;
  55. @Autowired
  56. private WelcomeBedService welcomeBedService;
  57. @Autowired
  58. private WelcomeBuildService welcomeBuildService;
  59. @Autowired
  60. private WelcomeStudentService welcomeStudentService;
  61. @Autowired
  62. private WelcomeDormitoryService welcomeDormitoryService;
  63. @Autowired
  64. private WelcomeSchoolService welcomeSchoolService;
  65. @Autowired
  66. private WelcomeAccountService welcomeAccountService;
  67. @Override
  68. public CommonResult insertBedInfo(InsertWelcomeBedRequest iwbr, BindingResult bindingResult) {
  69. if (bindingResult.hasErrors()) {
  70. String st = paramUtils.getParamError(bindingResult);
  71. return CommonResult.fail(st);
  72. }
  73. WelcomeDormitory byId = welcomeDormitoryService.getById(iwbr.getDormitoryId());
  74. if (ObjectUtils.isEmpty(byId)) {
  75. return CommonResult.fail("该宿舍号不存在");
  76. }
  77. if (!byId.getSex().equals(iwbr.getSex())) {
  78. return CommonResult.fail("请勿跨性别添加床位");
  79. }
  80. Integer bedNumber = byId.getBedNumber();
  81. // 查询该寝室下有多少床位
  82. LambdaQueryWrapper<WelcomeBed> wrapper=new LambdaQueryWrapper<>();
  83. wrapper.eq(WelcomeBed::getDormitoryId,iwbr.getDormitoryId());
  84. List<WelcomeBed> list = welcomeBedService.list(wrapper);
  85. if (list.size()>=bedNumber) {
  86. return CommonResult.fail("该寝室的床位号已满");
  87. }
  88. WelcomeBed existData = welcomeBedService.queryBedData(iwbr.getSchool(), iwbr.getBuildId(), iwbr.getDormitoryId(), iwbr.getNumber());
  89. if (existData != null) {
  90. return CommonResult.fail("该床位号已存在,请勿重复插入!");
  91. }
  92. WelcomeBed wb = new WelcomeBed();
  93. if (StringUtils.hasText(iwbr.getCardNum())) {
  94. WelcomeStudent student = welcomeStudentService.queryStudentInfo(iwbr.getCollegeId(), iwbr.getMajorId(), iwbr.getClassstrId(), iwbr.getCardNum());
  95. if (student == null) {
  96. return CommonResult.fail("当前学生信息在系统中不存在!");
  97. }
  98. wb.setStudentCard(student.getCardId());
  99. wb.setCardNum(iwbr.getCardNum());
  100. wb.setName(iwbr.getName());
  101. }
  102. wb.setNumber(iwbr.getNumber());
  103. wb.setSchool(iwbr.getSchool());
  104. wb.setSchoolId(iwbr.getSchoolId());
  105. wb.setBuildId(iwbr.getBuildId());
  106. wb.setBuild(iwbr.getBuild());
  107. wb.setDormitoryId(iwbr.getDormitoryId());
  108. wb.setDormitory(iwbr.getDormitory());
  109. wb.setSex(iwbr.getSex());
  110. wb.setIsCheck(StringUtils.hasText(iwbr.getCardNum()) ? 1 : 0);
  111. wb.setRemark(iwbr.getRemark());
  112. wb.setInstructor(iwbr.getInstructor());
  113. wb.setGrade(iwbr.getGrade());
  114. wb.setCollegeId(iwbr.getCollegeId());
  115. wb.setCollege(iwbr.getCollege());
  116. wb.setMajorId(iwbr.getMajorId());
  117. wb.setMajor(iwbr.getMajor());
  118. wb.setClassstrId(iwbr.getClassstrId());
  119. wb.setClassstr(iwbr.getClassstr());
  120. wb.setRetentionState(iwbr.getRetentionState());
  121. int result = welcomeBedService.insertWelcomeBed(wb);
  122. return result > 0 ? CommonResult.ok("添加成功!") : CommonResult.fail("添加失败");
  123. }
  124. @Override
  125. public CommonResult updateBedInfo(UpdateWelcomeBedRequest uwbr, BindingResult bindingResult) throws Exception {
  126. if (bindingResult.hasErrors()) {
  127. String st = paramUtils.getParamError(bindingResult);
  128. return CommonResult.fail(st);
  129. }
  130. WelcomeBed oldData = welcomeBedService.getBedById(uwbr.getId());
  131. if (oldData == null) {
  132. return CommonResult.fail("床位信息已失效,编辑失败");
  133. }
  134. WelcomeDormitory byId = welcomeDormitoryService.getById(uwbr.getDormitoryId());
  135. if (ObjectUtils.isEmpty(byId)) {
  136. return CommonResult.fail("该宿舍号不存在");
  137. }
  138. if (!byId.getSex().equals(uwbr.getSex())) {
  139. return CommonResult.fail("请勿跨性别修改床位");
  140. }
  141. WelcomeBed existData = welcomeBedService.queryBedData(uwbr.getSchool(), uwbr.getBuildId(), uwbr.getDormitoryId(), uwbr.getNumber());
  142. if (existData != null && existData.getId().intValue() != uwbr.getId().intValue()) {
  143. return CommonResult.fail("该床位号已存在,请勿重复插入!");
  144. }
  145. if (StringUtils.hasText(uwbr.getCardNum())) {
  146. WelcomeStudent student = welcomeStudentService.queryStudentInfo(uwbr.getCollegeId(), uwbr.getMajorId(), uwbr.getClassstrId(), uwbr.getCardNum());
  147. if (student == null) {
  148. return CommonResult.fail("当前学生信息在系统中不存在!");
  149. }
  150. oldData.setStudentCard(student.getCardId());
  151. oldData.setCollegeId(uwbr.getCollegeId());
  152. oldData.setCollege(uwbr.getCollege());
  153. oldData.setMajorId(uwbr.getMajorId());
  154. oldData.setMajor(uwbr.getMajor());
  155. oldData.setClassstrId(uwbr.getClassstrId());
  156. oldData.setClassstr(uwbr.getClassstr());
  157. oldData.setCardNum(uwbr.getCardNum());
  158. oldData.setName(uwbr.getName());
  159. }
  160. oldData.setNumber(uwbr.getNumber());
  161. oldData.setSchool(uwbr.getSchool());
  162. oldData.setSchoolId(uwbr.getSchoolId());
  163. oldData.setBuildId(uwbr.getBuildId());
  164. oldData.setBuild(uwbr.getBuild());
  165. oldData.setDormitoryId(uwbr.getDormitoryId());
  166. oldData.setDormitory(uwbr.getDormitory());
  167. oldData.setSex(uwbr.getSex());
  168. oldData.setCollegeId(uwbr.getCollegeId());
  169. oldData.setCollege(uwbr.getCollege());
  170. oldData.setMajorId(uwbr.getMajorId());
  171. oldData.setMajor(uwbr.getMajor());
  172. oldData.setClassstrId(uwbr.getClassstrId());
  173. oldData.setClassstr(uwbr.getClassstr());
  174. oldData.setIsCheck(uwbr.getIsCheck());
  175. oldData.setCardNum(uwbr.getCardNum());
  176. oldData.setName(uwbr.getName());
  177. oldData.setRemark(uwbr.getRemark());
  178. oldData.setInstructor(uwbr.getInstructor());
  179. oldData.setGrade(uwbr.getGrade());
  180. int result = welcomeBedService.updateWelcomeBed(oldData);
  181. return result > 0 ? CommonResult.ok("编辑成功!") : CommonResult.fail("编辑失败");
  182. }
  183. @Override
  184. public CommonResult queryPageBeds(int currentPage, int pageCount, Integer schoolId, Integer buildId, Integer dormitoryId, String sex, Integer isCheck, Integer collegeId, Integer majorId, Integer classstrId,Integer retentionState,Integer accountId) {
  185. // 当学院为空
  186. PageUtils<WelcomeBed> result=null;
  187. if (ObjectUtils.isEmpty(collegeId)) {
  188. WelcomeAccount account = welcomeAccountService.getById(accountId);
  189. if (ObjectUtils.isEmpty(account)) {
  190. return CommonResult.fail("当前账号不存在,请重新登入");
  191. }
  192. String aClassstrId = account.getCollegeId();
  193. String[] split = aClassstrId.split(",");
  194. List<String> collegeIds = new ArrayList<>();
  195. for (String s : split) {
  196. collegeIds.add(s);
  197. }
  198. result = welcomeBedService.queryPageWelcomeBedsC(currentPage, pageCount, schoolId, buildId, dormitoryId, sex, isCheck, collegeIds, majorId, classstrId,retentionState);
  199. }else {
  200. result = welcomeBedService.queryPageWelcomeBeds(currentPage, pageCount, schoolId, buildId, dormitoryId, sex, isCheck, collegeId, majorId, classstrId,retentionState);
  201. }
  202. return CommonResult.ok(result);
  203. }
  204. @Override
  205. public CommonResult deleteBedInfo(int id) throws Exception {
  206. int result = welcomeBedService.deleteWelcomeBedById(id);
  207. return result > 0 ? CommonResult.ok() : CommonResult.fail();
  208. }
  209. @Override
  210. public CommonResult importBedExcel(MultipartFile file) throws IOException, ParseException {
  211. System.out.println("导入床位信息");
  212. if (file.isEmpty() || file.getSize() == 0) {
  213. return CommonResult.fail("导入文件不能为空");
  214. }
  215. String ContentType = file.getContentType();
  216. InputStream inputStream = file.getInputStream();
  217. List<WelcomeBed> result = new ArrayList<>();
  218. //xls格式文件
  219. if (ContentType.equals(eFileType.Xls.getValue())) {
  220. CommonResult<List<WelcomeBed>> resultData = readXls(inputStream);
  221. if (!resultData.isSuccess()) {
  222. return resultData;
  223. }
  224. result = resultData.getData();
  225. } else if (ContentType.equals(eFileType.Xlsx.getValue())) {
  226. CommonResult<List<WelcomeBed>> resultData = readXlsx(inputStream);
  227. if (!resultData.isSuccess()) {
  228. return resultData;
  229. }
  230. result = resultData.getData();
  231. } else {
  232. return CommonResult.fail("床位信息数据导入只支持Xls或Xlsx格式文件");
  233. }
  234. List<String> admissNums = result.stream().map(WelcomeBed::getCardNum).distinct().collect(Collectors.toList());
  235. if (admissNums != null && admissNums.size() > 0) {
  236. List<WelcomeStudent> students = welcomeStudentService.getDataByAdmissNum(admissNums);
  237. if (students != null && students.size() > 0) {
  238. for (WelcomeBed r : result) {
  239. Optional<WelcomeStudent> os = students.stream().filter(e -> e.getAdmissNum().equals(r.getCardNum())).findFirst();
  240. if (os != null && os.isPresent()) {
  241. r.setStudentCard(os.get().getCardId());
  242. }
  243. }
  244. }
  245. }
  246. boolean resultBool = welcomeBedService.saveOrUpdateBatch(result);
  247. System.out.println("导入楼栋1");
  248. return resultBool ? CommonResult.ok("导入成功") : CommonResult.fail("导入失败");
  249. }
  250. /**
  251. * xls文件读取方法
  252. *
  253. * @param inputStream
  254. * @return
  255. * @throws IOException
  256. * @throws ParseException
  257. */
  258. private CommonResult<List<WelcomeBed>> readXls(InputStream inputStream) throws IOException, ParseException {
  259. List<WelcomeBed> result = new ArrayList<>();
  260. HSSFWorkbook sheets = new HSSFWorkbook(inputStream);
  261. List<WelcomeBed> wb = welcomeBedService.list(null);
  262. List<WelcomeOrg> wos = welcomeOrgService.list(null);
  263. List<WelcomeBuild> wbils = welcomeBuildService.list(null);
  264. List<WelcomeDormitory> wds = welcomeDormitoryService.list(null);
  265. List<WelcomeSchool> ws = welcomeSchoolService.list(null);
  266. Calendar calendar = Calendar.getInstance();
  267. int year = calendar.get(Calendar.YEAR);
  268. //读取第一张sheet
  269. HSSFSheet sheetAt = sheets.getSheetAt(0);
  270. DataFormatter dataFormatter = new DataFormatter();
  271. try {
  272. //rowNum = 3 从第三行开始获取值
  273. //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
  274. for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
  275. HSSFRow row = sheetAt.getRow(rowNum);
  276. if (row != null) {
  277. //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
  278. //所以先使用setCellType()方法先将该单元格的类型设置为STRING
  279. //然后poi会根据字符串读取它
  280. if (rowNum == 0) {
  281. String school = dataFormatter.formatCellValue(row.getCell(0));//校区名称
  282. if (!school.equals("校区名称")) {
  283. return CommonResult.fail("导入数据第一列为校区名称");
  284. }
  285. String build = dataFormatter.formatCellValue(row.getCell(1));//楼栋名称
  286. if (!build.equals("楼栋名称")) {
  287. return CommonResult.fail("导入数据第二列为楼栋名称");
  288. }
  289. String dormitory = dataFormatter.formatCellValue(row.getCell(2));//寝室号
  290. if (!dormitory.equals("寝室号")) {
  291. return CommonResult.fail("导入数据第三列为寝室号");
  292. }
  293. String number = dataFormatter.formatCellValue(row.getCell(3));//床位号
  294. if (!number.equals("床位号")) {
  295. return CommonResult.fail("导入数据第四列为床位号");
  296. }
  297. String sex = dataFormatter.formatCellValue(row.getCell(4));//床位性别
  298. if (!sex.equals("床位性别")) {
  299. return CommonResult.fail("导入数据第五列为床位性别");
  300. }
  301. String college = dataFormatter.formatCellValue(row.getCell(5));//所属学院
  302. if (!college.equals("所属学院")) {
  303. return CommonResult.fail("导入数据第六列为所属学院");
  304. }
  305. String major = dataFormatter.formatCellValue(row.getCell(6));//所属专业
  306. if (!major.equals("所属专业")) {
  307. return CommonResult.fail("导入数据第七列为所属专业");
  308. }
  309. String classstr = dataFormatter.formatCellValue(row.getCell(7));//所属班级
  310. if (!classstr.equals("所属班级")) {
  311. return CommonResult.fail("导入数据第八列为所属班级");
  312. }
  313. String instructor = dataFormatter.formatCellValue(row.getCell(8));//辅导员
  314. if (!instructor.equals("辅导员")) {
  315. return CommonResult.fail("导入数据第九列为辅导员");
  316. }
  317. String remark = dataFormatter.formatCellValue(row.getCell(9));//备注
  318. if (!remark.equals("备注")) {
  319. return CommonResult.fail("导入数据第十列为备注");
  320. }
  321. } else {
  322. WelcomeBed bedData = new WelcomeBed();
  323. String school = dataFormatter.formatCellValue(row.getCell(0));//校区
  324. if (ObjectUtils.isEmpty(school)) {
  325. continue;
  326. }
  327. String build = dataFormatter.formatCellValue(row.getCell(1));//楼栋
  328. String dormitory = dataFormatter.formatCellValue(row.getCell(2));//寝室号
  329. String number = dataFormatter.formatCellValue(row.getCell(3));//床位号
  330. Optional<WelcomeBed> ob = wb.stream().filter(e -> e.getSchool().equals(school) && e.getBuild().equals(build)
  331. && e.getDormitory().equals(dormitory) && e.getNumber().intValue() == Integer.valueOf(number).intValue()).findFirst();
  332. if (ob != null && ob.isPresent()) {
  333. bedData.setId(ob.get().getId());
  334. }
  335. String sex = dataFormatter.formatCellValue(row.getCell(4));//床位性别
  336. String college = dataFormatter.formatCellValue(row.getCell(5));//所属学院
  337. String major = dataFormatter.formatCellValue(row.getCell(6));//所属专业
  338. String classstr = dataFormatter.formatCellValue(row.getCell(7));//所属班级
  339. String instructor = dataFormatter.formatCellValue(row.getCell(8));//辅导员
  340. String remark = dataFormatter.formatCellValue(row.getCell(9));//备注
  341. //校区
  342. if (ws != null && ws.size() > 0) {
  343. Optional<WelcomeSchool> wsl = ws.stream().filter(e -> e.getSchool().equals(school)).findFirst();
  344. if (wsl != null && wsl.isPresent()) {
  345. bedData.setSchoolId(wsl.get().getId());
  346. bedData.setSchool(school);
  347. } else {
  348. int h=rowNum+1;
  349. return CommonResult.fail("第" +h+ "行,不存在该校区");
  350. }
  351. }
  352. //楼栋
  353. if (wbils != null && wbils.size() > 0) {
  354. Optional<WelcomeBuild> oBuild = wbils.stream().filter(e -> e.getSchool().equals(school) && e.getBuild().equals(build)).findFirst();
  355. if (oBuild != null && oBuild.isPresent()) {
  356. bedData.setBuild(build);
  357. bedData.setBuildId(oBuild.get().getId());
  358. }else {
  359. int h=rowNum+1;
  360. return CommonResult.fail("第" + h + "行,不存在该楼栋");
  361. }
  362. }
  363. //寝室
  364. if (wds != null && wds.size() > 0) {
  365. Optional<WelcomeDormitory> oDormitory = wds.stream().filter(e ->e.getSchool().equals(school) && e.getBuild().equals(build)
  366. && e.getDormitory().equals(dormitory)).findFirst();
  367. if (oDormitory != null && oDormitory.isPresent()) {
  368. if (!oDormitory.get().getSex().equals(sex)) {
  369. int h=rowNum+1;
  370. return CommonResult.fail("第" + h + "行,床位性别和寝室性别不一致");
  371. }
  372. if (!oDormitory.get().getCollege().equals(college)) {
  373. int h=rowNum+1;
  374. return CommonResult.fail("第" + h + "行,床位院系和寝室院系不一致");
  375. }
  376. bedData.setDormitory(dormitory);
  377. bedData.setDormitoryId(oDormitory.get().getId());
  378. }else {
  379. int h=rowNum+1;
  380. return CommonResult.fail("第" + h + "行,不存在该寝室号");
  381. }
  382. }
  383. bedData.setNumber(Integer.valueOf(number));
  384. bedData.setSex(sex);
  385. //region 院系专业
  386. Optional<WelcomeOrg> owo = wos.stream().filter(e -> e.getName().equals(college)).findFirst();
  387. if (owo != null && owo.isPresent()) {
  388. bedData.setCollege(college);
  389. bedData.setCollegeId(owo.get().getId());
  390. }else {
  391. int h=rowNum+1;
  392. return CommonResult.fail("第" + h + "行,不存在该院系");
  393. }
  394. // 专业
  395. Optional<WelcomeOrg> omwo = wos.stream().filter(e -> e.getName().equals(major) && e.getParentId().equals(owo.get().getId())).findFirst();
  396. if (omwo != null && omwo.isPresent()) {
  397. bedData.setMajor(major);
  398. bedData.setMajorId(omwo.get().getId());
  399. }else {
  400. int h=rowNum+1;
  401. return CommonResult.fail("第" + h + "行,不存在该专业");
  402. }
  403. // 班级
  404. Optional<WelcomeOrg> ocwo = wos.stream().filter(e -> e.getName().equals(classstr) && e.getParentId().equals(omwo.get().getId())).findFirst();
  405. if (ocwo != null && ocwo.isPresent()) {
  406. bedData.setClassstr(classstr);
  407. bedData.setClassstrId(ocwo.get().getId());
  408. }else {
  409. int h=rowNum+1;
  410. return CommonResult.fail("第" + h + "行,不存在该班级");
  411. }
  412. //endregion
  413. bedData.setIsCheck(0);
  414. bedData.setRemark(remark);
  415. bedData.setRetentionState(1);
  416. bedData.setInstructor(instructor);
  417. bedData.setGrade(year);
  418. result.add(bedData);
  419. }
  420. }
  421. }
  422. } catch (Exception e) {
  423. return CommonResult.fail("请按模板格式导入数据");
  424. }
  425. return CommonResult.ok(result);
  426. }
  427. /**
  428. * xls文件读取方法
  429. *
  430. * @param inputStream
  431. * @return
  432. * @throws IOException
  433. * @throws ParseException
  434. */
  435. private CommonResult<List<WelcomeBed>> readXlsx(InputStream inputStream) throws IOException, ParseException {
  436. List<WelcomeBed> result = new ArrayList<>();
  437. XSSFWorkbook sheets = new XSSFWorkbook(inputStream);
  438. List<WelcomeBed> wb = welcomeBedService.list(null);
  439. List<WelcomeOrg> wos = welcomeOrgService.list(null);
  440. List<WelcomeBuild> wbils = welcomeBuildService.list(null);
  441. List<WelcomeDormitory> wds = welcomeDormitoryService.list(null);
  442. List<WelcomeSchool> ws = welcomeSchoolService.list(null);
  443. //读取第一张sheet
  444. XSSFSheet sheetAt = sheets.getSheetAt(0);
  445. DataFormatter dataFormatter = new DataFormatter();
  446. Calendar calendar = Calendar.getInstance();
  447. int year = calendar.get(Calendar.YEAR);
  448. try {
  449. //rowNum = 3 从第三行开始获取值
  450. //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
  451. for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
  452. XSSFRow row = sheetAt.getRow(rowNum);
  453. if (row != null) {
  454. //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
  455. //所以先使用setCellType()方法先将该单元格的类型设置为STRING
  456. //然后poi会根据字符串读取它
  457. if (rowNum == 0) {
  458. String school = dataFormatter.formatCellValue(row.getCell(0));//校区名称
  459. if (!school.equals("校区名称")) {
  460. return CommonResult.fail("导入数据第一列为校区名称");
  461. }
  462. String build = dataFormatter.formatCellValue(row.getCell(1));//楼栋名称
  463. if (!build.equals("楼栋名称")) {
  464. return CommonResult.fail("导入数据第二列为楼栋名称");
  465. }
  466. String dormitory = dataFormatter.formatCellValue(row.getCell(2));//寝室号
  467. if (!dormitory.equals("寝室号")) {
  468. return CommonResult.fail("导入数据第三列为寝室号");
  469. }
  470. String number = dataFormatter.formatCellValue(row.getCell(3));//床位号
  471. if (!number.equals("床位号")) {
  472. return CommonResult.fail("导入数据第四列为床位号");
  473. }
  474. String sex = dataFormatter.formatCellValue(row.getCell(4));//床位性别
  475. if (!sex.equals("床位性别")) {
  476. return CommonResult.fail("导入数据第五列为床位性别");
  477. }
  478. String college = dataFormatter.formatCellValue(row.getCell(5));//所属学院
  479. if (!college.equals("所属学院")) {
  480. return CommonResult.fail("导入数据第六列为所属学院");
  481. }
  482. String major = dataFormatter.formatCellValue(row.getCell(6));//所属专业
  483. if (!major.equals("所属专业")) {
  484. return CommonResult.fail("导入数据第七列为所属专业");
  485. }
  486. String classstr = dataFormatter.formatCellValue(row.getCell(7));//所属班级
  487. if (!classstr.equals("所属班级")) {
  488. return CommonResult.fail("导入数据第八列为所属班级");
  489. }
  490. String instructor = dataFormatter.formatCellValue(row.getCell(8));//辅导员
  491. if (!instructor.equals("辅导员")) {
  492. return CommonResult.fail("导入数据第九列为辅导员");
  493. }
  494. String remark = dataFormatter.formatCellValue(row.getCell(9));//备注
  495. if (!remark.equals("备注")) {
  496. return CommonResult.fail("导入数据第十列为备注");
  497. }
  498. } else {
  499. WelcomeBed bedData = new WelcomeBed();
  500. String school = dataFormatter.formatCellValue(row.getCell(0));//校区
  501. if (ObjectUtils.isEmpty(school)) {
  502. continue;
  503. }
  504. String build = dataFormatter.formatCellValue(row.getCell(1));//楼栋
  505. String dormitory = dataFormatter.formatCellValue(row.getCell(2));//寝室号
  506. String number = dataFormatter.formatCellValue(row.getCell(3));//床位号
  507. Optional<WelcomeBed> ob = wb.stream().filter(e -> e.getSchool().equals(school) && e.getBuild().equals(build)
  508. && e.getDormitory().equals(dormitory) && e.getNumber().intValue() == Integer.valueOf(number).intValue()).findFirst();
  509. if (ob != null && ob.isPresent()) {
  510. bedData.setId(ob.get().getId());
  511. }
  512. String sex = dataFormatter.formatCellValue(row.getCell(4));//床位性别
  513. String college = dataFormatter.formatCellValue(row.getCell(5));//所属学院
  514. String major = dataFormatter.formatCellValue(row.getCell(6));//所属专业
  515. String classstr = dataFormatter.formatCellValue(row.getCell(7));//所属班级
  516. String instructor = dataFormatter.formatCellValue(row.getCell(8));//辅导员
  517. String remark = dataFormatter.formatCellValue(row.getCell(9));//备注
  518. //校区
  519. if (ws != null && ws.size() > 0) {
  520. Optional<WelcomeSchool> wsl = ws.stream().filter(e -> e.getSchool().equals(school)).findFirst();
  521. if (wsl != null && wsl.isPresent()) {
  522. bedData.setSchoolId(wsl.get().getId());
  523. bedData.setSchool(school);
  524. } else {
  525. int h=rowNum+1;
  526. return CommonResult.fail("第" +h+ "行,不存在该校区");
  527. }
  528. }
  529. //楼栋
  530. if (wbils != null && wbils.size() > 0) {
  531. Optional<WelcomeBuild> oBuild = wbils.stream().filter(e -> e.getSchool().equals(school) && e.getBuild().equals(build)).findFirst();
  532. if (oBuild != null && oBuild.isPresent()) {
  533. bedData.setBuild(build);
  534. bedData.setBuildId(oBuild.get().getId());
  535. }else {
  536. int h=rowNum+1;
  537. return CommonResult.fail("第" + h + "行,不存在该楼栋");
  538. }
  539. }
  540. //寝室
  541. if (wds != null && wds.size() > 0) {
  542. Optional<WelcomeDormitory> oDormitory = wds.stream().filter(e ->e.getSchool().equals(school) && e.getBuild().equals(build)
  543. && e.getDormitory().equals(dormitory)).findFirst();
  544. if (oDormitory != null && oDormitory.isPresent()) {
  545. if (!oDormitory.get().getSex().equals(sex)) {
  546. int h=rowNum+1;
  547. return CommonResult.fail("第" + h + "行,床位性别和寝室性别不一致");
  548. }
  549. if (!oDormitory.get().getCollege().equals(college)) {
  550. int h=rowNum+1;
  551. return CommonResult.fail("第" + h + "行,床位院系和寝室院系不一致");
  552. }
  553. bedData.setDormitory(dormitory);
  554. bedData.setDormitoryId(oDormitory.get().getId());
  555. }else {
  556. int h=rowNum+1;
  557. return CommonResult.fail("第" + h + "行,不存在该寝室号");
  558. }
  559. }
  560. bedData.setNumber(Integer.valueOf(number));
  561. bedData.setSex(sex);
  562. //region 院系专业
  563. Optional<WelcomeOrg> owo = wos.stream().filter(e -> e.getName().equals(college)).findFirst();
  564. if (owo != null && owo.isPresent()) {
  565. bedData.setCollege(college);
  566. bedData.setCollegeId(owo.get().getId());
  567. }else {
  568. int h=rowNum+1;
  569. return CommonResult.fail("第" + h + "行,不存在该院系");
  570. }
  571. // 专业
  572. Optional<WelcomeOrg> omwo = wos.stream().filter(e -> e.getName().equals(major) && e.getParentId().equals(owo.get().getId())).findFirst();
  573. if (omwo != null && omwo.isPresent()) {
  574. bedData.setMajor(major);
  575. bedData.setMajorId(omwo.get().getId());
  576. }else {
  577. int h=rowNum+1;
  578. return CommonResult.fail("第" + h + "行,不存在该专业");
  579. }
  580. // 班级
  581. Optional<WelcomeOrg> ocwo = wos.stream().filter(e -> e.getName().equals(classstr) && e.getParentId().equals(omwo.get().getId())).findFirst();
  582. if (ocwo != null && ocwo.isPresent()) {
  583. bedData.setClassstr(classstr);
  584. bedData.setClassstrId(ocwo.get().getId());
  585. }else {
  586. int h=rowNum+1;
  587. return CommonResult.fail("第" + h + "行,不存在该班级");
  588. }
  589. //endregion
  590. bedData.setIsCheck(0);
  591. bedData.setRemark(remark);
  592. bedData.setRetentionState(1);
  593. bedData.setInstructor(instructor);
  594. bedData.setGrade(year);
  595. result.add(bedData);
  596. }
  597. }
  598. }
  599. } catch (Exception e) {
  600. return CommonResult.fail("请按模板格式导入数据");
  601. }
  602. return CommonResult.ok(result);
  603. }
  604. @Override
  605. public CommonResult downloadBedExcel() {
  606. return CommonResult.ok("200", "操作成功", "https://chtech.ncjti.edu.cn/welcome/homeimage/床位信息管理.xlsx");
  607. }
  608. @Override
  609. public void welcomeBedExport(HttpServletResponse response, Integer schoolId, Integer buildId, Integer dormitoryId, String sex, Integer isCheck, Integer collegeId, Integer majorId, Integer classstrId,Integer retentionState,Integer accountId) {
  610. // 当学院为空
  611. List<WelcomeBed> result=null;
  612. if (ObjectUtils.isEmpty(collegeId)) {
  613. WelcomeAccount account = welcomeAccountService.getById(accountId);
  614. if (ObjectUtils.isEmpty(account)) {
  615. throw new RuntimeException("当前账号不存在,请重新登入");
  616. }
  617. String aClassstrId = account.getCollegeId();
  618. String[] split = aClassstrId.split(",");
  619. List<String> collegeIds = new ArrayList<>();
  620. for (String s : split) {
  621. collegeIds.add(s);
  622. }
  623. result = welcomeBedService.queryPageWelcomeBedsS(schoolId, buildId, dormitoryId, sex, isCheck, collegeIds, majorId, classstrId,retentionState);
  624. }else {
  625. result = welcomeBedService.queryPageWelcomeBeds(schoolId, buildId, dormitoryId, sex, isCheck, collegeId, majorId, classstrId,retentionState);
  626. }
  627. //导出
  628. Workbook workbook = new XSSFWorkbook();
  629. Sheet sheet = workbook.createSheet("床位信息");
  630. Row headerRow = sheet.createRow(0);
  631. headerRow.createCell(0).setCellValue("序号");
  632. headerRow.createCell(1).setCellValue("校区名称");
  633. headerRow.createCell(2).setCellValue("楼栋名称");
  634. headerRow.createCell(3).setCellValue("寝室号");
  635. headerRow.createCell(4).setCellValue("床位号");
  636. headerRow.createCell(5).setCellValue("床位性别");
  637. headerRow.createCell(6).setCellValue("所属年级");
  638. headerRow.createCell(7).setCellValue("所属学院");
  639. headerRow.createCell(8).setCellValue("所属专业");
  640. headerRow.createCell(9).setCellValue("所属班级");
  641. headerRow.createCell(10).setCellValue("辅导员");
  642. headerRow.createCell(11).setCellValue("是否入住");
  643. headerRow.createCell(12).setCellValue("录取号");
  644. headerRow.createCell(13).setCellValue("姓名");
  645. headerRow.createCell(14).setCellValue("备注");
  646. headerRow.createCell(15).setCellValue("是否保留");
  647. for (int i = 0; i < result.size(); i++) {
  648. WelcomeBed bed = result.get(i);
  649. Row dataRow = sheet.createRow(i + 1);
  650. dataRow.createCell(0).setCellValue(i + 1);
  651. dataRow.createCell(1).setCellValue(bed.getSchool());
  652. dataRow.createCell(2).setCellValue(bed.getBuild());
  653. dataRow.createCell(3).setCellValue(bed.getDormitory());
  654. dataRow.createCell(4).setCellValue(bed.getNumber());
  655. dataRow.createCell(5).setCellValue(bed.getSex());
  656. if (ObjectUtils.isEmpty(bed.getGrade())) {
  657. dataRow.createCell(6).setCellValue("");
  658. }else {
  659. dataRow.createCell(6).setCellValue(bed.getGrade());
  660. }
  661. dataRow.createCell(7).setCellValue(bed.getCollege());
  662. dataRow.createCell(8).setCellValue(bed.getMajor());
  663. dataRow.createCell(9).setCellValue(bed.getClassstr());
  664. dataRow.createCell(10).setCellValue(bed.getInstructor());
  665. Integer isCheck1 = bed.getIsCheck();
  666. String rz="";
  667. if (isCheck1==1) {
  668. rz="是";
  669. }else {
  670. rz="否";
  671. }
  672. dataRow.createCell(11).setCellValue(rz);
  673. dataRow.createCell(12).setCellValue(bed.getCardNum());
  674. dataRow.createCell(13).setCellValue(bed.getName());
  675. dataRow.createCell(14).setCellValue(bed.getRemark());
  676. Integer retentionState1 = bed.getRetentionState();
  677. String bl="";
  678. if (1==retentionState1) {
  679. bl="否";
  680. }else {
  681. bl="是";
  682. }
  683. dataRow.createCell(15).setCellValue(bl);
  684. }
  685. // 将工作簿写入文件
  686. ExcelUtils.excelDownload(workbook, "床位信息.xlsx", response);
  687. }
  688. @Override
  689. public CommonResult submit(String studentCard,WelcomeBed welcomeBed) {
  690. welcomeBed.setStudentCard(studentCard);
  691. // 先判断是否已经提交
  692. LambdaQueryWrapper<WelcomeBed> wrapper = new LambdaQueryWrapper<>();
  693. wrapper.eq(WelcomeBed::getStudentCard, studentCard);
  694. WelcomeBed one = welcomeBedService.getOne(wrapper);
  695. if (ObjectUtils.isNotEmpty(one)) {
  696. return CommonResult.fail("当前用户已选择宿舍,请勿重复提交");
  697. }
  698. WelcomeBed wb = welcomeBedService.getBedById(welcomeBed.getId());
  699. if (wb == null) {
  700. return CommonResult.fail("床位已失效,选择失败!");
  701. }
  702. if (wb.getIsCheck()==1) {
  703. return CommonResult.fail("该床位已被其他人入住");
  704. }
  705. if (StringUtils.hasText(wb.getStudentCard()) && !wb.getStudentCard().equals(welcomeBed.getStudentCard())) {
  706. return CommonResult.fail("该床位已被其他人入住,选择失败!");
  707. }
  708. boolean updateBed = welcomeBedService.updateById(welcomeBed);
  709. // 修改宿舍信息
  710. WelcomeDormitory welcomeDormitory = welcomeDormitoryService.getById(welcomeBed.getDormitoryId());
  711. if (ObjectUtils.isNotEmpty(welcomeDormitory)) {
  712. Integer freeBedNumber = welcomeDormitory.getFreeBedNumber();
  713. freeBedNumber = freeBedNumber - 1;
  714. if (freeBedNumber > 0) {
  715. welcomeDormitory.setFreeBedNumber(freeBedNumber);
  716. welcomeDormitory.setStatus(3);
  717. } else if (freeBedNumber == 0) {
  718. welcomeDormitory.setFreeBedNumber(freeBedNumber);
  719. welcomeDormitory.setStatus(1);
  720. }
  721. boolean updateResult = welcomeDormitoryService.updateById(welcomeDormitory);
  722. if(!updateResult){
  723. return CommonResult.fail("更新失败");
  724. }
  725. }
  726. if (!updateBed) {
  727. return CommonResult.fail("选宿舍失败");
  728. }
  729. return CommonResult.ok();
  730. }
  731. @Override
  732. public CommonResult bedDetails(String studentCard) {
  733. List<BedDetailsVo> result = new ArrayList<>();
  734. WelcomeStudent student = welcomeStudentService.getDataByIdcard(studentCard);
  735. if(student == null){
  736. return CommonResult.fail("558","当前学生信息已失效,查看失败");
  737. }
  738. // 获取未入住的床位
  739. List<BedInfosVo> beds = welcomeBedService.queryBedList(studentCard);
  740. for (BedInfosVo bed:beds) {
  741. BedDetailsVo data = new BedDetailsVo();
  742. if(bed.getStudentCard() != null && bed.getStudentCard().equals(studentCard)){
  743. data.setPicture(student.getPicture());
  744. data.setCardNum(student.getAdmissNum());
  745. data.setAdmissNum(student.getAdmissNum());
  746. data.setName(student.getName());
  747. data.setSex(student.getSex());
  748. data.setNationality(student.getNationality());
  749. data.setCollege(student.getCollege());
  750. data.setMajor(student.getMajor());
  751. data.setClassstr(student.getClassstr());
  752. data.setBatchValue(student.getBatchValue());
  753. data.setExamNum(student.getExamNum());
  754. data.setStudentCard(student.getCardId());
  755. data.setAddress(student.getAddress());
  756. data.setPhone(student.getPhone());
  757. }
  758. data.setBuild(bed.getBuild());
  759. data.setDormitory(bed.getDormitory());
  760. data.setNumber(bed.getNumber());
  761. data.setIsCheck(bed.getIsCheck());
  762. result.add(data);
  763. }
  764. return CommonResult.ok(result);
  765. }
  766. @Override
  767. public CommonResult queryBedDatas(int dormitoryId) {
  768. List<WelcomeBed> beds = welcomeBedService.queryDormitorys(dormitoryId);
  769. List<ListVo> datas = new ArrayList<>();
  770. for (WelcomeBed bed : beds) {
  771. ListVo data = new ListVo();
  772. data.setId(bed.getId());
  773. data.setName(String.valueOf(bed.getNumber()));
  774. datas.add(data);
  775. }
  776. return CommonResult.ok(datas);
  777. }
  778. @Override
  779. public CommonResult isCheck(String studentCard) {
  780. WelcomeBedCheckVo vo = welcomeBedService.isCheck(studentCard);
  781. if (ObjectUtils.isEmpty(vo)) {
  782. vo = new WelcomeBedCheckVo();
  783. vo.setIsCheck(0);
  784. }
  785. return CommonResult.ok(vo);
  786. }
  787. @Override
  788. public CommonResult batchOperationBed(BatchOperationBedVo batchOperationVo) {
  789. List<Integer> bedIds = batchOperationVo.getBedIds();
  790. LambdaQueryWrapper<WelcomeBed> wrapper = new LambdaQueryWrapper<>();
  791. wrapper.in(WelcomeBed::getId, bedIds);
  792. List<WelcomeBed> list = welcomeBedService.list(wrapper);
  793. if (ObjectUtils.isNotEmpty(list)) {
  794. for (WelcomeBed welcomeBed : list) {
  795. welcomeBed.setRetentionState(batchOperationVo.getRetentionState());
  796. }
  797. welcomeBedService.updateBatchById(list);
  798. }
  799. return CommonResult.ok();
  800. }
  801. @Override
  802. @Transactional(rollbackFor = Exception.class)
  803. public CommonResult checkIn(CheckInVo checkInVo) {
  804. List<WelcomeStudent> list = welcomeStudentService.getStudent(checkInVo);
  805. if (ObjectUtils.isEmpty(list)) {
  806. return CommonResult.fail("暂无该学生");
  807. } else if (list.size() > 1) {
  808. return CommonResult.fail("该录取号有多个学生,请检查修改后在试");
  809. }
  810. WelcomeStudent welcomeStudent = list.get(0);
  811. WelcomeBed bed = welcomeBedService.getBedById(checkInVo.getBedId());
  812. if (ObjectUtils.isEmpty(bed)) {
  813. return CommonResult.fail("不存在该床铺");
  814. }
  815. if (bed.getIsCheck()==1) {
  816. return CommonResult.fail("该床位已被其他人入住");
  817. }
  818. if (!welcomeStudent.getCollegeId().equals(bed.getCollegeId())) {
  819. return CommonResult.fail("请勿跨学院入住");
  820. }
  821. if (!welcomeStudent.getSex().equals(bed.getSex())) {
  822. return CommonResult.fail("请勿跨性别入住");
  823. }
  824. bed.setIsCheck(1);
  825. bed.setStudentCard(welcomeStudent.getCardId());
  826. bed.setCardNum(welcomeStudent.getAdmissNum());
  827. bed.setClassstrId(welcomeStudent.getClassstrId());
  828. bed.setClassstr(welcomeStudent.getClassstr());
  829. bed.setName(welcomeStudent.getName());
  830. bed.setMajorId(welcomeStudent.getMajorId());
  831. bed.setMajor(welcomeStudent.getMajor());
  832. welcomeBedService.updateWelcomeBed(bed);
  833. // 修改寝室信息
  834. WelcomeDormitory welcomeDormitory = welcomeDormitoryService.getById(bed.getDormitoryId());
  835. if (ObjectUtils.isNotEmpty(welcomeDormitory)) {
  836. Integer freeBedNumber = welcomeDormitory.getFreeBedNumber();
  837. freeBedNumber = freeBedNumber - 1;
  838. if (freeBedNumber > 0) {
  839. welcomeDormitory.setFreeBedNumber(freeBedNumber);
  840. welcomeDormitory.setStatus(3);
  841. } else if (freeBedNumber == 0) {
  842. welcomeDormitory.setFreeBedNumber(freeBedNumber);
  843. welcomeDormitory.setStatus(1);
  844. }
  845. welcomeDormitoryService.updateById(welcomeDormitory);
  846. }
  847. return CommonResult.ok();
  848. }
  849. @Override
  850. @Transactional(rollbackFor = Exception.class)
  851. public CommonResult checkOutDormitory(Integer bedId) {
  852. WelcomeBed bed = welcomeBedService.getBedById(bedId);
  853. if (ObjectUtils.isEmpty(bed)) {
  854. return CommonResult.fail("无该床铺信息");
  855. }
  856. welcomeBedService.updateData(bedId);
  857. // 修改寝室信息
  858. WelcomeDormitory welcomeDormitory = welcomeDormitoryService.getById(bed.getDormitoryId());
  859. if (ObjectUtils.isNotEmpty(welcomeDormitory)) {
  860. Integer freeBedNumber = welcomeDormitory.getFreeBedNumber();
  861. Integer bedNumber = welcomeDormitory.getBedNumber();
  862. freeBedNumber = freeBedNumber + 1;
  863. if (bedNumber.equals(freeBedNumber)) {
  864. welcomeDormitory.setFreeBedNumber(freeBedNumber);
  865. welcomeDormitory.setStatus(1);
  866. } else if (bedNumber > freeBedNumber) {
  867. welcomeDormitory.setFreeBedNumber(freeBedNumber);
  868. welcomeDormitory.setStatus(3);
  869. }
  870. welcomeDormitoryService.updateById(welcomeDormitory);
  871. }
  872. return CommonResult.ok();
  873. }
  874. @Override
  875. public CommonResult bedGroup(Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId) {
  876. return null;
  877. }
  878. @Override
  879. @Transactional(rollbackFor = Exception.class)
  880. public CommonResult changeBed(ChangeBedVo changeBedVo) {
  881. Integer sourceBedId = changeBedVo.getSourceBedId();
  882. Integer changeBedId = changeBedVo.getChangeBedId();
  883. WelcomeBed sourceBed = welcomeBedService.getBedById(sourceBedId);
  884. WelcomeBed changeBed = welcomeBedService.getBedById(changeBedId);
  885. if (ObjectUtils.isEmpty(sourceBed) || ObjectUtils.isEmpty(changeBed)) {
  886. return CommonResult.fail("床位不存在");
  887. }
  888. if (!sourceBed.getCollegeId().equals(changeBed.getCollegeId())) {
  889. return CommonResult.fail("请勿跨学院换床位");
  890. }
  891. if (!sourceBed.getSex().equals(changeBed.getSex())) {
  892. return CommonResult.fail("请勿跨性别换床位");
  893. }
  894. changeBed.setIsCheck(1);
  895. changeBed.setStudentCard(sourceBed.getStudentCard());
  896. changeBed.setCardNum(sourceBed.getCardNum());
  897. changeBed.setClassstrId(sourceBed.getClassstrId());
  898. changeBed.setClassstr(sourceBed.getClassstr());
  899. changeBed.setName(sourceBed.getName());
  900. changeBed.setMajorId(sourceBed.getMajorId());
  901. changeBed.setMajor(sourceBed.getMajor());
  902. changeBed.setInstructor(sourceBed.getInstructor());
  903. welcomeBedService.updateData(sourceBedId);
  904. // 修改寝室信息
  905. WelcomeDormitory welcomeDormitoryC = welcomeDormitoryService.getById(changeBed.getDormitoryId());
  906. if (ObjectUtils.isNotEmpty(welcomeDormitoryC)) {
  907. Integer freeBedNumber = welcomeDormitoryC.getFreeBedNumber();
  908. freeBedNumber = freeBedNumber - 1;
  909. if (freeBedNumber > 0) {
  910. welcomeDormitoryC.setFreeBedNumber(freeBedNumber);
  911. welcomeDormitoryC.setStatus(3);
  912. } else if (freeBedNumber == 0) {
  913. welcomeDormitoryC.setFreeBedNumber(freeBedNumber);
  914. welcomeDormitoryC.setStatus(1);
  915. }
  916. welcomeDormitoryService.updateById(welcomeDormitoryC);
  917. }
  918. // 修改寝室信息
  919. WelcomeDormitory welcomeDormitory = welcomeDormitoryService.getById(sourceBed.getDormitoryId());
  920. if (ObjectUtils.isNotEmpty(welcomeDormitory)) {
  921. Integer freeBedNumber = welcomeDormitory.getFreeBedNumber();
  922. Integer bedNumber = welcomeDormitory.getBedNumber();
  923. freeBedNumber = freeBedNumber + 1;
  924. if (bedNumber.equals(freeBedNumber)) {
  925. welcomeDormitory.setFreeBedNumber(freeBedNumber);
  926. welcomeDormitory.setStatus(1);
  927. } else if (bedNumber > freeBedNumber) {
  928. welcomeDormitory.setFreeBedNumber(freeBedNumber);
  929. welcomeDormitory.setStatus(3);
  930. }
  931. welcomeDormitoryService.updateById(welcomeDormitory);
  932. }
  933. welcomeBedService.updateById(changeBed);
  934. return CommonResult.ok();
  935. }
  936. @Override
  937. public CommonResult checkInBedGroup(Integer schoolId, Integer buildId, Integer dormitoryId,Integer bedId,Integer collegeId) {
  938. // 获取已入住的床位
  939. List<WelcomeBed> beds = welcomeBedService.checkInBedGroup(schoolId, buildId, dormitoryId,bedId,collegeId);
  940. return CommonResult.ok(beds);
  941. }
  942. @Override
  943. public CommonResult replaceBed(ReplaceBedVo replaceBedVo) {
  944. Integer sourceBedId = replaceBedVo.getSourceBedId();
  945. Integer changeBedId = replaceBedVo.getChangeBedId();
  946. WelcomeBed sourceBed = welcomeBedService.getBedById(sourceBedId);
  947. WelcomeBed changeBed = welcomeBedService.getBedById(changeBedId);
  948. if (ObjectUtils.isEmpty(sourceBed) || ObjectUtils.isEmpty(changeBed)) {
  949. return CommonResult.fail("床位不存在");
  950. }
  951. if (!sourceBed.getCollegeId().equals(changeBed.getCollegeId())) {
  952. return CommonResult.fail("请勿跨学院床位对调");
  953. }
  954. if (!sourceBed.getSex().equals(changeBed.getSex())) {
  955. return CommonResult.fail("请勿跨性别对调床位");
  956. }
  957. // 源数据
  958. WelcomeBed welcomeBed = new WelcomeBed();
  959. BeanUtil.copyProperties(sourceBed,welcomeBed);
  960. WelcomeBed welcomeBed2 = new WelcomeBed();
  961. BeanUtil.copyProperties(changeBed,welcomeBed2);
  962. String studentCard = sourceBed.getStudentCard();
  963. String cardNum = sourceBed.getCardNum();
  964. Integer classstrId = sourceBed.getClassstrId();
  965. String classstr = sourceBed.getClassstr();
  966. String name = sourceBed.getName();
  967. Integer majorId = sourceBed.getMajorId();
  968. String major = sourceBed.getMajor();
  969. String instructor = sourceBed.getInstructor();
  970. // 交换床位数据
  971. String studentCard2 = changeBed.getStudentCard();
  972. String cardNum2 = changeBed.getCardNum();
  973. Integer classstrId2 = changeBed.getClassstrId();
  974. String classstr2 = changeBed.getClassstr();
  975. String name2 = changeBed.getName();
  976. Integer majorId2 = changeBed.getMajorId();
  977. String major2 = changeBed.getMajor();
  978. String instructor2 = changeBed.getInstructor();
  979. welcomeBed.setStudentCard(studentCard2);
  980. welcomeBed.setCardNum(cardNum2);
  981. welcomeBed.setClassstrId(classstrId2);
  982. welcomeBed.setClassstr(classstr2);
  983. welcomeBed.setName(name2);
  984. welcomeBed.setMajorId(majorId2);
  985. welcomeBed.setMajor(major2);
  986. welcomeBed.setInstructor(instructor2);
  987. welcomeBed2.setStudentCard(studentCard);
  988. welcomeBed2.setCardNum(cardNum);
  989. welcomeBed2.setClassstrId(classstrId);
  990. welcomeBed2.setClassstr(classstr);
  991. welcomeBed2.setName(name);
  992. welcomeBed2.setMajorId(majorId);
  993. welcomeBed2.setMajor(major);
  994. welcomeBed2.setInstructor(instructor);
  995. ArrayList<WelcomeBed> welcomeBeds = new ArrayList<>();
  996. welcomeBeds.add(welcomeBed);
  997. welcomeBeds.add(welcomeBed2);
  998. welcomeBedService.updateBatchById(welcomeBeds);
  999. return CommonResult.ok();
  1000. }
  1001. @Override
  1002. public CommonResult studentAccommodationPage(int currentPage, int pageCount, Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId, Integer majorId, Integer classstrId, String name,Integer accountId) {
  1003. // 当学院为空
  1004. PageUtils<WelcomeBed> result=null;
  1005. if (ObjectUtils.isEmpty(collegeId)) {
  1006. WelcomeAccount account = welcomeAccountService.getById(accountId);
  1007. if (ObjectUtils.isEmpty(account)) {
  1008. return CommonResult.fail("当前账号不存在,请重新登入");
  1009. }
  1010. String aClassstrId = account.getCollegeId();
  1011. String[] split = aClassstrId.split(",");
  1012. List<String> collegeIds = new ArrayList<>();
  1013. for (String s : split) {
  1014. collegeIds.add(s);
  1015. }
  1016. result = welcomeBedService.studentAccommodationPageS(currentPage, pageCount, schoolId, buildId, dormitoryId,collegeIds, majorId, classstrId,name);
  1017. }else {
  1018. result = welcomeBedService.studentAccommodationPage(currentPage, pageCount, schoolId, buildId, dormitoryId,collegeId, majorId, classstrId,name);
  1019. }
  1020. return CommonResult.ok(result);
  1021. }
  1022. @Override
  1023. public void studentAccommodationListExport(HttpServletResponse response, Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId, Integer majorId, Integer classstrId, String name,Integer accountId) {
  1024. // 当学院为空
  1025. List<WelcomeBed> result=null;
  1026. if (ObjectUtils.isEmpty(collegeId)) {
  1027. WelcomeAccount account = welcomeAccountService.getById(accountId);
  1028. if (ObjectUtils.isEmpty(account)) {
  1029. throw new RuntimeException("当前账号不存在,请重新登入");
  1030. }
  1031. String aClassstrId = account.getCollegeId();
  1032. String[] split = aClassstrId.split(",");
  1033. List<String> collegeIds = new ArrayList<>();
  1034. for (String s : split) {
  1035. collegeIds.add(s);
  1036. }
  1037. result =welcomeBedService.studentAccommodationListS( schoolId, buildId, dormitoryId,collegeIds, majorId, classstrId,name);
  1038. }else {
  1039. result = welcomeBedService.studentAccommodationList( schoolId, buildId, dormitoryId,collegeId, majorId, classstrId,name);
  1040. }
  1041. //导出
  1042. Workbook workbook = new XSSFWorkbook();
  1043. Sheet sheet = workbook.createSheet("床位信息");
  1044. Row headerRow = sheet.createRow(0);
  1045. headerRow.createCell(0).setCellValue("序号");
  1046. headerRow.createCell(1).setCellValue("录取号");
  1047. headerRow.createCell(2).setCellValue("学生姓名");
  1048. headerRow.createCell(3).setCellValue("校区名称");
  1049. headerRow.createCell(4).setCellValue("学院");
  1050. headerRow.createCell(5).setCellValue("专业");
  1051. headerRow.createCell(6).setCellValue("班级");
  1052. headerRow.createCell(7).setCellValue("性别");
  1053. headerRow.createCell(8).setCellValue("楼栋名称");
  1054. headerRow.createCell(9).setCellValue("寝室号");
  1055. headerRow.createCell(10).setCellValue("床位号");
  1056. headerRow.createCell(11).setCellValue("辅导员");
  1057. for (int i = 0; i < result.size(); i++) {
  1058. WelcomeBed bed = result.get(i);
  1059. Row dataRow = sheet.createRow(i + 1);
  1060. dataRow.createCell(0).setCellValue(i + 1);
  1061. dataRow.createCell(1).setCellValue(bed.getCardNum());
  1062. dataRow.createCell(2).setCellValue(bed.getName());
  1063. dataRow.createCell(3).setCellValue(bed.getSchool());
  1064. dataRow.createCell(4).setCellValue(bed.getCollege());
  1065. dataRow.createCell(5).setCellValue(bed.getMajor());
  1066. dataRow.createCell(6).setCellValue(bed.getClassstr());
  1067. dataRow.createCell(7).setCellValue(bed.getSex());
  1068. dataRow.createCell(8).setCellValue(bed.getBuild());
  1069. dataRow.createCell(9).setCellValue(bed.getDormitory());
  1070. dataRow.createCell(10).setCellValue(bed.getNumber());
  1071. dataRow.createCell(11).setCellValue(bed.getInstructor());
  1072. }
  1073. // 将工作簿写入文件
  1074. ExcelUtils.excelDownload(workbook, "学生住宿信息.xlsx", response);
  1075. }
  1076. @Override
  1077. public CommonResult changeBuildGroup(Integer schoolId, Integer collegeId, String sex) {
  1078. // 获取未入住的楼栋
  1079. List<WelcomeBed> beds = welcomeBedService.changeBuildGroup(schoolId,collegeId,sex);
  1080. ArrayList<ChangeBuildGroupVo> vos = new ArrayList<>();
  1081. for (WelcomeBed bed : beds) {
  1082. ChangeBuildGroupVo vo = new ChangeBuildGroupVo();
  1083. vo.setBuild(bed.getBuild());
  1084. vo.setBuildId(bed.getBuildId());
  1085. vos.add(vo);
  1086. }
  1087. return CommonResult.ok(vos);
  1088. }
  1089. @Override
  1090. public CommonResult changeDormitoryGroup(Integer schoolId, Integer buildId, Integer collegeId, String sex) {
  1091. // 获取未入住的寝室
  1092. List<WelcomeBed> beds = welcomeBedService.changeDormitoryGroup(schoolId,buildId,collegeId,sex);
  1093. ArrayList<ChangeDormitoryGroupVo> vos = new ArrayList<>();
  1094. for (WelcomeBed bed : beds) {
  1095. ChangeDormitoryGroupVo vo = new ChangeDormitoryGroupVo();
  1096. vo.setDormitory(bed.getDormitory());
  1097. vo.setDormitoryId(bed.getDormitoryId());
  1098. vos.add(vo);
  1099. }
  1100. return CommonResult.ok(vos);
  1101. }
  1102. @Override
  1103. public CommonResult changeBedGroup(Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId,String sex) {
  1104. // 获取未入住的床位
  1105. List<WelcomeBed> beds = welcomeBedService.changeBedGroup(schoolId, buildId, dormitoryId,collegeId,sex);
  1106. ArrayList<ChangeBedGroupVo> vos = new ArrayList<>();
  1107. for (WelcomeBed bed : beds) {
  1108. ChangeBedGroupVo vo = new ChangeBedGroupVo();
  1109. vo.setBedId(bed.getId());
  1110. vo.setNumber(bed.getNumber());
  1111. vos.add(vo);
  1112. }
  1113. return CommonResult.ok(vos);
  1114. }
  1115. @Override
  1116. public CommonResult replaceBuildGroup(Integer schoolId, Integer collegeId, String sex) {
  1117. // 获取已入住的楼栋
  1118. List<WelcomeBed> beds = welcomeBedService.replaceBuildGroup(schoolId,collegeId,sex);
  1119. ArrayList<ChangeBuildGroupVo> vos = new ArrayList<>();
  1120. for (WelcomeBed bed : beds) {
  1121. ChangeBuildGroupVo vo = new ChangeBuildGroupVo();
  1122. vo.setBuild(bed.getBuild());
  1123. vo.setBuildId(bed.getBuildId());
  1124. vos.add(vo);
  1125. }
  1126. return CommonResult.ok(vos);
  1127. }
  1128. @Override
  1129. public CommonResult replaceDormitoryGroup(Integer schoolId, Integer buildId, Integer collegeId, String sex) {
  1130. // 获取已入住的寝室
  1131. List<WelcomeBed> beds = welcomeBedService.replaceDormitoryGroup(schoolId,buildId,collegeId,sex);
  1132. ArrayList<ChangeDormitoryGroupVo> vos = new ArrayList<>();
  1133. for (WelcomeBed bed : beds) {
  1134. ChangeDormitoryGroupVo vo = new ChangeDormitoryGroupVo();
  1135. vo.setDormitory(bed.getDormitory());
  1136. vo.setDormitoryId(bed.getDormitoryId());
  1137. vos.add(vo);
  1138. }
  1139. return CommonResult.ok(vos);
  1140. }
  1141. @Override
  1142. public CommonResult replaceBedGroup(Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId, String sex) {
  1143. // 获取已入住的床位
  1144. List<WelcomeBed> beds = welcomeBedService.replaceBedGroup(schoolId, buildId, dormitoryId,collegeId,sex);
  1145. ArrayList<ChangeBedGroupVo> vos = new ArrayList<>();
  1146. for (WelcomeBed bed : beds) {
  1147. ChangeBedGroupVo vo = new ChangeBedGroupVo();
  1148. vo.setBedId(bed.getId());
  1149. vo.setNumber(bed.getNumber());
  1150. vos.add(vo);
  1151. }
  1152. return CommonResult.ok(vos);
  1153. }
  1154. @Override
  1155. public CommonResult hBuildGroup(Integer schoolId, Integer collegeId, Integer majorId, Integer classstrid, String sex) {
  1156. // 获取未入住的楼栋
  1157. List<WelcomeBed> beds = welcomeBedService.hBuildGroup(schoolId,collegeId,majorId,classstrid,sex);
  1158. ArrayList<ChangeBuildGroupVo> vos = new ArrayList<>();
  1159. for (WelcomeBed bed : beds) {
  1160. ChangeBuildGroupVo vo = new ChangeBuildGroupVo();
  1161. vo.setBuild(bed.getBuild());
  1162. vo.setBuildId(bed.getBuildId());
  1163. vos.add(vo);
  1164. }
  1165. return CommonResult.ok(vos);
  1166. }
  1167. @Override
  1168. public CommonResult hDormitoryGroup(Integer schoolId, Integer buildId, Integer collegeId, Integer majorId, Integer classstrid, String sex) {
  1169. // 获取未入住的寝室
  1170. List<WelcomeBed> beds = welcomeBedService.hDormitoryGroup(schoolId,buildId,collegeId,majorId,classstrid,sex);
  1171. ArrayList<ChangeDormitoryGroupVo> vos = new ArrayList<>();
  1172. for (WelcomeBed bed : beds) {
  1173. ChangeDormitoryGroupVo vo = new ChangeDormitoryGroupVo();
  1174. vo.setDormitory(bed.getDormitory());
  1175. vo.setDormitoryId(bed.getDormitoryId());
  1176. vos.add(vo);
  1177. }
  1178. return CommonResult.ok(vos);
  1179. }
  1180. @Override
  1181. public CommonResult hBedGroup(Integer schoolId, Integer buildId, Integer dormitoryId, Integer collegeId, Integer majorId, Integer classstrid, String sex) {
  1182. // 获取未入住的床位
  1183. List<WelcomeBed> beds = welcomeBedService.hBedGroup(schoolId, buildId, dormitoryId,collegeId,majorId,classstrid,sex);
  1184. ArrayList<ChangeBedGroupVo> vos = new ArrayList<>();
  1185. for (WelcomeBed bed : beds) {
  1186. ChangeBedGroupVo vo = new ChangeBedGroupVo();
  1187. vo.setBedId(bed.getId());
  1188. vo.setNumber(bed.getNumber());
  1189. vos.add(vo);
  1190. }
  1191. return CommonResult.ok(vos);
  1192. }
  1193. }