From 69a1b3bf45738f048361ee4ccb6bdc64fce35720 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 12 三月 2025 11:31:46 +0800
Subject: [PATCH] 更新

---
 server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/BookingsCloudController.java |  221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 221 insertions(+), 0 deletions(-)

diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/BookingsCloudController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/BookingsCloudController.java
new file mode 100644
index 0000000..26a3e56
--- /dev/null
+++ b/server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/BookingsCloudController.java
@@ -0,0 +1,221 @@
+package com.doumee.cloud.admin;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.CloudRequiredPermission;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.service.business.third.model.ApiResponse;
+import com.doumee.service.business.third.model.LoginUserInfo;
+import com.doumee.service.business.third.model.PageData;
+import com.doumee.service.business.third.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.model.Bookings;
+import com.doumee.dao.business.vo.RoomStatisticsVo;
+import com.doumee.dao.system.dto.UserStatisticsDTO;
+import com.doumee.dao.system.vo.UserStatisticsVo;
+import com.doumee.dao.web.response.DateTimeResourceDate;
+import com.doumee.dao.web.response.MeetingDetailResponse;
+import com.doumee.service.business.BookingsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/04 18:18
+ */
+@Api(tags = "浼氳瀹ら瀹氫俊鎭〃")
+@RestController
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/bookings")
+public class BookingsCloudController extends BaseController {
+
+    @Autowired
+    private BookingsService bookingsService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @CloudRequiredPermission("business:bookings:create")
+    public ApiResponse create(@RequestBody Bookings bookings,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        LoginUserInfo user = getLoginUser(token);
+        bookings.setLoginUserInfo(user);
+        bookings.setCreator(user.getId());
+        return ApiResponse.success(bookingsService.create(bookings));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @CloudRequiredPermission("business:bookings:delete")
+    public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        bookingsService.deleteById(id,this.getLoginUser(token));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @CloudRequiredPermission("business:bookings:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray ){
+            idList.add(Integer.valueOf(id));
+        }
+        bookingsService.deleteByIdInBatch(idList,this.getLoginUser(token));
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @CloudRequiredPermission("business:bookings:update")
+    public ApiResponse updateById(@RequestBody Bookings bookings,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        LoginUserInfo user = getLoginUser(token);
+        bookings.setLoginUserInfo(user);
+        bookings.setEditor(user.getId());
+        bookingsService.updateById(bookings);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @CloudRequiredPermission("business:bookings:query")
+    public ApiResponse<PageData<Bookings>> findPage (@RequestBody PageWrap<Bookings> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
+        return ApiResponse.success(bookingsService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @CloudRequiredPermission("business:bookings:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Bookings> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
+        ExcelExporter.build(Bookings.class).export(bookingsService.findPage(pageWrap).getRecords(), "浼氳瀹ら瀹氫俊鎭〃", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @CloudRequiredPermission("business:bookings:query")
+    public ApiResponse<MeetingDetailResponse> findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(bookingsService.getMeetingDetail(id,getLoginUser(token).getId()));
+    }
+
+    @ApiOperation("鏍规嵁鏃ユ湡鍜屼細璁涓婚敭鏌ヨ鍗犵敤淇℃伅")
+    @PostMapping("/getMeetingDetailByDate")
+    @CloudRequiredPermission("business:bookings:query")
+    public ApiResponse<MeetingDetailResponse> getMeetingDetailByDate(@RequestBody Bookings bookings,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(bookingsService.getMeetingDetailByDate(bookings));
+    }
+
+    @ApiOperation("鍙栨秷")
+    @PostMapping("/cancelById")
+    @CloudRequiredPermission("business:bookings:update")
+    public ApiResponse cancelById(@RequestBody Bookings bookings,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        bookings.setLoginUserInfo(this.getLoginUser(token));
+        bookingsService.cancelById(bookings);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("浼氳瀹や娇鐢ㄦ椂闀跨粺璁�")
+    @GetMapping("/getRoomStatistics")
+    @CloudRequiredPermission("business:bookings:update")
+    public ApiResponse<List<RoomStatisticsVo>> getRoomStatistics(@RequestParam Integer yearNum, @RequestParam Integer roomId){
+        return ApiResponse.success(bookingsService.getRoomStatistics(yearNum));
+    }
+
+    @ApiOperation("浜哄憳鍙傚姞浼氳鏃跺父")
+    @PostMapping("/getUserStatistics")
+    @CloudRequiredPermission("business:bookings:update")
+    public ApiResponse<PageData<UserStatisticsVo>> getUserStatistics(@RequestBody PageWrap<UserStatisticsDTO> pageWrap ){
+        return ApiResponse.success(bookingsService.getUserStatistics(pageWrap));
+    }
+
+    @ApiOperation("浜哄憳鍙備細鏃堕暱缁熻瀵煎嚭Excel")
+    @PostMapping("/exportUserStatistics")
+    @CloudRequiredPermission("business:bookings:exportExcel")
+    public void exportUserStatistics (@RequestBody PageWrap<UserStatisticsDTO> pageWrap,HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        List<UserStatisticsVo> records = bookingsService.getUserStatistics(pageWrap).getRecords();
+        if (!CollectionUtils.isEmpty(records)){
+            JSONArray o = (JSONArray) JSON.toJSON(records);
+            o.forEach(s->{
+                JSONObject jsonObject = (JSONObject) s;
+                Set<Map.Entry<String, Object>> entries = jsonObject.entrySet();
+                for (Map.Entry<String, Object> entry:entries){
+
+                    if (entry.getValue() instanceof BigDecimal){
+                        BigDecimal value = (BigDecimal) entry.getValue();
+                        entry.setValue(value.compareTo(value.setScale(0, RoundingMode.DOWN)) > 0 ? value : value.setScale(0, RoundingMode.DOWN));
+                    }
+                }
+            });
+            records = o.toJavaList(UserStatisticsVo.class);
+        }
+        ExcelExporter.build(UserStatisticsVo.class).export(records, "浜哄憳鍙備細鏃堕暱缁熻", response);
+    }
+
+    @ApiOperation("浼氳瀹や娇鐢ㄦ椂闀跨粺璁″鍑篍xcel")
+    @PostMapping("/exportRoomStatistics")
+    @CloudRequiredPermission("business:bookings:exportExcel")
+    public void exportRoomStatistics (@RequestBody PageWrap<UserStatisticsDTO> pageWrap,HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        List<RoomStatisticsVo> roomStatistics = bookingsService.getRoomStatistics(pageWrap.getModel().getYearNum());
+        if (!CollectionUtils.isEmpty(roomStatistics)){
+            JSONArray o = (JSONArray) JSON.toJSON(roomStatistics);
+            o.forEach(s->{
+                JSONObject jsonObject = (JSONObject) s;
+                Set<Map.Entry<String, Object>> entries = jsonObject.entrySet();
+                for (Map.Entry<String, Object> entry:entries){
+
+                    if (entry.getValue() instanceof BigDecimal){
+                        BigDecimal value = (BigDecimal) entry.getValue();
+                        entry.setValue(value.compareTo(value.setScale(0, RoundingMode.DOWN)) > 0 ? value : value.setScale(0, RoundingMode.DOWN));
+                    }
+                }
+            });
+            roomStatistics = o.toJavaList(RoomStatisticsVo.class);
+        }
+        ExcelExporter.build(RoomStatisticsVo.class).export(roomStatistics, "浼氳瀹や娇鐢ㄦ椂闀跨粺璁�", response);
+    }
+
+    @ApiOperation("鍙備笌鐨勯绾︿細璁�")
+    @GetMapping("/reservationCancel")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "1 浠婂ぉ 2 鏈懆", required = true),
+    })
+    public ApiResponse<List<Bookings>> getMyJoinBookingMeet(@RequestParam Integer type){
+
+        LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(00,00,00));
+        LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(23,59,59));
+        if(Constants.equalsInteger(type,Constants.TWO)){
+            startTime =  DateUtil.getMonday();
+            endTime = DateUtil.getSunday();
+        }
+        return ApiResponse.success(bookingsService.getMyJoinBookingMeet(getLoginUser(null).getId(), null,startTime,endTime));
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛褰撳綋鏈堥绾︿細璁儏鍐�
+     * @return
+     */
+    @ApiOperation("鑾峰彇鐢ㄦ埛褰撳綋鏈堥绾︿細璁儏鍐�")
+    @PostMapping("/findMothBookingMeet")
+    public ApiResponse<List<DateTimeResourceDate>> findMothBookingMeet( @RequestParam(required = false) Integer roomId,String dateMonth){
+        return ApiResponse.success(bookingsService.findMothBookingMeet(getLoginUser(null).getId(),roomId,dateMonth));
+    }
+}

--
Gitblit v1.9.3