From b440dc604f860c7e2453e018209a8f9913c93971 Mon Sep 17 00:00:00 2001 From: han0 Date: Wed, 13 Dec 2023 17:34:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(price-publish):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E4=BB=B7=E6=A0=BC=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/constant/HttpErrorResponseEnum.java | 3 + .../main/constant/PricePublishStatus.java | 6 + .../xinke/main/constant/PricePublishType.java | 6 + .../main/controller/MaterialController.java | 1 + .../controller/PricePublishController.java | 92 ++++++++ .../xinke/main/dao/PricePublishMapper.java | 16 ++ .../xinke/main/model/db/PricePublish.java | 202 ++++++++++++++++++ .../model/vo/PricePublishEditRequest.java | 51 +++++ .../main/service/PricePublishService.java | 32 +++ 9 files changed, 409 insertions(+) create mode 100644 src/main/java/mjkf/xinke/main/constant/PricePublishStatus.java create mode 100644 src/main/java/mjkf/xinke/main/constant/PricePublishType.java create mode 100644 src/main/java/mjkf/xinke/main/controller/PricePublishController.java create mode 100644 src/main/java/mjkf/xinke/main/dao/PricePublishMapper.java create mode 100644 src/main/java/mjkf/xinke/main/model/db/PricePublish.java create mode 100644 src/main/java/mjkf/xinke/main/model/vo/PricePublishEditRequest.java create mode 100644 src/main/java/mjkf/xinke/main/service/PricePublishService.java diff --git a/src/main/java/mjkf/xinke/main/constant/HttpErrorResponseEnum.java b/src/main/java/mjkf/xinke/main/constant/HttpErrorResponseEnum.java index 17dda6e..fa81301 100644 --- a/src/main/java/mjkf/xinke/main/constant/HttpErrorResponseEnum.java +++ b/src/main/java/mjkf/xinke/main/constant/HttpErrorResponseEnum.java @@ -26,6 +26,9 @@ public enum HttpErrorResponseEnum implements NcHttpErrorResponseInterface { PRICE_RESULT_YEAR_MONTH_NEEDED("缺少年份或月份", 1101, HttpStatus.SC_NOT_FOUND), PRICE_RESULT_NOT_FOUND("未找到对应数据", 1102, HttpStatus.SC_NOT_FOUND), + + PRICE_PUBLISH_YEAR_MONTH_NEEDED("缺少年份或月份", 1201, HttpStatus.SC_NOT_FOUND), + PRICE_PUBLISH_NOT_FOUND("未找到对应数据", 1202, HttpStatus.SC_NOT_FOUND), ; private String message; diff --git a/src/main/java/mjkf/xinke/main/constant/PricePublishStatus.java b/src/main/java/mjkf/xinke/main/constant/PricePublishStatus.java new file mode 100644 index 0000000..1860a18 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/constant/PricePublishStatus.java @@ -0,0 +1,6 @@ +package mjkf.xinke.main.constant; + +public class PricePublishStatus { + public static final Integer WAITING = 0; + public static final Integer DONE = 2; +} diff --git a/src/main/java/mjkf/xinke/main/constant/PricePublishType.java b/src/main/java/mjkf/xinke/main/constant/PricePublishType.java new file mode 100644 index 0000000..7a1dc12 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/constant/PricePublishType.java @@ -0,0 +1,6 @@ +package mjkf.xinke.main.constant; + +public class PricePublishType { + public static final Integer CURRENT = 1; // 当月价 + public static final Integer AVG = 2; // 近半年平均价 +} diff --git a/src/main/java/mjkf/xinke/main/controller/MaterialController.java b/src/main/java/mjkf/xinke/main/controller/MaterialController.java index fb396be..491c237 100644 --- a/src/main/java/mjkf/xinke/main/controller/MaterialController.java +++ b/src/main/java/mjkf/xinke/main/controller/MaterialController.java @@ -129,6 +129,7 @@ public class MaterialController { throw new NcHttpException(HttpErrorResponseEnum.MATERIAL_NOT_FOUND); } data.edit(params, user); + materialService.updateById(data); return FuHttpResponse.Builder().dataResponse(data).build(); } diff --git a/src/main/java/mjkf/xinke/main/controller/PricePublishController.java b/src/main/java/mjkf/xinke/main/controller/PricePublishController.java new file mode 100644 index 0000000..cc0f8d7 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/controller/PricePublishController.java @@ -0,0 +1,92 @@ +package mjkf.xinke.main.controller; + +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 mjkf.xinke.auth.core.util.StpLoginUserUtil; +import mjkf.xinke.main.common.http.FuHttpResponse; +import mjkf.xinke.main.constant.HttpErrorResponseEnum; +import mjkf.xinke.main.constant.PricePublishStatus; +import mjkf.xinke.main.model.db.PricePublish; +import mjkf.xinke.main.model.vo.PricePublishEditRequest; +import mjkf.xinke.main.service.PricePublishService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.websocket.server.PathParam; +import java.util.List; + +/** + *

+ * 发布价格 前端控制器 + *

+ * + * @author han0 + * @since 2023-11-09 + */ +@RestController +@RequestMapping("/price-publish") +public class PricePublishController { + + @Resource + PricePublishService pricePublishService; + + @ApiOperation("获取发布价格数据列表") + @GetMapping("/") + public HttpResponse list( + @ApiParam("年份") @RequestParam("year") Integer year, + @ApiParam("月份") @RequestParam(value = "month") Integer month, + @ApiParam("材料编号") @RequestParam(value = "material_id", required = false) String materialId, + @ApiParam("名称") @RequestParam(value = "name", required = false) String name, + @ApiParam("规格") @RequestParam(value = "spec", required = false) String spec, + @ApiParam("类型") @RequestParam(value = "type") Integer type + ) throws Exception { + if (year == null || month == null) { + throw new NcHttpException(HttpErrorResponseEnum.PRICE_PUBLISH_YEAR_MONTH_NEEDED); + } + var query = pricePublishService.getQuery(year, month, materialId, name, spec, type); + var result = pricePublishService.list(query); + + return FuHttpResponse.Builder().dataResponse(result).build(); + } + + @ApiOperation("编辑发布价格数据") + @PutMapping("/{id}") + public HttpResponse edit( + @ApiParam("id") @PathParam("id") String id, + @ApiParam("参数") @RequestBody PricePublishEditRequest params + ) throws Exception { + params.check(); + var user = StpLoginUserUtil.getLoginUser(); + + var data = pricePublishService.getById(id); + if (data == null) { + throw new NcHttpException(HttpErrorResponseEnum.PRICE_PUBLISH_NOT_FOUND); + } + data.edit(params, user); + pricePublishService.updateById(data); + + return FuHttpResponse.Builder().dataResponse(data).build(); + } + + @ApiOperation("发布价格") + @GetMapping("/") + public HttpResponse list( + @ApiParam("年份") @RequestParam("year") Integer year, + @ApiParam("月份") @RequestParam(value = "month") Integer month + ) throws Exception { + if (year == null || month == null) { + throw new NcHttpException(HttpErrorResponseEnum.PRICE_PUBLISH_YEAR_MONTH_NEEDED); + } + var query = pricePublishService.getQuery(year, month, null, null, null, null); + List result = pricePublishService.list(query); + + for (PricePublish item: result) { + item.setStatus(PricePublishStatus.DONE); + pricePublishService.updateById(item); + } + + return FuHttpResponse.Builder().dataResponse().build(); + } +} diff --git a/src/main/java/mjkf/xinke/main/dao/PricePublishMapper.java b/src/main/java/mjkf/xinke/main/dao/PricePublishMapper.java new file mode 100644 index 0000000..be4f29c --- /dev/null +++ b/src/main/java/mjkf/xinke/main/dao/PricePublishMapper.java @@ -0,0 +1,16 @@ +package mjkf.xinke.main.dao; + +import mjkf.xinke.main.model.db.PricePublish; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 发布价格 Mapper 接口 + *

+ * + * @author han0 + * @since 2023-11-10 + */ +public interface PricePublishMapper extends BaseMapper { + +} diff --git a/src/main/java/mjkf/xinke/main/model/db/PricePublish.java b/src/main/java/mjkf/xinke/main/model/db/PricePublish.java new file mode 100644 index 0000000..aa961b0 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/model/db/PricePublish.java @@ -0,0 +1,202 @@ +package mjkf.xinke.main.model.db; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import mjkf.xinke.auth.core.pojo.SaBaseLoginUser; +import mjkf.xinke.main.model.vo.PricePublishEditRequest; + +/** + *

+ * 发布价格 + *

+ * + * @author han0 + * @since 2023-11-10 + */ +@Getter +@Setter +@TableName("PRICE_PUBLISH") +@ApiModel(value = "PricePublish对象", description = "发布价格") +public class PricePublish extends Model { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("最后更新人id") + @TableField("UPDATE_USER_ID") + private String updateUserId; + + @ApiModelProperty("最后更新人名称") + @TableField("UPDATE_USER_NAME") + private String updateUserName; + + @ApiModelProperty("最后更新时间") + @TableField("UPDATE_TIME") + private LocalDateTime updateTime; + + @ApiModelProperty("创建人id") + @TableField("CREATE_USER_ID") + private String createUserId; + + @ApiModelProperty("创建人名称") + @TableField("CREATE_USER_NAME") + private String createUserName; + + @ApiModelProperty("创建时间") + @TableField("CREATE_TIME") + private LocalDateTime createTime; + + @ApiModelProperty("删除人id") + @TableField("DELETE_USER_ID") + private String deleteUserId; + + @ApiModelProperty("删除人名称") + @TableField("DELETE_USER_NAME") + private String deleteUserName; + + @ApiModelProperty("删除时间") + @TableField("DELETE_TIME") + private LocalDateTime deleteTime; + + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("编号") + @TableField("MATERIAL_ID") + private String materialId; + + @ApiModelProperty("年份") + @TableField("YEAR") + private Integer year; + + @ApiModelProperty("月份") + @TableField("MONTH") + private Integer month; + + @ApiModelProperty("材料名称") + @TableField("`NAME`") + private String name; + + @ApiModelProperty("规格") + @TableField("`SPEC`") + private String spec; + + @ApiModelProperty("价格") + @TableField("PRICE") + private BigDecimal price; + + @ApiModelProperty("福州价格") + @TableField("PRICE_FUZHOU") + private BigDecimal priceFuzhou; + + @ApiModelProperty("厦门价格") + @TableField("PRICE_XIAMEN") + private BigDecimal priceXiamen; + + @ApiModelProperty("莆田价格") + @TableField("PRICE_PUTIAN") + private BigDecimal pricePutian; + + @ApiModelProperty("三明价格") + @TableField("PRICE_SANMING") + private BigDecimal priceSanming; + + @ApiModelProperty("泉州价格") + @TableField("PRICE_QUANZHOU") + private BigDecimal priceQuanzhou; + + @ApiModelProperty("漳州价格") + @TableField("PRICE_ZHANGZHOU") + private BigDecimal priceZhangzhou; + + @ApiModelProperty("南平价格") + @TableField("PRICE_NANPIN") + private BigDecimal priceNanpin; + + @ApiModelProperty("龙岩价格") + @TableField("PRICE_LONGYAN") + private BigDecimal priceLongyan; + + @ApiModelProperty("宁德价格") + @TableField("PRICE_NINGDE") + private BigDecimal priceNingde; + + @ApiModelProperty("平潭价格") + @TableField("PRICE_PINTAN") + private BigDecimal pricePintan; + + @ApiModelProperty("税率") + @TableField("TAX") + private BigDecimal tax; + + @ApiModelProperty("状态") + @TableField("STATUS") + private Integer status; + + @ApiModelProperty("类型") + @TableField("TYPE") + private Integer type; + + @Override + public Serializable pkVal() { + return this.id; + } + + public void edit(PricePublishEditRequest params, SaBaseLoginUser user) { + if (params.getName() != null) { + this.setName(params.getName()); + } + if (params.getSpec() != null) { + this.setSpec(params.getSpec()); + } + if (params.getPrice() != null) { + this.setPrice(params.getPrice()); + } + if (params.getPriceFuzhou() != null) { + this.setPriceFuzhou(params.getPriceFuzhou()); + } + if (params.getPriceXiamen() != null) { + this.setPriceXiamen(params.getPriceXiamen()); + } + if (params.getPricePutian() != null) { + this.setPricePutian(params.getPricePutian()); + } + if (params.getPriceSanming() != null) { + this.setPriceSanming(params.getPriceSanming()); + } + if (params.getPriceQuanzhou() != null) { + this.setPriceQuanzhou(params.getPriceQuanzhou()); + } + if (params.getPriceZhangzhou() != null) { + this.setPriceZhangzhou(params.getPriceZhangzhou()); + } + if (params.getPriceNanpin() != null) { + this.setPriceNanpin(params.getPriceNanpin()); + } + if (params.getPriceLongyan() != null) { + this.setPriceLongyan(params.getPriceLongyan()); + } + if (params.getPriceNingde() != null) { + this.setPriceNingde(params.getPriceNingde()); + } + if (params.getPricePintan() != null) { + this.setPricePintan(params.getPricePintan()); + } + if (params.getTax() != null) { + this.setTax(params.getTax()); + } + + this.updateTime = LocalDateTime.now(); + this.updateUserName = user.getName(); + this.updateUserId = user.getId(); + } +} diff --git a/src/main/java/mjkf/xinke/main/model/vo/PricePublishEditRequest.java b/src/main/java/mjkf/xinke/main/model/vo/PricePublishEditRequest.java new file mode 100644 index 0000000..b3e2d26 --- /dev/null +++ b/src/main/java/mjkf/xinke/main/model/vo/PricePublishEditRequest.java @@ -0,0 +1,51 @@ +package mjkf.xinke.main.model.vo; + +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; + + +@Getter +@Setter +public class PricePublishEditRequest { +// private String materialId; + +// private String name; + +// private Integer year; + +// private Integer month; + + private String name; + + private String spec; + + private BigDecimal price; + + private BigDecimal priceFuzhou; + + private BigDecimal priceXiamen; + + private BigDecimal pricePutian; + + private BigDecimal priceSanming; + + private BigDecimal priceQuanzhou; + + private BigDecimal priceZhangzhou; + + private BigDecimal priceNanpin; + + private BigDecimal priceLongyan; + + private BigDecimal priceNingde; + + private BigDecimal pricePintan; + + private BigDecimal tax; + + public void check() { + + } +} diff --git a/src/main/java/mjkf/xinke/main/service/PricePublishService.java b/src/main/java/mjkf/xinke/main/service/PricePublishService.java new file mode 100644 index 0000000..d126dcd --- /dev/null +++ b/src/main/java/mjkf/xinke/main/service/PricePublishService.java @@ -0,0 +1,32 @@ +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 org.springframework.stereotype.Service; + +@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(); + if (year != null) { + query = query.eq(PricePublish::getYear, year); + } + if (month != null) { + query = query.eq(PricePublish::getMonth, month); + } + if (materialId != null) { + query.eq(PricePublish::getMaterialId, materialId); + } + if (name != null) { + query.like(PricePublish::getName, name); + } + if (type != null) { + query.eq(PricePublish::getType, type); + } + return query; + } +} +