diff --git a/pom.xml b/pom.xml index 53e832d..58d98b8 100644 --- a/pom.xml +++ b/pom.xml @@ -169,6 +169,11 @@ test + + com.github.yulichang + mybatis-plus-join-boot-starter + 1.5.2 + diff --git a/src/main/java/mjkf/xinke/main/controller/PricePublishController.java b/src/main/java/mjkf/xinke/main/controller/PricePublishController.java index 10a29bc..079765b 100644 --- a/src/main/java/mjkf/xinke/main/controller/PricePublishController.java +++ b/src/main/java/mjkf/xinke/main/controller/PricePublishController.java @@ -54,7 +54,6 @@ public class PricePublishController { } var query = pricePublishService.getQuery(year, month, materialId, name, spec, type); - query.orderByAsc(PricePublish::getMaterialId); var result = pricePublishService.list(query); return FuHttpResponse.Builder().dataResponse(result).build(); diff --git a/src/main/java/mjkf/xinke/main/controller/PriceResultController.java b/src/main/java/mjkf/xinke/main/controller/PriceResultController.java index 4ddd8bf..7bc3999 100644 --- a/src/main/java/mjkf/xinke/main/controller/PriceResultController.java +++ b/src/main/java/mjkf/xinke/main/controller/PriceResultController.java @@ -7,9 +7,6 @@ import com.jgy.xxs.core.http.exp.NcHttpException; import com.jgy.xxs.core.http.resp.HttpResponse; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; import mjkf.xinke.common.annotation.CommonLog; import mjkf.xinke.main.common.api.DataToolService; import mjkf.xinke.main.common.http.FuHttpResponse; @@ -52,7 +49,6 @@ public class PriceResultController { throw new NcHttpException(HttpErrorResponseEnum.PRICE_RESULT_YEAR_MONTH_NEEDED); } var query = priceResultService.getQuery(year, month, materialId, name); - query.orderByAsc(PriceResult::getMaterialId); var result = priceResultService.list(query); return FuHttpResponse.Builder().dataResponse(result).build(); diff --git a/src/main/java/mjkf/xinke/main/controller/PublicController.java b/src/main/java/mjkf/xinke/main/controller/PublicController.java index 7b250ff..43b668e 100644 --- a/src/main/java/mjkf/xinke/main/controller/PublicController.java +++ b/src/main/java/mjkf/xinke/main/controller/PublicController.java @@ -7,6 +7,7 @@ import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.jgy.xxs.core.http.resp.HttpResponse; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; @@ -66,7 +67,7 @@ public class PublicController { @ApiParam(value = "规格") @RequestParam(value="spec", required = false) String spec, @ApiParam(value = "父id") @RequestParam(value="parent_id", required = false) String parentId ) throws Exception { - LambdaQueryWrapper query = pricePublishService.getQuery(year, month, null, name, spec, PricePublishType.CURRENT); + MPJLambdaWrapper query = pricePublishService.getQuery(year, month, null, name, spec, PricePublishType.CURRENT); query.eq(PricePublish::getStatus, PricePublishStatus.DONE); query.isNotNull(PricePublish::getMaterialId); // 材料编号禁止为空 if (keyword != null && ObjectUtil.isNotEmpty(keyword)) { @@ -103,7 +104,7 @@ public class PublicController { @ApiParam(value = "地区") @RequestParam(value="region") String region, @ApiParam(value = "材料id") @RequestParam(value="materialId") String materialId ) throws Exception { - LambdaQueryWrapper query = pricePublishService.getQuery(null, null, materialId, null, null, PricePublishType.CURRENT); + MPJLambdaWrapper query = pricePublishService.getQuery(null, null, materialId, null, null, PricePublishType.CURRENT); var data = pricePublishService.list(query); var result = PublicTrendResponse.list(data, region); diff --git a/src/main/java/mjkf/xinke/main/model/db/Material.java b/src/main/java/mjkf/xinke/main/model/db/Material.java index 7c3bca0..59e0133 100644 --- a/src/main/java/mjkf/xinke/main/model/db/Material.java +++ b/src/main/java/mjkf/xinke/main/model/db/Material.java @@ -123,11 +123,33 @@ public class Material extends Model { @TableField("`IS_TREE`") private Integer isTree; + @ApiModelProperty("排序") + @TableField("SORT") + private Integer sort; + + @ApiModelProperty("材料编码") + @TableField("CODE") + private String code; + @Override public Serializable pkVal() { return this.id; } + private String buildCode(String category1, String category2, String category3, String category4) { + if (category1 == null || category2 == null || category3 == null) { + return null; + } + StringBuilder code = new StringBuilder(); + code.append(category1) + .append(category2) + .append(category3); + if (category4 != null) { + code.append(category4); + } + return code.toString(); + } + public boolean isBuiltin() { if (this.isBuiltin == null) { return false; @@ -149,6 +171,8 @@ public class Material extends Model { this.spec = params.getSpec(); this.tax = params.getTax(); this.type = params.getType(); + this.sort = params.getSort(); + this.code = buildCode(category1, category2, category3, category4); this.updateTime = LocalDateTime.now(); this.createTime = LocalDateTime.now(); this.createUserName = user.getName(); @@ -165,6 +189,8 @@ public class Material extends Model { this.spec = params.getSpec(); this.tax = params.getTax(); this.type = params.getType(); + this.sort = params.getSort(); + this.code = buildCode(category1, category2, category3, category4); this.updateTime = LocalDateTime.now(); this.updateUserName = user.getName(); this.updateUserId = user.getId(); diff --git a/src/main/java/mjkf/xinke/main/model/vo/MaterialCreateRequest.java b/src/main/java/mjkf/xinke/main/model/vo/MaterialCreateRequest.java index adf2f80..b54c07f 100644 --- a/src/main/java/mjkf/xinke/main/model/vo/MaterialCreateRequest.java +++ b/src/main/java/mjkf/xinke/main/model/vo/MaterialCreateRequest.java @@ -36,6 +36,9 @@ public class MaterialCreateRequest { @ApiModelProperty("类型") private Integer type; + @ApiModelProperty("排序") + private Integer sort; + public void check() throws Exception { if (ObjectUtil.isEmpty(category1) || category1.chars().count() != 2) { throw new NcHttpException(HttpErrorResponseEnum.MATERIAL_CATEGORY_INVALID); diff --git a/src/main/java/mjkf/xinke/main/model/vo/MaterialEditRequest.java b/src/main/java/mjkf/xinke/main/model/vo/MaterialEditRequest.java index a20de42..e6ac493 100644 --- a/src/main/java/mjkf/xinke/main/model/vo/MaterialEditRequest.java +++ b/src/main/java/mjkf/xinke/main/model/vo/MaterialEditRequest.java @@ -33,6 +33,8 @@ public class MaterialEditRequest { @ApiModelProperty("类型") private Integer type; + @ApiModelProperty("排序") + private Integer sort; public void check() throws Exception{ diff --git a/src/main/java/mjkf/xinke/main/service/PricePublishService.java b/src/main/java/mjkf/xinke/main/service/PricePublishService.java index b842416..3169702 100644 --- a/src/main/java/mjkf/xinke/main/service/PricePublishService.java +++ b/src/main/java/mjkf/xinke/main/service/PricePublishService.java @@ -1,9 +1,11 @@ package mjkf.xinke.main.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import mjkf.xinke.main.model.db.PricePublish; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import mjkf.xinke.main.model.db.Material; +import mjkf.xinke.main.model.db.PricePublish; import mjkf.xinke.main.model.vo.BudgetCreateRequest; import org.springframework.stereotype.Service; @@ -16,13 +18,16 @@ import java.util.stream.Collectors; @Service public class PricePublishService extends ServiceImpl, PricePublish> { - public LambdaQueryWrapper getQuery(Integer year, Integer month, String materialId, String name, String spec, Integer type) { - var query = new LambdaQueryWrapper(); + public MPJLambdaWrapper getQuery(Integer year, Integer month, String materialId, String name, String spec, Integer type) { + var query = new MPJLambdaWrapper() + .selectAll(PricePublish.class) + .leftJoin(Material.class, Material::getId, PricePublish::getMaterialId); + if (year != null) { - query = query.eq(PricePublish::getYear, year); + query.eq(PricePublish::getYear, year); } if (month != null) { - query = query.eq(PricePublish::getMonth, month); + query.eq(PricePublish::getMonth, month); } if (materialId != null) { query.eq(PricePublish::getMaterialId, materialId); @@ -36,19 +41,21 @@ public class PricePublishService extends ServiceImpl, P if (spec != null) { query.eq(PricePublish::getSpec, spec); } + + query.orderByDesc(Material::getSort); + return query; } - public LambdaQueryWrapper getQuery(BudgetCreateRequest params) { - var query = new LambdaQueryWrapper(); + public MPJLambdaWrapper getQuery(BudgetCreateRequest params) { + var query = new MPJLambdaWrapper(); query.eq(PricePublish::getYear, params.getYear()); query.in(PricePublish::getMonth, List.of(params.getMonth(), params.getBaseMonth())); query.in(PricePublish::getName, params.getItems().stream().map(item -> item.getName()).collect(Collectors.toList())); -// query.in(PricePublish::getMaterialId, params.getItems().stream().map(item -> item.getId()).collect(Collectors.toList())); return query; } - public Map getPriceMapEntryByMaterialIdAndMonth(LambdaQueryWrapper query) { + public Map getPriceMapEntryByMaterialIdAndMonth(MPJLambdaWrapper query) { var result = new HashMap(); var items = this.list(query); for (PricePublish item: items) { diff --git a/src/main/java/mjkf/xinke/main/service/PriceResultService.java b/src/main/java/mjkf/xinke/main/service/PriceResultService.java index 88d671a..2d91d04 100644 --- a/src/main/java/mjkf/xinke/main/service/PriceResultService.java +++ b/src/main/java/mjkf/xinke/main/service/PriceResultService.java @@ -1,43 +1,49 @@ package mjkf.xinke.main.service; -import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import mjkf.xinke.main.model.db.Material; import mjkf.xinke.main.model.db.PriceResult; import org.springframework.stereotype.Service; import java.time.LocalDate; - @Service public class PriceResultService extends ServiceImpl, PriceResult> { - public LambdaQueryWrapper getQuery(Integer year, Integer month, String materialId, String name) { - var query = new LambdaQueryWrapper(); - if (ObjectUtil.isNotEmpty(year)) { - query = query.eq(PriceResult::getYear, year); + + public MPJLambdaWrapper getQuery(Integer year, Integer month, String materialId, String name) { + var query = new MPJLambdaWrapper() + .selectAll(PriceResult.class) + .leftJoin(Material.class, Material::getId, PriceResult::getMaterialId); + + if (year != null) { + query.eq(PriceResult::getYear, year); } - if (ObjectUtil.isNotEmpty(month)) { - query = query.eq(PriceResult::getMonth, month); + if (month != null) { + query.eq(PriceResult::getMonth, month); } - if (ObjectUtil.isNotEmpty(materialId)) { + if (materialId != null) { query.eq(PriceResult::getMaterialId, materialId); } - if (ObjectUtil.isNotEmpty(name)) { + if (name != null) { query.like(PriceResult::getName, name); } + + query.orderByDesc(Material::getSort); + return query; } - public LambdaQueryWrapper getQueryByName(String name) { + public MPJLambdaWrapper getQueryByName(String name) { return this.getQuery(null, null, null, name); } - public LambdaQueryWrapper getQueryByMaterialId(String materialId) { + public MPJLambdaWrapper getQueryByMaterialId(String materialId) { return this.getQuery(null, null, materialId, null); } - public LambdaQueryWrapper queryLastYear (LambdaQueryWrapper query, PriceResult data) { + public MPJLambdaWrapper queryLastYear(MPJLambdaWrapper query, PriceResult data) { var endDate = LocalDate.of(data.getYear(), data.getMonth(), 1); var startDate = endDate.minusYears(1); // 过去一年 @@ -51,7 +57,7 @@ public class PriceResultService extends ServiceImpl, Pri return query; } - public LambdaQueryWrapper queryLastYear (LambdaQueryWrapper query) { + public MPJLambdaWrapper queryLastYear(MPJLambdaWrapper query) { var endDate = LocalDate.now().minusMonths(1); var startDate = endDate.minusYears(1); // 过去一年