WfAssetManageController.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package com.xjrsoft.module.asset.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import com.alibaba.excel.support.ExcelTypeEnum;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  8. import com.xjrsoft.common.model.result.RT;
  9. import com.xjrsoft.common.page.ConventPage;
  10. import com.xjrsoft.common.page.PageOutput;
  11. import com.xjrsoft.common.utils.TreeUtil;
  12. import com.xjrsoft.common.utils.VoToColumnUtil;
  13. import com.xjrsoft.module.asset.dto.*;
  14. import com.xjrsoft.module.asset.entity.WfAssetManage;
  15. import com.xjrsoft.module.asset.service.IWfAssetManageService;
  16. import com.xjrsoft.module.asset.vo.BaseOfficeBuildVo;
  17. import com.xjrsoft.module.asset.vo.PlaceTreeVo;
  18. import com.xjrsoft.module.asset.vo.WfAssetManagePageVo;
  19. import com.xjrsoft.module.asset.vo.WfAssetManageVo;
  20. import com.xjrsoft.module.base.entity.BaseClassroom;
  21. import com.xjrsoft.module.base.entity.BaseOfficeBuild;
  22. import com.xjrsoft.module.base.service.IBaseClassroomService;
  23. import com.xjrsoft.module.base.service.IBaseOfficeBuildService;
  24. import com.xjrsoft.module.system.entity.DictionaryDetail;
  25. import com.xjrsoft.module.textbook.dto.TextbookClaimExportQueryDto;
  26. import io.swagger.annotations.Api;
  27. import io.swagger.annotations.ApiOperation;
  28. import lombok.AllArgsConstructor;
  29. import org.springframework.http.ResponseEntity;
  30. import org.springframework.web.bind.annotation.*;
  31. import javax.validation.Valid;
  32. import java.io.ByteArrayOutputStream;
  33. import java.util.ArrayList;
  34. import java.util.List;
  35. import java.util.Map;
  36. import java.util.stream.Collectors;
  37. /**
  38. * @title: 资产管理
  39. * @Author dzx
  40. * @Date: 2024-03-28
  41. * @Version 1.0
  42. */
  43. @RestController
  44. @RequestMapping("/asset" + "/wfAssetManage")
  45. @Api(value = "/asset" + "/wfAssetManage",tags = "资产管理代码")
  46. @AllArgsConstructor
  47. public class WfAssetManageController {
  48. private final IWfAssetManageService wfAssetManageService;
  49. private final IBaseOfficeBuildService baseOfficeBuildService;
  50. private final IBaseClassroomService baseClassroomService;
  51. @GetMapping(value = "/buildingfloorclassroomtree")
  52. @ApiOperation(value = "楼栋楼层教室树")
  53. @SaCheckPermission("studentmanager:detail")
  54. public RT<List<PlaceTreeVo>> buildingFloorClassroomTree() {
  55. List<PlaceTreeVo> voList = new ArrayList<>();
  56. long customUniqueId = 101010;
  57. //获取楼栋信息记录
  58. MPJLambdaWrapper<BaseOfficeBuild> baseOfficeBuildMPJLambdaWrapper = new MPJLambdaWrapper<>();
  59. baseOfficeBuildMPJLambdaWrapper
  60. .select(BaseOfficeBuild::getId)
  61. .selectAs(DictionaryDetail::getName, BaseOfficeBuildVo::getBuildTypeCn)
  62. .select(BaseOfficeBuild.class,x -> VoToColumnUtil.fieldsToColumns(BaseOfficeBuildVo.class).contains(x.getProperty()))
  63. .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, BaseOfficeBuild::getBuildType)
  64. ;
  65. List<BaseOfficeBuildVo> baseOfficeBuildVoList = baseOfficeBuildService.selectJoinList(BaseOfficeBuildVo.class, baseOfficeBuildMPJLambdaWrapper);
  66. Map<String, List<BaseOfficeBuildVo>> officeBuildByAddress = baseOfficeBuildVoList.stream().collect(Collectors.groupingBy(BaseOfficeBuildVo::getAddress));
  67. for (Map.Entry<String, List<BaseOfficeBuildVo>> entry : officeBuildByAddress.entrySet()){
  68. String key = entry.getKey();
  69. List<BaseOfficeBuildVo> value = entry.getValue();
  70. voList.add(new PlaceTreeVo(){{
  71. setId(8888L);
  72. setName(key);
  73. }});
  74. if(!value.isEmpty()){
  75. Map<String, List<BaseOfficeBuildVo>> officeBuildByType = value.stream().collect(Collectors.groupingBy(BaseOfficeBuildVo::getBuildType));
  76. for (Map.Entry<String, List<BaseOfficeBuildVo>> e : officeBuildByType.entrySet()){
  77. String k = e.getKey();
  78. List<BaseOfficeBuildVo> v = e.getValue();
  79. PlaceTreeVo placeTreeVo = new PlaceTreeVo();
  80. placeTreeVo.setId(customUniqueId);
  81. if(!v.isEmpty() && v.get(0) != null){
  82. placeTreeVo.setName(v.get(0).getBuildTypeCn());
  83. }
  84. placeTreeVo.setParentId(8888L);
  85. voList.add(placeTreeVo);
  86. if(!v.isEmpty()){
  87. for (BaseOfficeBuildVo baseOfficeBuildVo : v){
  88. PlaceTreeVo p = new PlaceTreeVo();
  89. p.setId(baseOfficeBuildVo.getId());
  90. p.setName(baseOfficeBuildVo.getName());
  91. p.setParentId(customUniqueId);
  92. voList.add(p);
  93. }
  94. }
  95. customUniqueId++;
  96. }
  97. }
  98. }
  99. //获取教室信息
  100. List<BaseClassroom> baseClassroomList = baseClassroomService.list();
  101. Map<Long, List<BaseClassroom>> baseClassroomMap = baseClassroomList.stream().collect(Collectors.groupingBy(BaseClassroom::getOfficeBuildId));
  102. for (Map.Entry<Long, List<BaseClassroom>> entry : baseClassroomMap.entrySet()){
  103. Long key = entry.getKey();
  104. List<BaseClassroom> value = entry.getValue();
  105. if(!value.isEmpty()){
  106. Map<Integer, List<BaseClassroom>> baseClassroomByFloorNum = value.stream().collect(Collectors.groupingBy(BaseClassroom::getFloorNum));
  107. for (Map.Entry<Integer, List<BaseClassroom>> e : baseClassroomByFloorNum.entrySet()){
  108. Integer k = e.getKey();
  109. List<BaseClassroom> v = e.getValue();
  110. PlaceTreeVo placeTreeVo = new PlaceTreeVo();
  111. placeTreeVo.setId(customUniqueId);
  112. placeTreeVo.setName(k + "楼");
  113. placeTreeVo.setParentId(key);
  114. voList.add(placeTreeVo);
  115. if(!v.isEmpty()){
  116. for (BaseClassroom baseClassroom : v){
  117. PlaceTreeVo p = new PlaceTreeVo();
  118. p.setId(baseClassroom.getId());
  119. p.setName(baseClassroom.getName());
  120. p.setParentId(customUniqueId);
  121. voList.add(p);
  122. }
  123. }
  124. customUniqueId++;
  125. }
  126. }
  127. }
  128. List<PlaceTreeVo> treeVoList = TreeUtil.build(voList);
  129. return RT.ok(treeVoList);
  130. }
  131. @GetMapping(value = "/page")
  132. @ApiOperation(value="资产管理列表(分页)")
  133. @SaCheckPermission("wfassetmanage:detail")
  134. public RT<PageOutput<WfAssetManagePageVo>> page(@Valid WfAssetManagePageDto dto){
  135. IPage<WfAssetManagePageVo> page = wfAssetManageService.getPage(dto);
  136. PageOutput<WfAssetManagePageVo> pageOutput = ConventPage.getPageOutput(page, WfAssetManagePageVo.class);
  137. return RT.ok(pageOutput);
  138. }
  139. @GetMapping(value = "/info")
  140. @ApiOperation(value="根据id查询资产管理信息")
  141. @SaCheckPermission("wfassetmanage:detail")
  142. public RT<WfAssetManageVo> info(@RequestParam Long id){
  143. WfAssetManage wfAssetManage = wfAssetManageService.getById(id);
  144. if (wfAssetManage == null) {
  145. return RT.error("找不到此数据!");
  146. }
  147. return RT.ok(BeanUtil.toBean(wfAssetManage, WfAssetManageVo.class));
  148. }
  149. @PostMapping
  150. @ApiOperation(value = "新增资产管理")
  151. @SaCheckPermission("wfassetmanage:add")
  152. public RT<Boolean> add(@Valid @RequestBody AddWfAssetManageDto dto){
  153. WfAssetManage wfAssetManage = BeanUtil.toBean(dto, WfAssetManage.class);
  154. boolean isSuccess = wfAssetManageService.save(wfAssetManage);
  155. return RT.ok(isSuccess);
  156. }
  157. @PutMapping
  158. @ApiOperation(value = "修改资产管理")
  159. @SaCheckPermission("wfassetmanage:edit")
  160. public RT<Boolean> update(@Valid @RequestBody UpdateWfAssetManageDto dto){
  161. WfAssetManage wfAssetManage = BeanUtil.toBean(dto, WfAssetManage.class);
  162. return RT.ok(wfAssetManageService.updateById(wfAssetManage));
  163. }
  164. @DeleteMapping
  165. @ApiOperation(value = "删除资产管理")
  166. @SaCheckPermission("wfassetmanage:delete")
  167. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
  168. return RT.ok(wfAssetManageService.removeBatchByIds(ids));
  169. }
  170. // @PostMapping("/select-record-query")
  171. // @ApiOperation(value = "选中记录导出")
  172. // public ResponseEntity<byte[]> assetManageSelectRecordQuery(@Valid @RequestBody WfAssetManageSelectRecordQueryDto dto) {
  173. @GetMapping("/select-record-query")
  174. @ApiOperation(value = "选中记录导出")
  175. public ResponseEntity<byte[]> textbookClaimExportQuery(@Valid WfAssetManageSelectRecordQueryDto dto) {
  176. ByteArrayOutputStream bot = wfAssetManageService.listWfAssetManageSelectRecordQuery(dto);
  177. return RT.fileStream(bot.toByteArray(), "TextbookClaim" + ExcelTypeEnum.XLSX.getValue());
  178. }
  179. // @PostMapping("/conditional-search-query")
  180. // @ApiOperation(value = "条件搜索导出")
  181. // public ResponseEntity<byte[]> assetManageConditionalSearchQuery(@Valid @RequestBody WfAssetManageConditionalSearchQueryDto dto) {
  182. @GetMapping("/conditional-search-query")
  183. @ApiOperation(value = "条件搜索导出")
  184. public ResponseEntity<byte[]> textbookClaimExportQuery(@Valid WfAssetManageConditionalSearchQueryDto dto) {
  185. ByteArrayOutputStream bot = wfAssetManageService.listWfAssetManageConditionalSearchQuery(dto);
  186. return RT.fileStream(bot.toByteArray(), "WfAssetManage" + ExcelTypeEnum.XLSX.getValue());
  187. }
  188. }