|
|
@@ -1,7 +1,16 @@
|
|
|
package com.izouma.zhumj.web;
|
|
|
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.ExcelWriter;
|
|
|
+import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
+import com.alibaba.excel.write.metadata.WriteTable;
|
|
|
+import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
|
|
|
+import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.izouma.zhumj.domain.ShiftHandover;
|
|
|
import com.izouma.zhumj.domain.User;
|
|
|
+import com.izouma.zhumj.domain.sale.BillDetail;
|
|
|
import com.izouma.zhumj.dto.PageQuery;
|
|
|
import com.izouma.zhumj.dto.report.ShiftReport;
|
|
|
import com.izouma.zhumj.excel.CellModel;
|
|
|
@@ -13,17 +22,23 @@ import com.izouma.zhumj.service.ShiftHandoverService;
|
|
|
import com.izouma.zhumj.utils.DateTimeUtils;
|
|
|
import com.izouma.zhumj.utils.ObjUtils;
|
|
|
import com.izouma.zhumj.utils.SecurityUtils;
|
|
|
+import com.izouma.zhumj.utils.excel.BooleanConverter;
|
|
|
import com.izouma.zhumj.utils.excel.ExcelUtils;
|
|
|
+import com.izouma.zhumj.utils.excel.LocalDateConverter;
|
|
|
+import com.izouma.zhumj.utils.excel.LocalDateTimeConverter;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.function.BiConsumer;
|
|
|
@@ -31,17 +46,11 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping("/shiftHandover")
|
|
|
+@AllArgsConstructor
|
|
|
public class ShiftHandoverController extends BaseController {
|
|
|
- /*generatedStart*/
|
|
|
- @Autowired
|
|
|
private ShiftHandoverService shiftHandoverService;
|
|
|
+ private ShiftHandoverRepo shiftHandoverRepo;
|
|
|
|
|
|
- @Autowired
|
|
|
- private ShiftHandoverRepo shiftHandoverRepo;
|
|
|
- /*generatedEnd*/
|
|
|
-
|
|
|
- /*generatedStart*/
|
|
|
- //@PreAuthorize("hasRole('ADMIN')")
|
|
|
@PostMapping("/save")
|
|
|
public ShiftHandover save(@RequestBody ShiftHandover record) {
|
|
|
if (record.getId() != null) {
|
|
|
@@ -52,8 +61,6 @@ public class ShiftHandoverController extends BaseController {
|
|
|
return shiftHandoverRepo.save(record);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- //@PreAuthorize("hasRole('ADMIN')")
|
|
|
@GetMapping("/all")
|
|
|
public Page<ShiftHandover> all(PageQuery pageQuery) {
|
|
|
return shiftHandoverRepo.findAll(toSpecification(pageQuery, ShiftHandover.class), toPageRequest(pageQuery));
|
|
|
@@ -75,7 +82,6 @@ public class ShiftHandoverController extends BaseController {
|
|
|
List<ShiftHandover> data = all(pageQuery).getContent();
|
|
|
ExcelUtils.export(response, data);
|
|
|
}
|
|
|
- /*generatedEnd*/
|
|
|
|
|
|
@GetMapping("/shiftStartTime")
|
|
|
public LocalDateTime shiftStartTime(@RequestParam Long storeId) {
|
|
|
@@ -237,22 +243,81 @@ public class ShiftHandoverController extends BaseController {
|
|
|
.to(response.getOutputStream());
|
|
|
}
|
|
|
|
|
|
- private int min(int a, int b) {
|
|
|
- if (a < b) {
|
|
|
- int t = a;
|
|
|
- a = b;
|
|
|
- b = t;
|
|
|
- }
|
|
|
- while (b != 0) {
|
|
|
- if (a == b) {
|
|
|
- return a;
|
|
|
- } else {
|
|
|
- int k = a % b;
|
|
|
- a = b;
|
|
|
- b = k;
|
|
|
- }
|
|
|
- }
|
|
|
- return a;
|
|
|
+ @GetMapping("/excel/{id}")
|
|
|
+ @ResponseBody
|
|
|
+ public void excel(@PathVariable Long id, HttpServletResponse response) throws IOException {
|
|
|
+ ShiftHandover shiftHandover = shiftHandoverRepo.findById(id).orElseThrow(new BusinessException("无记录"));
|
|
|
+ JSONObject jsonObject = JSON.parseObject(shiftHandover.getFeeReport());
|
|
|
+ export(jsonObject, response);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/excelData")
|
|
|
+ @ResponseBody
|
|
|
+ public void excelData(@RequestBody JSONObject data, HttpServletResponse response) throws IOException {
|
|
|
+ export(data, response);
|
|
|
}
|
|
|
+
|
|
|
+ private void export(JSONObject jsonObject, HttpServletResponse response) throws IOException {
|
|
|
+ List<ShiftReport.FeeExcel> feeExcelList = jsonObject.getJSONArray("feeList")
|
|
|
+ .toJavaList(ShiftReport.Fee.class)
|
|
|
+ .stream()
|
|
|
+ .map(fee -> ShiftReport.FeeExcel.builder()
|
|
|
+ .feeName(fee.getFeeName())
|
|
|
+ .amount(fee.getAmount())
|
|
|
+ .adjust(fee.getAdjust())
|
|
|
+ .total(fee.getAmount().add(fee.getAdjust()))
|
|
|
+ .build())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<ShiftReport.DepositDetail> depositDetailList = jsonObject.getJSONArray("depositDetailList")
|
|
|
+ .toJavaList(ShiftReport.DepositDetail.class);
|
|
|
+ List<ShiftReport.DepositDetailExcel> depositDetailExcelList = depositDetailList.stream()
|
|
|
+ .map(depositDetail -> ShiftReport.DepositDetailExcel.builder()
|
|
|
+ .type(depositDetail.isRefund() ? "退还" : "收取")
|
|
|
+ .amount(depositDetail.getAmount())
|
|
|
+ .name(depositDetail.getName())
|
|
|
+ .room(depositDetail.getRoomName())
|
|
|
+ .time(depositDetail.getTime())
|
|
|
+ .build())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ ShiftReport.DepositExcel depositExcel = jsonObject.getObject("deposit", ShiftReport.DepositExcel.class);
|
|
|
+ List<ShiftReport.FeeDetailExcel> feeDetailExcelList = jsonObject.getJSONArray("feeDetailList")
|
|
|
+ .toJavaList(ShiftReport.Fee.class)
|
|
|
+ .stream()
|
|
|
+ .map(fee -> ShiftReport.FeeDetailExcel.builder()
|
|
|
+ .feeName(fee.getFeeName())
|
|
|
+ .amount(fee.getAmount())
|
|
|
+ .time(fee.getTime())
|
|
|
+ .build()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ String fileName = "交班报表.xlsx";
|
|
|
+ response.setContentType("application/vnd.ms-excel");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ response.setHeader("Content-Disposition",
|
|
|
+ "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()));
|
|
|
+ response.setHeader("File-Name", URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()));
|
|
|
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
|
|
|
+ .registerConverter(new LocalDateConverter())
|
|
|
+ .registerConverter(new LocalDateTimeConverter())
|
|
|
+ .registerConverter(new BooleanConverter())
|
|
|
+ .registerWriteHandler(ExcelUtils.customStyle())
|
|
|
+ .registerWriteHandler(new SimpleRowHeightStyleStrategy((short) 20, (short) 20))
|
|
|
+ .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
|
|
|
+ .build();
|
|
|
+
|
|
|
+ WriteSheet writeSheet = EasyExcel.writerSheet("交班报表").needHead(Boolean.TRUE).build();
|
|
|
+ WriteTable writeTable0 = EasyExcel.writerTable(0).head(ShiftReport.FeeExcel.class).needHead(true).build();
|
|
|
+ WriteTable writeTable1 = EasyExcel.writerTable(1).head(ShiftReport.DepositExcel.class).needHead(true).build();
|
|
|
+ WriteTable writeTable2 = EasyExcel.writerTable(2).head(ShiftReport.FeeDetailExcel.class).needHead(true).build();
|
|
|
+ WriteTable writeTable3 = EasyExcel.writerTable(3)
|
|
|
+ .head(ShiftReport.DepositDetailExcel.class)
|
|
|
+ .needHead(true)
|
|
|
+ .build();
|
|
|
+ excelWriter.write(feeExcelList, writeSheet, writeTable0);
|
|
|
+ excelWriter.write(Collections.singletonList(depositExcel), writeSheet, writeTable1);
|
|
|
+ excelWriter.write(feeDetailExcelList, writeSheet, writeTable2);
|
|
|
+ excelWriter.write(depositDetailExcelList, writeSheet, writeTable3);
|
|
|
+ excelWriter.finish();
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|