fix: 重写预算编辑接口

This commit is contained in:
han0
2024-11-11 17:10:23 +08:00
parent 5361de770b
commit 007376fbf9
4 changed files with 84 additions and 84 deletions

View File

@@ -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<Budget>();
// 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<Budget>();
// 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<BudgetItem>();
// 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<PricePublish> 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<BudgetItem>().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<Page<Budget>> 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<Budget>();
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<Budget>();
query.in(Budget::getId, idList);
budgetService.remove(query);
return FuHttpResponse.Builder().dataResponse().build();
}
@ApiOperation("预算详情")
@GetMapping("/{id}")
public HttpResponse<Budget> 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<BudgetItem>();
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<BudgetItem>().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 {
// * 大件运输部署测试
// * 材料管理系统-里程计算
// * 证据管理系统-部署
}

View File

@@ -84,6 +84,8 @@ public class Budget extends Model<Budget> {
// @ApiModelProperty("月份")
// @TableField(value="`MONTHS`", typeHandler = FastjsonArrayHandler.class)
// private List months;
@TableField(exist = false)
private List<BudgetItem> items;
@Override
public Serializable pkVal() {

View File

@@ -33,6 +33,4 @@ public class LoginTest {
var result = authService.doLogin(param, SaClientTypeEnum.B.getValue());
System.out.println(result);
}
}

View File

@@ -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;
}
}