package com.example.controller;
|
|
import com.alibaba.excel.EasyExcel;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.example.common.PageResult;
|
import com.example.common.Result;
|
import com.example.entity.DataExcel;
|
import com.example.excel.DataExcelImport;
|
import com.example.security.UserContext;
|
import com.example.service.DataExcelService;
|
import com.example.service.DepartmentService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.math.BigDecimal;
|
import java.net.URLEncoder;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@RestController
|
@RequestMapping("/api/data-excel")
|
public class DataExcelController {
|
|
@Autowired
|
private DataExcelService dataExcelService;
|
|
@Autowired
|
private DepartmentService departmentService;
|
|
@GetMapping("/page")
|
public Result<PageResult<DataExcel>> page(
|
@RequestParam(defaultValue = "1") Long current,
|
@RequestParam(defaultValue = "10") Long size,
|
@RequestParam(required = false) String unitName,
|
@RequestParam(required = false) String transactionNo,
|
@RequestParam(required = false) String accountingPeriod) {
|
String currentDeptCode = UserContext.getCurrentDeptCode();
|
List<String> permissionDeptCodes = departmentService.getChildDeptCodes(currentDeptCode);
|
IPage<DataExcel> page = dataExcelService.getDataExcelPage(current, size, unitName, transactionNo, accountingPeriod, permissionDeptCodes);
|
return Result.success(new PageResult<>(page.getTotal(), current, size, page.getRecords()));
|
}
|
|
@GetMapping("/{id}")
|
public Result<DataExcel> getById(@PathVariable Long id) {
|
DataExcel dataExcel = dataExcelService.getById(id);
|
if (dataExcel == null) {
|
return Result.error("数据不存在");
|
}
|
String currentDeptCode = UserContext.getCurrentDeptCode();
|
List<String> permissionDeptCodes = departmentService.getChildDeptCodes(currentDeptCode);
|
if (!permissionDeptCodes.contains(dataExcel.getUnitCode())) {
|
return Result.error("无权限查看该数据");
|
}
|
return Result.success(dataExcel);
|
}
|
|
@PostMapping
|
public Result<Boolean> save(@RequestBody DataExcel dataExcel) {
|
String currentDeptCode = UserContext.getCurrentDeptCode();
|
List<String> permissionDeptCodes = departmentService.getChildDeptCodes(currentDeptCode);
|
if (!permissionDeptCodes.contains(dataExcel.getUnitCode())) {
|
return Result.error("无权限在该部门创建数据");
|
}
|
return Result.success(dataExcelService.save(dataExcel));
|
}
|
|
@PutMapping
|
public Result<Boolean> update(@RequestBody DataExcel dataExcel) {
|
DataExcel existData = dataExcelService.getById(dataExcel.getId());
|
if (existData == null) {
|
return Result.error("数据不存在");
|
}
|
String currentDeptCode = UserContext.getCurrentDeptCode();
|
List<String> permissionDeptCodes = departmentService.getChildDeptCodes(currentDeptCode);
|
if (!permissionDeptCodes.contains(existData.getUnitCode())) {
|
return Result.error("无权限修改该数据");
|
}
|
if (!permissionDeptCodes.contains(dataExcel.getUnitCode())) {
|
return Result.error("无权限将数据修改到该部门");
|
}
|
return Result.success(dataExcelService.updateById(dataExcel));
|
}
|
|
@DeleteMapping("/{id}")
|
public Result<Boolean> delete(@PathVariable Long id) {
|
DataExcel dataExcel = dataExcelService.getById(id);
|
if (dataExcel == null) {
|
return Result.error("数据不存在");
|
}
|
String currentDeptCode = UserContext.getCurrentDeptCode();
|
List<String> permissionDeptCodes = departmentService.getChildDeptCodes(currentDeptCode);
|
if (!permissionDeptCodes.contains(dataExcel.getUnitCode())) {
|
return Result.error("无权限删除该数据");
|
}
|
return Result.success(dataExcelService.removeById(id));
|
}
|
|
@PostMapping("/import")
|
public Result<String> importData(@RequestParam("file") MultipartFile file) {
|
if (file.isEmpty()) {
|
return Result.error("上传文件不能为空");
|
}
|
String currentDeptCode = UserContext.getCurrentDeptCode();
|
List<String> permissionDeptCodes = departmentService.getChildDeptCodes(currentDeptCode);
|
String result = dataExcelService.importData(file, permissionDeptCodes);
|
if (result.startsWith("成功")) {
|
return Result.success(result);
|
} else {
|
return Result.error(result);
|
}
|
}
|
|
@GetMapping("/template")
|
public void downloadTemplate(HttpServletResponse response) throws IOException {
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
response.setCharacterEncoding("utf-8");
|
String fileName = URLEncoder.encode("交易流水数据导入模版", "UTF-8").replaceAll("\\+", "%20");
|
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
|
|
List<DataExcelImport> templateData = new ArrayList<>();
|
DataExcelImport example = new DataExcelImport();
|
example.setSortNo(1);
|
example.setSeqNo(1);
|
example.setSecondaryUnit("集团本部");
|
example.setUnitCode("001001");
|
example.setUnitName("冀中能源集团有限责任公司");
|
example.setTransactionNo("202501172200276");
|
example.setSummary("财务公司户转农发行广支户");
|
example.setAmount(new BigDecimal("50000000.00"));
|
example.setAccountingPeriod("2025-01");
|
example.setVoucherNo("银行-33");
|
example.setBpContractNo("#N/A");
|
example.setContractCenterNo("#N/A");
|
example.setBpInvoiceNo("#N/A");
|
example.setGkInvoiceNo("#N/A");
|
example.setBusinessRelation("#N/A");
|
example.setRemark("");
|
templateData.add(example);
|
|
EasyExcel.write(response.getOutputStream(), DataExcelImport.class)
|
.sheet("交易流水数据")
|
.doWrite(templateData);
|
}
|
}
|