WelcomeBedController.java 60 KB

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