From 007376fbf9c6cae2420ad50f28eaa43c4b4c127c Mon Sep 17 00:00:00 2001 From: han0 Date: Mon, 11 Nov 2024 17:10:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8D=E5=86=99=E9=A2=84=E7=AE=97?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/controller/BudgetController.java | 153 +++++++++--------- .../java/mjkf/xinke/main/model/db/Budget.java | 2 + src/test/java/mjkf/xinke/LoginTest.java | 2 - src/test/java/mjkf/xinke/UploadFileTest.java | 11 +- 4 files changed, 84 insertions(+), 84 deletions(-) diff --git a/src/main/java/mjkf/xinke/main/controller/BudgetController.java b/src/main/java/mjkf/xinke/main/controller/BudgetController.java index 315dacd..d5602c2 100644 --- a/src/main/java/mjkf/xinke/main/controller/BudgetController.java +++ b/src/main/java/mjkf/xinke/main/controller/BudgetController.java @@ -65,85 +65,79 @@ public class BudgetController { return FuHttpResponse.Builder().dataResponse(budget).build(); } -// @ApiOperation("查询预算") -// @GetMapping("/") -// public HttpResponse list ( -// @ApiParam(value = "每页数量") @RequestParam(name = "size", required = false, defaultValue = "10") Integer size, -// @ApiParam(value = "页码") @RequestParam(name = "current", required = false, defaultValue = "1") Integer current, -// @ApiParam(value = "名称") @RequestParam(value="name", required = false) String name -// ) throws Exception { -// var query = new LambdaQueryWrapper(); -// if (!ObjectUtils.isEmpty(name)) { -// query.like(Budget::getName, name); -// } -// var result = budgetService.page(new Page<>(current, size), query); -// return FuHttpResponse.Builder().dataResponse(result).build(); -// } -// -// @ApiOperation("删除预算") -// @CommonLog("删除预算") -// @DeleteMapping("/") -// public HttpResponse delete ( -// @ApiParam(value = "id列表:1,2,3") @RequestParam(value="ids") String ids -// ) throws Exception { -// var idList = Arrays.asList(ids.split(",")); -// var query = new LambdaQueryWrapper(); -// query.in(Budget::getId, idList); -// budgetService.remove(query); -// return FuHttpResponse.Builder().dataResponse().build(); -// } -// -// @ApiOperation("预算详情") -// @GetMapping("/{id}") -// public HttpResponse detail ( -// @ApiParam(value = "id") @PathVariable("id") Integer id -// ) throws Exception { -// var budget = budgetService.getById(id); -// if (budget == null) { -// throw new NcHttpException(HttpErrorResponseEnum.BUDGET_NOT_FOUND); -// } -// -// var query = new LambdaQueryWrapper(); -// query.eq(BudgetItem::getBudgetId, id); -// var list = budgetItemService.list(query); -// -// var result = new BudgetDetail(budget, list); -// return FuHttpResponse.Builder().dataResponse(result).build(); -// } -// -// @ApiOperation("预算编辑") -// @CommonLog("预算编辑") -// @PutMapping("/{id}") -// public HttpResponse edit ( -// @ApiParam("id") @PathVariable String id, -// @ApiParam("参数") @RequestBody BudgetCreateRequest params -// ) throws Exception { -// params.check(); -// var user = StpLoginUserUtil.getLoginUser(); -// -// var budget = budgetService.getById(id); -// if (budget == null) { -// throw new NcHttpException(HttpErrorResponseEnum.BUDGET_NOT_FOUND); -// } -// -// // 查询各月份材料价格 -// LambdaQueryWrapper query = pricePublishService.getQuery(params); -// // 转换查询结果为键值对 材料id,月份 => 价格 -// var priceMap = pricePublishService.getPriceMapEntryByMaterialIdAndMonth(query); -// // 各月份求和 -// var totalMap = params.getTotalMap(priceMap); -// var budgetItemList = params.getBudgetItemList(priceMap); -// // 入库 -// budget.update(params, user, totalMap); -// budgetService.updateById(budget); -// budgetItemService.remove(new LambdaQueryWrapper().eq(BudgetItem::getBudgetId, id)); -// for (var budgetItem: budgetItemList) { -// budgetItem.setBudgetId(budget.getId()); -// budgetItemService.save(budgetItem); -// } -// -// return FuHttpResponse.Builder().dataResponse(budgetItemList).build(); -// } + @ApiOperation("查询预算") + @GetMapping("/") + public HttpResponse> list ( + @ApiParam(value = "每页数量") @RequestParam(name = "size", required = false, defaultValue = "10") Integer size, + @ApiParam(value = "页码") @RequestParam(name = "current", required = false, defaultValue = "1") Integer current, + @ApiParam(value = "名称") @RequestParam(value="name", required = false) String name + ) throws Exception { + var query = new LambdaQueryWrapper(); + if (!ObjectUtils.isEmpty(name)) { + query.like(Budget::getName, name); + } + var result = budgetService.page(new Page<>(current, size), query); + return FuHttpResponse.Builder().dataResponse(result).build(); + } + + @ApiOperation("删除预算") + @CommonLog("删除预算") + @DeleteMapping("/") + public HttpResponse delete ( + @ApiParam(value = "id列表:1,2,3") @RequestParam(value="ids") String ids + ) throws Exception { + var idList = Arrays.asList(ids.split(",")); + var query = new LambdaQueryWrapper(); + query.in(Budget::getId, idList); + budgetService.remove(query); + return FuHttpResponse.Builder().dataResponse().build(); + } + + @ApiOperation("预算详情") + @GetMapping("/{id}") + public HttpResponse detail ( + @ApiParam(value = "id") @PathVariable("id") Integer id + ) throws Exception { + var budget = budgetService.getById(id); + if (budget == null) { + throw new NcHttpException(HttpErrorResponseEnum.BUDGET_NOT_FOUND); + } + + var query = new LambdaQueryWrapper(); + query.eq(BudgetItem::getBudgetId, id); + var list = budgetItemService.list(query); + + budget.setItems(list); + + return FuHttpResponse.Builder().dataResponse(budget).build(); + } + + @ApiOperation("预算编辑") + @CommonLog("预算编辑") + @PutMapping("/{id}") + public HttpResponse edit ( + @ApiParam("id") @PathVariable String id, + @ApiParam("参数") @RequestBody BudgetCreateRequest params + ) throws Exception { + params.check(); + var user = StpLoginUserUtil.getLoginUser(); + + var budget = budgetService.getById(id); + if (budget == null) { + throw new NcHttpException(HttpErrorResponseEnum.BUDGET_NOT_FOUND); + } + + // 入库 + budget.update(params, user); + budgetService.updateById(budget); + budgetItemService.remove(new LambdaQueryWrapper().eq(BudgetItem::getBudgetId, id)); + for (var item: params.getItems()) { + var budgetItem = new BudgetItem(budget.getId(), item); + budgetItemService.save(budgetItem); + } + + return FuHttpResponse.Builder().dataResponse(budget).build(); + } // todo-1 地图里程数据 // todo-2 外省数据上传 @@ -152,5 +146,4 @@ public class BudgetController { // * 大件运输部署测试 // * 材料管理系统-里程计算 -// * 证据管理系统-部署 } diff --git a/src/main/java/mjkf/xinke/main/model/db/Budget.java b/src/main/java/mjkf/xinke/main/model/db/Budget.java index 3c471f9..987a3e6 100644 --- a/src/main/java/mjkf/xinke/main/model/db/Budget.java +++ b/src/main/java/mjkf/xinke/main/model/db/Budget.java @@ -84,6 +84,8 @@ public class Budget extends Model { // @ApiModelProperty("月份") // @TableField(value="`MONTHS`", typeHandler = FastjsonArrayHandler.class) // private List months; + @TableField(exist = false) + private List items; @Override public Serializable pkVal() { diff --git a/src/test/java/mjkf/xinke/LoginTest.java b/src/test/java/mjkf/xinke/LoginTest.java index e8c487f..2ddba2a 100644 --- a/src/test/java/mjkf/xinke/LoginTest.java +++ b/src/test/java/mjkf/xinke/LoginTest.java @@ -33,6 +33,4 @@ public class LoginTest { var result = authService.doLogin(param, SaClientTypeEnum.B.getValue()); System.out.println(result); } - - } diff --git a/src/test/java/mjkf/xinke/UploadFileTest.java b/src/test/java/mjkf/xinke/UploadFileTest.java index fdf5530..dd1218e 100644 --- a/src/test/java/mjkf/xinke/UploadFileTest.java +++ b/src/test/java/mjkf/xinke/UploadFileTest.java @@ -13,6 +13,9 @@ import javax.annotation.Resource; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.net.URLConnection; +import java.nio.file.Files; +import java.nio.file.Path; @SpringBootTest(classes = Application.class) @RunWith(SpringJUnit4ClassRunner.class) @@ -25,7 +28,8 @@ public class UploadFileTest { // var filePath = "C:\\Users\\Administrator\\Desktop\\材料管理系统模版\\历史数据\\地材-202405.xlsx"; var filePath = "C:\\Users\\Administrator\\Documents\\工作表 在 9月完成功能.xlsx"; var file = new File(filePath); - var multipartFile = this.mockMultipartFile(file, "相邻城市价格.xlsx", "application/x-zip-compressed"); +// var multipartFile = this.mockMultipartFile(file, "相邻城市价格.xlsx", "application/x-zip-compressed"); + var multipartFile = this.mockMultipartFile(file); var fileId = devFileService.uploadReturnId(DevFileEngineTypeEnum.LOCAL.getValue(), multipartFile); System.out.println("UploadFileTest.test | fileId " + fileId); } @@ -40,7 +44,9 @@ public class UploadFileTest { * 1838851336371163138 相邻城市.xlsx 600 */ - private MultipartFile mockMultipartFile(File file, String fileName, String contentType) { + private MultipartFile mockMultipartFile(File file) throws IOException { + var fileName = file.getName(); + var contentType = Files.probeContentType(Path.of(file.getPath())); try { // 使用文件内容和文件名创建MockMultipartFile MockMultipartFile mockMultipartFile = new MockMultipartFile( @@ -55,4 +61,5 @@ public class UploadFileTest { } return null; } + }