diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 35070229..67cb3d3c 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -77,6 +77,8 @@ public class ShiroConfig { } // 2024.3.26 黄晖添加 + // 2024.10.23 林利弘添加 +// filterChainDefinitionMap.put("/cetDataImport/cas/client/validateLogin", "anon"); //cas验证登录 // 配置不会被拦截的链接 顺序判断 @@ -138,7 +140,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/jmreport/**", "anon"); filterChainDefinitionMap.put("/**/*.js.map", "anon"); filterChainDefinitionMap.put("/**/*.css.map", "anon"); - + //拖拽仪表盘设计器排除 filterChainDefinitionMap.put("/drag/view", "anon"); filterChainDefinitionMap.put("/drag/page/queryById", "anon"); @@ -273,7 +275,7 @@ public class ShiroConfig { return sentinelManager; } - + // redis 单机支持,在集群为空,或者集群无机器时候使用 add by jzyadmin@163.com if (lettuceConnectionFactory.getClusterConfiguration() == null || lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().isEmpty()) { RedisManager redisManager = new RedisManager(); diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetDataImportController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetDataImportController.java index 2ed6f4c0..ab80a41f 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetDataImportController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetDataImportController.java @@ -1,16 +1,21 @@ package org.jeecg.modules.controller; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.service.CetDataImport; +import org.jeecg.modules.utils.Base64DecodedMultipartFile; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; + import javax.servlet.http.HttpServletResponse; +import java.util.Base64; /** * Created with IntelliJ IDEA. @@ -39,7 +44,21 @@ public class CetDataImportController { **/ @RequestMapping("dbfImport") @ApiOperation("DBF数据导入") - public Result DBFImport(@RequestParam("file") MultipartFile file, @RequestParam("batch") String batch, @RequestParam("level") String level) { + public Result DBFImport(@RequestBody JSONObject jsonObject) { + byte[] fileBytes; + String batch = jsonObject.getString("batch"); + String fileName = (String) jsonObject.get("fileName"); + String level = jsonObject.getString("level"); + String fileContent = jsonObject.getString("fileContent"); + try { + // 移除 data URL 前缀 + String base64Data = fileContent.split(",")[1]; + fileBytes = Base64.getDecoder().decode(base64Data); + } catch (Exception e) { + return Result.error("文件解码失败"); + } + MultipartFile file = new Base64DecodedMultipartFile(fileBytes, fileName); + return cetDataImport.readDBF(file, batch, level); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet_4Controller.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet_4Controller.java index fb632e03..19ea7382 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet_4Controller.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet_4Controller.java @@ -25,128 +25,126 @@ import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; import org.apache.shiro.authz.annotation.RequiresPermissions; - /** +/** * @Description: cet_4 * @Author: jeecg-boot - * @Date: 2024-03-26 + * @Date: 2024-03-26 * @Version: V1.0 */ -@Api(tags="cet_4") +@Api(tags = "cet_4") @RestController @RequestMapping("/cet_4") @Slf4j public class Cet_4Controller extends JeecgController { - @Autowired - private ICet_4Service cet_4Service; + @Autowired + private ICet_4Service cet_4Service; - - - /** - * 分页列表查询 - * - * @param cet_4 - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "cet_4-分页列表查询") - @ApiOperation(value="cet_4-分页列表查询", notes="cet_4-分页列表查询") - @GetMapping(value = "/list") - public Result> queryPageList(Cet_4 cet_4, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cet_4, req.getParameterMap()); - Page page = new Page(pageNo, pageSize); - IPage pageList = cet_4Service.page(page, queryWrapper); - return Result.OK(pageList); - } - - /** - * 添加 - * - * @param cet_4 - * @return - */ - @AutoLog(value = "cet_4-添加") - @ApiOperation(value="cet_4-添加", notes="cet_4-添加") - @RequiresPermissions("cet:cet_4:add") - @PostMapping(value = "/add") - public Result add(@RequestBody Cet_4 cet_4) { - cet_4Service.save(cet_4); - return Result.OK("添加成功!"); - } - - /** - * 编辑 - * - * @param cet_4 - * @return - */ - @AutoLog(value = "cet_4-编辑") - @ApiOperation(value="cet_4-编辑", notes="cet_4-编辑") - @RequiresPermissions("cet:cet_4:edit") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result edit(@RequestBody Cet_4 cet_4) { - cet_4Service.updateById(cet_4); - return Result.OK("编辑成功!"); - } - - /** - * 通过id删除 - * - * @param id - * @return - */ - @AutoLog(value = "cet_4-通过id删除") - @ApiOperation(value="cet_4-通过id删除", notes="cet_4-通过id删除") - @RequiresPermissions("cet:cet_4:delete") - @DeleteMapping(value = "/delete") - public Result delete(@RequestParam(name="id",required=true) String id) { - cet_4Service.removeById(id); - return Result.OK("删除成功!"); - } - - /** - * 批量删除 - * - * @param ids - * @return - */ - @AutoLog(value = "cet_4-批量删除") - @ApiOperation(value="cet_4-批量删除", notes="cet_4-批量删除") - @RequiresPermissions("cet:cet_4:deleteBatch") - @DeleteMapping(value = "/deleteBatch") - public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.cet_4Service.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); - } - - /** - * 通过id查询 - * - * @param id - * @return - */ - //@AutoLog(value = "cet_4-通过id查询") - @ApiOperation(value="cet_4-通过id查询", notes="cet_4-通过id查询") - @GetMapping(value = "/queryById") - public Result queryById(@RequestParam(name="id",required=true) String id) { - Cet_4 cet_4 = cet_4Service.getById(id); - if(cet_4==null) { - return Result.error("未找到对应数据"); - } - return Result.OK(cet_4); - } - /** - * 导出excel - * - * @param request - * @param cet_4 - */ + * 分页列表查询 + * + * @param cet_4 + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "cet_4-分页列表查询") + @ApiOperation(value = "cet_4-分页列表查询", notes = "cet_4-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(Cet_4 cet_4, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cet_4, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = cet_4Service.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param cet_4 + * @return + */ + @AutoLog(value = "cet_4-添加") + @ApiOperation(value = "cet_4-添加", notes = "cet_4-添加") + @RequiresPermissions("cet:cet_4:add") + @PostMapping(value = "/add") + public Result add(@RequestBody Cet_4 cet_4) { + cet_4Service.save(cet_4); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param cet_4 + * @return + */ + @AutoLog(value = "cet_4-编辑") + @ApiOperation(value = "cet_4-编辑", notes = "cet_4-编辑") + @RequiresPermissions("cet:cet_4:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody Cet_4 cet_4) { + cet_4Service.updateById(cet_4); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "cet_4-通过id删除") + @ApiOperation(value = "cet_4-通过id删除", notes = "cet_4-通过id删除") + @RequiresPermissions("cet:cet_4:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + cet_4Service.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "cet_4-批量删除") + @ApiOperation(value = "cet_4-批量删除", notes = "cet_4-批量删除") + @RequiresPermissions("cet:cet_4:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.cet_4Service.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "cet_4-通过id查询") + @ApiOperation(value = "cet_4-通过id查询", notes = "cet_4-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + Cet_4 cet_4 = cet_4Service.getById(id); + if (cet_4 == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(cet_4); + } + + /** + * 导出excel + * + * @param request + * @param cet_4 + */ @RequiresPermissions("cet:cet_4:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, Cet_4 cet_4) { @@ -154,24 +152,30 @@ public class Cet_4Controller extends JeecgController { } /** - * 通过excel导入数据 - * - * @param request - * @param response - * @return - */ + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ @RequiresPermissions("cet:cet_4:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, Cet_4.class); } - /** - * 依据学生id和姓名获取四级成绩 - */ - @RequestMapping("/getDataByStudent") - public Result getDataByStudent(@RequestBody JSONObject jsonObject){ - return cet_4Service.getDataByStudent(jsonObject); - } + /** + * 依据学生id和姓名获取四级成绩 + */ + @RequestMapping("/getDataByStudent") + public Result getDataByStudent(@RequestBody JSONObject jsonObject) { + return cet_4Service.getDataByStudent(jsonObject); + } + + @RequestMapping("loadImportDataList") + public Result loadImportDataList() { + return cet_4Service.loadImportDataList(); + } + } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet_6Controller.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet_6Controller.java index 5acf8bdd..1fbba1a5 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet_6Controller.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet_6Controller.java @@ -4,6 +4,7 @@ import java.util.Arrays; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.alibaba.fastjson.JSONObject; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.entity.Cet_6; @@ -167,4 +168,9 @@ public class Cet_6Controller extends JeecgController { return cet_6Service.getGrateRate(); } + @RequestMapping("loadImportDataList") + public Result loadImportDataList() { + return cet_6Service.loadImportDataList(); + } + } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CenterService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CenterService.java index 8d31f021..8698e01c 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CenterService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CenterService.java @@ -7,6 +7,8 @@ import org.jeecg.modules.entity.Cet_4; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.function.Function; /** * @Description: cet_6 @@ -28,4 +30,6 @@ public interface CenterService extends IService { Result getCollegeMajor(); List getEntryDateByBatch(Date batch); + + Map dealList(List list, Function mapper); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CetDataImport.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CetDataImport.java index d4cff8ce..e68b449e 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CetDataImport.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CetDataImport.java @@ -131,7 +131,6 @@ public class CetDataImport { cet4List.add(cet4); } if (cet4List.size() >= 500) { - cet4Service.save(cet4); cet4Service.saveBatch(cet4List); log.info("Cet学生{}", cet4); cet4List.clear(); @@ -141,7 +140,6 @@ public class CetDataImport { cet6List.add(cet6); } if (cet6List.size() >= 500) { - cet6Service.save(cet6); cet6Service.saveBatch(cet6List); cet6List.clear(); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_4Service.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_4Service.java index 12fcbc85..7ee23944 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_4Service.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_4Service.java @@ -9,6 +9,8 @@ import org.jeecg.modules.entity.Cet_4; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Date; +import java.util.List; +import java.util.Map; /** * @Description: cet_4 @@ -35,4 +37,7 @@ public interface ICet_4Service extends IService { Result getRateByMajorAndLastestBatch(getRateByMajorAndLastestBatchDto getRateByMajorAndLastestBatchParam); Result getRateByEntryDate(getRateByEntryDateDto getRateByEntryDateDtoParams); + + Result loadImportDataList(); + List getJsonObjects(Map map); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_6Service.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_6Service.java index a45b0784..3b2f13c2 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_6Service.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_6Service.java @@ -16,4 +16,6 @@ public interface ICet_6Service extends IService { Result getRate(Cet_6 data); Result getGrateRate(); + Result loadImportDataList(); + } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java index 71628552..e4a8efd1 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java @@ -130,6 +130,12 @@ public class CenterServiceImpl extends ServiceImpl implement return res; } + @Override + public Map dealList(List list, Function mapper) { + return list.stream().collect(Collectors.groupingBy(mapper,Collectors.counting())); + } + + /** * 统计四级表和六级表中存在的批次 */ diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java index 2a165ffb..b45304ad 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java @@ -17,6 +17,8 @@ import org.jeecg.modules.mapper.Cet_4Mapper; import org.jeecg.modules.service.CenterService; import org.jeecg.modules.service.CetCleanService; import org.jeecg.modules.service.ICet_4Service; +import org.jeecg.modules.utils.DateUtil; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -170,7 +172,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements for (Map.Entry stringObjectEntry : list) { jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue()); } - JSONObject gradeByBatch = getGradeByBatch(batch,college); + JSONObject gradeByBatch = getGradeByBatch(batch, college); resultData.put("data", jsonObject); resultData.put("gradeData", gradeByBatch); System.out.println(resultData); @@ -671,6 +673,32 @@ public class Cet_4ServiceImpl extends ServiceImpl implements return Result.ok(result); } + @Override + public Result loadImportDataList() { + List list = list(); + Map map = centerService.dealList(list, Cet_4::getBatch); + List res = getJsonObjects(map); + return Result.ok(new JSONObject().fluentPut("data", res)); + } + + @NotNull + public List getJsonObjects(Map map) { + List res = new ArrayList<>(); + if (map != null && !map.isEmpty()) { + for (Map.Entry entry : map.entrySet()) { + JSONObject jsonObject = new JSONObject(); + //格式化key为"yyyy-MM-dd" + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + jsonObject.fluentPut("batch", sdf.format(entry.getKey())) + .fluentPut("attendNumber", entry.getValue()); + res.add(jsonObject); + } + } + // res按照batch倒序排序 + res.sort((o1, o2) -> o2.getString("batch").compareTo(o1.getString("batch"))); + return res; + } + /** * 依据学生id和姓名获取四级数据 */ @@ -691,11 +719,11 @@ public class Cet_4ServiceImpl extends ServiceImpl implements } @Override - public JSONObject getGradeByBatch(Date batch,String college) { + public JSONObject getGradeByBatch(Date batch, String college) { //根据批次获取正确的年级 List trueEntryDate = centerService.getEntryDateByBatch(batch); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(!college.equals("全校"),Cet_4::getCollege,college) + wrapper.eq(!college.equals("全校"), Cet_4::getCollege, college) .eq(Cet_4::getBatch, batch); List allStudent = list(wrapper); wrapper.ge(Cet_4::getResult, 425); diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java index 5acde40e..3d1cabf5 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java @@ -1,5 +1,6 @@ package org.jeecg.modules.service.impl; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -9,17 +10,17 @@ import org.jeecg.modules.entity.Cet4_major; import org.jeecg.modules.entity.Cet_4; import org.jeecg.modules.entity.Cet_6; import org.jeecg.modules.mapper.Cet_6Mapper; +import org.jeecg.modules.service.CenterService; import org.jeecg.modules.service.ICet_6Service; +import org.jeecg.modules.utils.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import javax.annotation.Resource; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; /** @@ -38,6 +39,8 @@ public class Cet_6ServiceImpl extends ServiceImpl implements @Autowired Cet_4ServiceImpl cet4Service; @Autowired + CenterService centerService; + @Autowired CetMajorServiceImpl cetMajorService; @Override @@ -105,6 +108,14 @@ public class Cet_6ServiceImpl extends ServiceImpl implements return null; } + @Override + public Result loadImportDataList() { + List list = list(); + Map map = centerService.dealList(list, Cet_6::getBatch); + List res =cet4Service.getJsonObjects(map); + return Result.ok(new JSONObject().fluentPut("data", res)); + } + private long getNum(Cet_6 cet) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/utils/Base64DecodedMultipartFile.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/utils/Base64DecodedMultipartFile.java new file mode 100644 index 00000000..6abf33f7 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/utils/Base64DecodedMultipartFile.java @@ -0,0 +1,70 @@ +package org.jeecg.modules.utils; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.web.multipart.MultipartFile; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/10/23/17:16 + * @Description: + */ +public class Base64DecodedMultipartFile implements MultipartFile { + + private final byte[] fileContent; + private final String header; + + public Base64DecodedMultipartFile(byte[] fileContent, String header) { + this.fileContent = fileContent; + this.header = header; + } + + @Override + public String getName() { + // 返回文件名 + return header; + } + + @Override + public String getOriginalFilename() { + // 返回文件名 + return header; + } + + @Override + public String getContentType() { + // 返回文件类型 + return "application/octet-stream"; + } + + @Override + public boolean isEmpty() { + return fileContent == null || fileContent.length == 0; + } + + @Override + public long getSize() { + return fileContent.length; + } + + @Override + public byte[] getBytes() throws IOException { + return fileContent; + } + + @Override + public InputStream getInputStream() throws IOException { + return new ByteArrayInputStream(fileContent); + } + + @Override + public void transferTo(File dest) throws IOException, IllegalStateException { + Files.write(dest.toPath(), fileContent); + } +}