Commit cc18f182bf91f1bd83ad725db4e6d3ca08cee298

Authored by 房远帅
1 parent 54f81505

采购:价格表基础表单

Showing 20 changed files with 1348 additions and 2 deletions
@@ -115,7 +115,7 @@ CREATE TABLE IF NOT EXISTS `customer_credit` @@ -115,7 +115,7 @@ CREATE TABLE IF NOT EXISTS `customer_credit`
115 `credit_limit` varchar(20) DEFAULT NULL COMMENT '授信额度(万元)', 115 `credit_limit` varchar(20) DEFAULT NULL COMMENT '授信额度(万元)',
116 `investigator` varchar(50) DEFAULT NULL COMMENT '调查人', 116 `investigator` varchar(50) DEFAULT NULL COMMENT '调查人',
117 `supervisor_review` varchar(50) DEFAULT NULL COMMENT '主管审核', 117 `supervisor_review` varchar(50) DEFAULT NULL COMMENT '主管审核',
118 - `annual_total_sales` varchar(20) DEFAULT NULL COMMENT '年度总销量(万元)', 118 + `annual_total_sales` varchar(100) DEFAULT NULL COMMENT '年度总销量(万元)',
119 `main_industry` varchar(100) DEFAULT NULL COMMENT '主要行业', 119 `main_industry` varchar(100) DEFAULT NULL COMMENT '主要行业',
120 `annual_material_overview` text COMMENT '年度款料概况', 120 `annual_material_overview` text COMMENT '年度款料概况',
121 `company_settlement_period` varchar(100) DEFAULT NULL COMMENT '结算期限', 121 `company_settlement_period` varchar(100) DEFAULT NULL COMMENT '结算期限',
@@ -198,7 +198,7 @@ CREATE TABLE IF NOT EXISTS `customer_credit_history` @@ -198,7 +198,7 @@ CREATE TABLE IF NOT EXISTS `customer_credit_history`
198 `credit_limit` varchar(20) DEFAULT NULL COMMENT '授信额度(万元)', 198 `credit_limit` varchar(20) DEFAULT NULL COMMENT '授信额度(万元)',
199 `investigator` varchar(50) DEFAULT NULL COMMENT '调查人', 199 `investigator` varchar(50) DEFAULT NULL COMMENT '调查人',
200 `supervisor_review` varchar(50) DEFAULT NULL COMMENT '主管审核', 200 `supervisor_review` varchar(50) DEFAULT NULL COMMENT '主管审核',
201 - `annual_total_sales` varchar(20) DEFAULT NULL COMMENT '年度总销量(万元)', 201 + `annual_total_sales` varchar(100) DEFAULT NULL COMMENT '年度总销量(万元)',
202 `main_industry` varchar(100) DEFAULT NULL COMMENT '主要行业', 202 `main_industry` varchar(100) DEFAULT NULL COMMENT '主要行业',
203 `annual_material_overview` text COMMENT '年度款料概况', 203 `annual_material_overview` text COMMENT '年度款料概况',
204 `company_settlement_period` varchar(100) DEFAULT NULL COMMENT '结算期限', 204 `company_settlement_period` varchar(100) DEFAULT NULL COMMENT '结算期限',
@@ -1610,3 +1610,36 @@ CREATE TABLE `base_data_breed_relationship` @@ -1610,3 +1610,36 @@ CREATE TABLE `base_data_breed_relationship`
1610 KEY `idx_bdbr_code` (`code`), 1610 KEY `idx_bdbr_code` (`code`),
1611 KEY `idx_bdbr_create_time` (`create_time`) 1611 KEY `idx_bdbr_create_time` (`create_time`)
1612 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='品种关系表'; 1612 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='品种关系表';
  1613 +
  1614 +CREATE TABLE `base_data_price`
  1615 +(
  1616 + `id` varchar(32) NOT NULL COMMENT 'ID',
  1617 + `code` varchar(200) NOT NULL COMMENT '编号',
  1618 + `create_by_id` varchar(32) DEFAULT NULL COMMENT '创建人ID',
  1619 + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  1620 + `update_by_id` varchar(32) DEFAULT NULL COMMENT '更新人ID',
  1621 + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  1622 + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  1623 + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  1624 + PRIMARY KEY (`id`),
  1625 + UNIQUE KEY `uk_bdp_code` (`code`),
  1626 + KEY `idx_bdp_create_time` (`create_time`)
  1627 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='价格表';
  1628 +
  1629 +CREATE TABLE `base_data_price_sub_table`
  1630 +(
  1631 + `id` varchar(32) NOT NULL COMMENT 'ID',
  1632 + `price_id` varchar(32) NOT NULL COMMENT '价格表id',
  1633 + `product_id` varchar(32) NOT NULL COMMENT '品名id',
  1634 + `price` decimal(18, 10) NOT NULL COMMENT '价格',
  1635 + `item_id` varchar(32) NOT NULL COMMENT '前端用ID',
  1636 + `create_by_id` varchar(32) DEFAULT NULL COMMENT '创建人ID',
  1637 + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  1638 + `update_by_id` varchar(32) DEFAULT NULL COMMENT '更新人ID',
  1639 + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  1640 + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  1641 + `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  1642 + PRIMARY KEY (`id`),
  1643 + KEY `idx_bdpst_product_id` (`product_id`),
  1644 + KEY `idx_bdpst_create_time` (`create_time`)
  1645 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='价格表子表';
  1 +package com.lframework.xingyun.basedata.bo.price;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import com.lframework.starter.common.constants.StringPool;
  5 +import com.lframework.starter.web.core.bo.BaseBo;
  6 +import com.lframework.xingyun.basedata.entity.Price;
  7 +import com.lframework.xingyun.basedata.entity.PriceSubTable;
  8 +import io.swagger.annotations.ApiModelProperty;
  9 +import lombok.Data;
  10 +import java.time.LocalDateTime;
  11 +import java.util.List;
  12 +
  13 +/**
  14 + * <p>
  15 + * 价格表 QueryBo
  16 + * </p>
  17 + *
  18 + */
  19 +@Data
  20 +public class QueryPriceBo extends BaseBo<Price> {
  21 +
  22 + /**
  23 + * ID
  24 + */
  25 + @ApiModelProperty("ID")
  26 + private String id;
  27 +
  28 +
  29 + /**
  30 + * 编号
  31 + */
  32 + @ApiModelProperty("编号")
  33 + private String code;
  34 +
  35 + /**
  36 + * 价格表子表
  37 + */
  38 + @ApiModelProperty("价格表子表")
  39 + private List<PriceSubTable> priceSubTableList;
  40 +
  41 + /**
  42 + * 创建人ID
  43 + */
  44 + @ApiModelProperty("创建人ID")
  45 + private String createById;
  46 +
  47 + /**
  48 + * 创建人
  49 + */
  50 + @ApiModelProperty("创建人")
  51 + private String createBy;
  52 +
  53 + /**
  54 + * 更新人ID
  55 + */
  56 + @ApiModelProperty("更新人ID")
  57 + private String updateById;
  58 +
  59 + /**
  60 + * 更新人
  61 + */
  62 + @ApiModelProperty("更新人")
  63 + private String updateBy;
  64 +
  65 + /**
  66 + * 创建时间
  67 + */
  68 + @ApiModelProperty("创建时间")
  69 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  70 + private LocalDateTime createTime;
  71 +
  72 + /**
  73 + * 更新时间
  74 + */
  75 + @ApiModelProperty("更新时间")
  76 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  77 + private LocalDateTime updateTime;
  78 +
  79 +
  80 + public QueryPriceBo() {
  81 +
  82 + }
  83 +
  84 + public QueryPriceBo(Price dto) {
  85 +
  86 + super(dto);
  87 + }
  88 +
  89 + @Override
  90 + public BaseBo<Price> convert(Price dto) {
  91 + return super.convert(dto);
  92 + }
  93 +
  94 + @Override
  95 + protected void afterInit(Price dto) {
  96 +
  97 + }
  98 +}
  1 +package com.lframework.xingyun.basedata.bo.price;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import java.math.BigDecimal;
  5 +import com.lframework.starter.common.constants.StringPool;
  6 +import java.time.LocalDateTime;
  7 +import com.lframework.starter.web.core.bo.BaseBo;
  8 +import com.lframework.xingyun.basedata.entity.PriceSubTable;
  9 +import io.swagger.annotations.ApiModelProperty;
  10 +import lombok.Data;
  11 +
  12 +/**
  13 + * <p>
  14 + * 价格表子表 QueryBo
  15 + * </p>
  16 + *
  17 + */
  18 +@Data
  19 +public class QueryPriceSubTableBo extends BaseBo<PriceSubTable> {
  20 +
  21 + /**
  22 + * ID
  23 + */
  24 + @ApiModelProperty("ID")
  25 + private String id;
  26 +
  27 + /**
  28 + * 品名id
  29 + */
  30 + @ApiModelProperty("品名id")
  31 + private String productId;
  32 +
  33 + /**
  34 + * 品名
  35 + */
  36 + @ApiModelProperty("品名")
  37 + private String productName;
  38 +
  39 + /**
  40 + * 代号
  41 + */
  42 + @ApiModelProperty("代号")
  43 + private String code;
  44 +
  45 + /**
  46 + * 类型
  47 + */
  48 + @ApiModelProperty("类型")
  49 + private String type;
  50 +
  51 +
  52 + /**
  53 + * 价格
  54 + */
  55 + @ApiModelProperty("价格")
  56 + private BigDecimal price;
  57 +
  58 + /**
  59 + * 创建人ID
  60 + */
  61 + @ApiModelProperty("创建人ID")
  62 + private String createById;
  63 +
  64 + /**
  65 + * 创建人
  66 + */
  67 + @ApiModelProperty("创建人")
  68 + private String createBy;
  69 +
  70 + /**
  71 + * 更新人ID
  72 + */
  73 + @ApiModelProperty("更新人ID")
  74 + private String updateById;
  75 +
  76 + /**
  77 + * 更新人
  78 + */
  79 + @ApiModelProperty("更新人")
  80 + private String updateBy;
  81 +
  82 + /**
  83 + * 创建时间
  84 + */
  85 + @ApiModelProperty("创建时间")
  86 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  87 + private LocalDateTime createTime;
  88 +
  89 + /**
  90 + * 更新时间
  91 + */
  92 + @ApiModelProperty("更新时间")
  93 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  94 + private LocalDateTime updateTime;
  95 +
  96 + public QueryPriceSubTableBo() {
  97 +
  98 + }
  99 +
  100 + public QueryPriceSubTableBo(PriceSubTable dto) {
  101 +
  102 + super(dto);
  103 + }
  104 +
  105 + @Override
  106 + public BaseBo<PriceSubTable> convert(PriceSubTable dto) {
  107 + return super.convert(dto);
  108 + }
  109 +
  110 + @Override
  111 + protected void afterInit(PriceSubTable dto) {
  112 +
  113 + }
  114 +}
  1 +package com.lframework.xingyun.basedata.controller;
  2 +
  3 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  4 +import com.lframework.starter.common.utils.CollectionUtil;
  5 +import com.lframework.starter.web.core.annotations.security.HasPermission;
  6 +import com.lframework.starter.web.core.components.resp.InvokeResult;
  7 +import com.lframework.starter.web.core.components.resp.InvokeResultBuilder;
  8 +import com.lframework.starter.web.core.components.resp.PageResult;
  9 +import com.lframework.starter.web.core.controller.DefaultBaseController;
  10 +import com.lframework.starter.web.core.utils.PageResultUtil;
  11 +import com.lframework.xingyun.basedata.bo.price.QueryPriceBo;
  12 +import com.lframework.xingyun.basedata.entity.Price;
  13 +import com.lframework.xingyun.basedata.service.price.PriceService;
  14 +import com.lframework.xingyun.basedata.vo.price.CreatePriceVo;
  15 +import com.lframework.xingyun.basedata.vo.price.QueryPriceVo;
  16 +import com.lframework.xingyun.basedata.vo.price.UpdatePriceVo;
  17 +import io.swagger.annotations.Api;
  18 +import io.swagger.annotations.ApiImplicitParam;
  19 +import io.swagger.annotations.ApiOperation;
  20 +import org.springframework.beans.factory.annotation.Autowired;
  21 +import org.springframework.validation.annotation.Validated;
  22 +import org.springframework.web.bind.annotation.*;
  23 +import javax.validation.Valid;
  24 +import javax.validation.constraints.NotBlank;
  25 +import java.util.List;
  26 +import java.util.stream.Collectors;
  27 +
  28 +/**
  29 + * 价格表 Controller
  30 + *
  31 + */
  32 +@Api(tags = "价格表")
  33 +@Validated
  34 +@RestController
  35 +@RequestMapping("/baseData/price")
  36 +public class PriceController extends DefaultBaseController {
  37 +
  38 + @Autowired
  39 + private PriceService priceService;
  40 +
  41 + /**
  42 + * 查询列表
  43 + */
  44 + @ApiOperation("查询列表")
  45 + @HasPermission({"base-data:price-table:query"})
  46 + @GetMapping("/query")
  47 + public InvokeResult<PageResult<QueryPriceBo>> query(@Valid QueryPriceVo vo) {
  48 +
  49 + PageResult<Price> pageResult = priceService.query(getPageIndex(vo), getPageSize(vo), vo);
  50 +
  51 + List<Price> datas = pageResult.getDatas();
  52 + List<QueryPriceBo> results = null;
  53 +
  54 + if (!CollectionUtil.isEmpty(datas)) {
  55 + results = datas.stream().map(QueryPriceBo::new).collect(Collectors.toList());
  56 + }
  57 +
  58 + return InvokeResultBuilder.success(PageResultUtil.rebuild(pageResult, results));
  59 + }
  60 +
  61 + /**
  62 + * 根据ID查询
  63 + */
  64 + @ApiOperation("根据ID查询")
  65 + @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true)
  66 + @HasPermission({"base-data:price-table:query"})
  67 + @GetMapping
  68 + public InvokeResult<QueryPriceBo> get(@NotBlank(message = "id不能为空!") String id) {
  69 +
  70 + Price data = priceService.findById(id);
  71 + if (data == null) {
  72 + throw new DefaultClientException("价格表不存在!");
  73 + }
  74 +
  75 + QueryPriceBo result = new QueryPriceBo(data);
  76 +
  77 + return InvokeResultBuilder.success(result);
  78 + }
  79 +
  80 + /**
  81 + * 新增
  82 + */
  83 + @ApiOperation("新增")
  84 + @HasPermission({"base-data:price-table:add"})
  85 + @PostMapping
  86 + public InvokeResult<Void> create(@RequestBody @Valid CreatePriceVo vo) {
  87 +
  88 + priceService.create(vo);
  89 +
  90 + return InvokeResultBuilder.success();
  91 + }
  92 +
  93 + /**
  94 + * 修改
  95 + */
  96 + @ApiOperation("修改")
  97 + @HasPermission({"base-data:price-table:modify"})
  98 + @PutMapping
  99 + public InvokeResult<Void> update(@RequestBody @Valid UpdatePriceVo vo) {
  100 +
  101 + priceService.update(vo);
  102 +
  103 + return InvokeResultBuilder.success();
  104 + }
  105 +
  106 + /**
  107 + * 根据ID删除
  108 + */
  109 + @ApiOperation("根据ID删除")
  110 + @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true)
  111 + @HasPermission({"base-data:price-table:delete"})
  112 + @DeleteMapping
  113 + public InvokeResult<Void> deleteById(@NotBlank(message = "id不能为空!") String id) {
  114 +
  115 + priceService.deleteById(id);
  116 +
  117 + return InvokeResultBuilder.success();
  118 + }
  119 +}
  1 +package com.lframework.xingyun.basedata.entity;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.FieldFill;
  4 +import com.baomidou.mybatisplus.annotation.TableField;
  5 +import com.baomidou.mybatisplus.annotation.TableName;
  6 +import com.lframework.starter.web.core.entity.BaseEntity;
  7 +import com.lframework.starter.web.core.dto.BaseDto;
  8 +import java.time.LocalDateTime;
  9 +import java.util.List;
  10 +
  11 +import com.lframework.xingyun.basedata.bo.price.QueryPriceSubTableBo;
  12 +import com.lframework.xingyun.basedata.vo.price.UpdatePriceSubTableVo;
  13 +import io.swagger.annotations.ApiModelProperty;
  14 +import lombok.Data;
  15 +
  16 +/**
  17 + * 价格表
  18 + */
  19 +@Data
  20 +@TableName("base_data_price")
  21 +public class Price extends BaseEntity implements BaseDto {
  22 +
  23 + public static final String CACHE_NAME = "Price";
  24 + private static final long serialVersionUID = 1L;
  25 +
  26 + /**
  27 + * ID
  28 + */
  29 + private String id;
  30 +
  31 + /**
  32 + * 编号
  33 + */
  34 + private String code;
  35 +
  36 +
  37 + /**
  38 + * 价格表子表
  39 + */
  40 + @TableField(exist = false)
  41 + private List<PriceSubTable> priceSubTableList;
  42 +
  43 + /**
  44 + * 创建人ID 新增时赋值
  45 + */
  46 + @TableField(fill = FieldFill.INSERT)
  47 + private String createById;
  48 +
  49 + /**
  50 + * 创建人 新增时赋值
  51 + */
  52 + @TableField(fill = FieldFill.INSERT)
  53 + private String createBy;
  54 +
  55 + /**
  56 + * 创建时间 新增时赋值
  57 + */
  58 + @TableField(fill = FieldFill.INSERT)
  59 + private LocalDateTime createTime;
  60 +
  61 + /**
  62 + * 修改人 新增和修改时赋值
  63 + */
  64 + @TableField(fill = FieldFill.INSERT_UPDATE)
  65 + private String updateBy;
  66 +
  67 + /**
  68 + * 修改人ID 新增和修改时赋值
  69 + */
  70 + @TableField(fill = FieldFill.INSERT_UPDATE)
  71 + private String updateById;
  72 +
  73 + /**
  74 + * 修改时间 新增和修改时赋值
  75 + */
  76 + @TableField(fill = FieldFill.INSERT_UPDATE)
  77 + private LocalDateTime updateTime;
  78 +}
  1 +package com.lframework.xingyun.basedata.entity;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +import java.math.BigDecimal;
  5 +import com.lframework.starter.web.core.dto.BaseDto;
  6 +import java.time.LocalDateTime;
  7 +import com.baomidou.mybatisplus.annotation.FieldFill;
  8 +import com.lframework.starter.web.core.entity.BaseEntity;
  9 +import com.baomidou.mybatisplus.annotation.TableField;
  10 +import io.swagger.annotations.ApiModelProperty;
  11 +import lombok.Data;
  12 +
  13 +/**
  14 + * <p>
  15 + * 价格表子表
  16 + * </p>
  17 + *
  18 + */
  19 +@Data
  20 +@TableName("base_data_price_sub_table")
  21 +public class PriceSubTable extends BaseEntity implements BaseDto {
  22 +
  23 + private static final long serialVersionUID = 1L;
  24 +
  25 + public static final String CACHE_NAME = "PriceSubTable";
  26 +
  27 + /**
  28 + * ID
  29 + */
  30 + private String id;
  31 +
  32 + /**
  33 + * 价格表id
  34 + */
  35 + private String priceId;
  36 +
  37 + /**
  38 + * 品名id
  39 + */
  40 + private String productId;
  41 +
  42 + /**
  43 + * 品名
  44 + * 非持久化字段
  45 + */
  46 + @TableField(exist = false)
  47 + private String productName;
  48 +
  49 + /**
  50 + * 代号
  51 + * 非持久化字段
  52 + */
  53 + @TableField(exist = false)
  54 + private String code;
  55 +
  56 + /**
  57 + * 类型
  58 + * 非持久化字段
  59 + */
  60 + @TableField(exist = false)
  61 + private String type;
  62 +
  63 + /**
  64 + * 价格
  65 + */
  66 + private BigDecimal price;
  67 +
  68 + /**
  69 + * 前端用ID
  70 + */
  71 + private String itemId;
  72 +
  73 + /**
  74 + * 创建人ID
  75 + */
  76 + @TableField(fill = FieldFill.INSERT)
  77 + private String createById;
  78 +
  79 + /**
  80 + * 创建人
  81 + */
  82 + @TableField(fill = FieldFill.INSERT)
  83 + private String createBy;
  84 +
  85 + /**
  86 + * 更新人ID
  87 + */
  88 + @TableField(fill = FieldFill.INSERT_UPDATE)
  89 + private String updateById;
  90 +
  91 + /**
  92 + * 更新人
  93 + */
  94 + @TableField(fill = FieldFill.INSERT_UPDATE)
  95 + private String updateBy;
  96 +
  97 + /**
  98 + * 创建时间
  99 + */
  100 + @TableField(fill = FieldFill.INSERT)
  101 + private LocalDateTime createTime;
  102 +
  103 + /**
  104 + * 更新时间
  105 + */
  106 + @TableField(fill = FieldFill.INSERT_UPDATE)
  107 + private LocalDateTime updateTime;
  108 +
  109 +}
  1 +package com.lframework.xingyun.basedata.impl.price;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.Wrapper;
  4 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7 +import com.github.pagehelper.PageInfo;
  8 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  9 +import com.lframework.starter.common.utils.Assert;
  10 +import com.lframework.starter.common.utils.ObjectUtil;
  11 +import com.lframework.starter.web.core.annotations.oplog.OpLog;
  12 +import com.lframework.starter.web.core.components.resp.PageResult;
  13 +import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
  14 +import com.lframework.starter.web.core.utils.IdUtil;
  15 +import com.lframework.starter.web.core.utils.OpLogUtil;
  16 +import com.lframework.starter.web.core.utils.PageHelperUtil;
  17 +import com.lframework.starter.web.core.utils.PageResultUtil;
  18 +import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
  19 +import com.lframework.xingyun.basedata.entity.Price;
  20 +import com.lframework.xingyun.basedata.entity.PriceSubTable;
  21 +import com.lframework.xingyun.basedata.mappers.PriceMapper;
  22 +import com.lframework.xingyun.basedata.service.price.PriceService;
  23 +import com.lframework.xingyun.basedata.service.price.PriceSubTableService;
  24 +import com.lframework.xingyun.basedata.vo.price.*;
  25 +import org.apache.commons.collections4.CollectionUtils;
  26 +import org.apache.commons.lang3.StringUtils;
  27 +import org.springframework.stereotype.Service;
  28 +import org.springframework.transaction.annotation.Transactional;
  29 +import javax.annotation.Resource;
  30 +import java.io.Serializable;
  31 +import java.util.ArrayList;
  32 +import java.util.List;
  33 +import java.util.stream.Collectors;
  34 +
  35 +@Service
  36 +public class PriceServiceImpl extends BaseMpServiceImpl<PriceMapper, Price> implements PriceService {
  37 +
  38 + @Resource
  39 + private PriceSubTableService priceSubTableService;
  40 +
  41 + @Override
  42 + public PageResult<Price> query(Integer pageIndex, Integer pageSize, QueryPriceVo vo) {
  43 +
  44 + Assert.greaterThanZero(pageIndex);
  45 + Assert.greaterThanZero(pageSize);
  46 +
  47 + PageHelperUtil.startPage(pageIndex, pageSize);
  48 + List<Price> datas = this.query(vo);
  49 +
  50 + return PageResultUtil.convert(new PageInfo<>(datas));
  51 + }
  52 +
  53 + @Override
  54 + public List<Price> query(QueryPriceVo vo) {
  55 +
  56 + return getBaseMapper().query(vo);
  57 + }
  58 +
  59 + @Override
  60 + public Price findById(String id) {
  61 + Price data = getBaseMapper().selectById(id);
  62 + QueryPriceSubTableVo vo = new QueryPriceSubTableVo();
  63 + vo.setPriceId(id);
  64 + List<PriceSubTable> query = priceSubTableService.query(vo);
  65 + data.setPriceSubTableList(query);
  66 +
  67 + return data;
  68 + }
  69 +
  70 + @OpLog(type = OtherOpLogType.class, name = "新增价格表,ID:{}", params = {"#id"})
  71 + @Transactional(rollbackFor = Exception.class)
  72 + @Override
  73 + public String create(CreatePriceVo vo) {
  74 + checkCodeUnique(vo.getCode(), null);
  75 +
  76 + Price data = new Price();
  77 + data.setId(IdUtil.getId());
  78 + data.setCode(vo.getCode());
  79 +
  80 + getBaseMapper().insert(data);
  81 +
  82 + //新增价格表子表
  83 + List<CreatePriceSubTableVo> priceSubTableList = vo.getPriceSubTableList();
  84 + if (CollectionUtils.isNotEmpty(priceSubTableList)) {
  85 + for (CreatePriceSubTableVo createPriceSubTableVo : priceSubTableList) {
  86 + createPriceSubTableVo.setPriceId(data.getId());
  87 + priceSubTableService.create(createPriceSubTableVo);
  88 + }
  89 + }
  90 +
  91 + OpLogUtil.setVariable("id", data.getId());
  92 + OpLogUtil.setExtra(vo);
  93 +
  94 + return data.getId();
  95 + }
  96 +
  97 + @OpLog(type = OtherOpLogType.class, name = "修改价格表,ID:{}", params = {"#id"})
  98 + @Transactional(rollbackFor = Exception.class)
  99 + @Override
  100 + public void update(UpdatePriceVo vo) {
  101 +
  102 + Price data = getBaseMapper().selectById(vo.getId());
  103 + if (ObjectUtil.isNull(data)) {
  104 + throw new DefaultClientException("价格表不存在!");
  105 + }
  106 + checkCodeUnique(vo.getCode(), vo.getId());
  107 +
  108 + LambdaUpdateWrapper<Price> updateWrapper = Wrappers.lambdaUpdate(Price.class)
  109 + .set(Price::getCode, vo.getCode())
  110 + .eq(Price::getId, vo.getId());
  111 +
  112 + getBaseMapper().update(updateWrapper);
  113 +
  114 + //修改价格表子表
  115 + if (CollectionUtils.isNotEmpty(vo.getPriceSubTableList())) {
  116 + dealWithPriceSubTable(data, vo);
  117 + }
  118 +
  119 + OpLogUtil.setVariable("id", data.getId());
  120 + OpLogUtil.setExtra(vo);
  121 + }
  122 +
  123 + @OpLog(type = OtherOpLogType.class, name = "删除价格表,ID:{}", params = {"#id"})
  124 + @Transactional(rollbackFor = Exception.class)
  125 + @Override
  126 + public void deleteById(String id) {
  127 +
  128 + getBaseMapper().deleteById(id);
  129 +
  130 + //删除子表
  131 + QueryPriceSubTableVo vo = new QueryPriceSubTableVo();
  132 + vo.setPriceId(id);
  133 + List<PriceSubTable> query = priceSubTableService.query(vo);
  134 + if (CollectionUtils.isNotEmpty(query)) {
  135 + List<String> needDeleteIdList = query.stream()
  136 + .map(PriceSubTable::getId)
  137 + .collect(Collectors.toList());
  138 + if (CollectionUtils.isNotEmpty(needDeleteIdList)) {
  139 + priceSubTableService.removeByIds(needDeleteIdList);
  140 + }
  141 + }
  142 + }
  143 +
  144 + /**
  145 + * 校验编码唯一性
  146 + *
  147 + * @param code 编码
  148 + * @param excludeId 排除的价格表ID
  149 + */
  150 + private void checkCodeUnique(String code, String excludeId) {
  151 + LambdaQueryWrapper<Price> queryWrapper =
  152 + Wrappers.lambdaQuery(Price.class)
  153 + .eq(Price::getCode, code);
  154 + if (StringUtils.isNotBlank(excludeId)) {
  155 + queryWrapper.ne(Price::getId, excludeId);
  156 + }
  157 +
  158 + Integer count = getBaseMapper().selectCount(queryWrapper);
  159 + if (count != null && count > 0) {
  160 + throw new DefaultClientException("价格表编号已存在,请重新输入!");
  161 + }
  162 + }
  163 +
  164 + private void dealWithPriceSubTable(Price data, UpdatePriceVo vo) {
  165 + Wrapper<PriceSubTable> lineWrapper = Wrappers.lambdaQuery(PriceSubTable.class)
  166 + .eq(PriceSubTable::getPriceId, data.getId());
  167 + List<PriceSubTable> oldPriceSubTableList = priceSubTableService.list(lineWrapper);
  168 + List<String> oldIdList = CollectionUtils.emptyIfNull(oldPriceSubTableList)
  169 + .stream()
  170 + .map(PriceSubTable::getId).collect(Collectors.toList());
  171 + List<String> existIdList = new ArrayList<>(oldIdList.size());
  172 + for (int i = 0; i < vo.getPriceSubTableList().size(); i++) {
  173 + UpdatePriceSubTableVo updatePriceSubTableVo = vo.getPriceSubTableList().get(i);
  174 + if (StringUtils.isNotBlank(updatePriceSubTableVo.getId())) {
  175 + existIdList.add(updatePriceSubTableVo.getId());
  176 + priceSubTableService.update(updatePriceSubTableVo);
  177 + } else {
  178 + CreatePriceSubTableVo createPriceSubTableVo = new CreatePriceSubTableVo();
  179 + createPriceSubTableVo.setPriceId(data.getId());
  180 + createPriceSubTableVo.setProductId(updatePriceSubTableVo.getProductId());
  181 + createPriceSubTableVo.setPrice(updatePriceSubTableVo.getPrice());
  182 + createPriceSubTableVo.setItemId(updatePriceSubTableVo.getItemId());
  183 +
  184 + priceSubTableService.create(createPriceSubTableVo);
  185 + }
  186 + }
  187 +
  188 + List<String> needDeleteIdList = oldIdList.stream()
  189 + .filter(oldLineId -> !existIdList.contains(oldLineId))
  190 + .collect(Collectors.toList());
  191 + if (CollectionUtils.isNotEmpty(needDeleteIdList)) {
  192 + priceSubTableService.removeByIds(needDeleteIdList);
  193 + }
  194 + }
  195 +
  196 + @Override
  197 + public void cleanCacheByKey(Serializable key) {
  198 +
  199 + }
  200 +}
  1 +package com.lframework.xingyun.basedata.impl.price;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.github.pagehelper.PageInfo;
  6 +import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
  7 +import com.lframework.starter.web.core.utils.PageResultUtil;
  8 +import com.lframework.starter.web.core.components.resp.PageResult;
  9 +import com.lframework.starter.web.core.utils.OpLogUtil;
  10 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  11 +import java.io.Serializable;
  12 +import com.lframework.starter.web.core.utils.IdUtil;
  13 +import com.lframework.starter.common.utils.ObjectUtil;
  14 +import com.lframework.starter.web.core.annotations.oplog.OpLog;
  15 +import com.lframework.starter.web.core.utils.PageHelperUtil;
  16 +import com.lframework.starter.common.utils.Assert;
  17 +import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
  18 +import com.lframework.xingyun.basedata.entity.PriceSubTable;
  19 +import com.lframework.xingyun.basedata.mappers.PriceSubTableMapper;
  20 +import com.lframework.xingyun.basedata.service.price.PriceSubTableService;
  21 +import com.lframework.xingyun.basedata.vo.price.CreatePriceSubTableVo;
  22 +import com.lframework.xingyun.basedata.vo.price.QueryPriceSubTableVo;
  23 +import com.lframework.xingyun.basedata.vo.price.UpdatePriceSubTableVo;
  24 +import org.springframework.transaction.annotation.Transactional;
  25 +import org.springframework.stereotype.Service;
  26 +import java.util.List;
  27 +
  28 +@Service
  29 +public class PriceSubTableServiceImpl extends BaseMpServiceImpl<PriceSubTableMapper, PriceSubTable> implements PriceSubTableService {
  30 +
  31 + @Override
  32 + public PageResult<PriceSubTable> query(Integer pageIndex, Integer pageSize, QueryPriceSubTableVo vo) {
  33 +
  34 + Assert.greaterThanZero(pageIndex);
  35 + Assert.greaterThanZero(pageSize);
  36 +
  37 + PageHelperUtil.startPage(pageIndex, pageSize);
  38 + List<PriceSubTable> datas = this.query(vo);
  39 +
  40 + return PageResultUtil.convert(new PageInfo<>(datas));
  41 + }
  42 +
  43 + @Override
  44 + public List<PriceSubTable> query(QueryPriceSubTableVo vo) {
  45 +
  46 + return getBaseMapper().query(vo);
  47 + }
  48 +
  49 + @Override
  50 + public PriceSubTable findById(String id) {
  51 +
  52 + return getBaseMapper().selectById(id);
  53 + }
  54 +
  55 + @OpLog(type = OtherOpLogType.class, name = "新增价格表子表,ID:{}", params = {"#id"})
  56 + @Transactional(rollbackFor = Exception.class)
  57 + @Override
  58 + public String create(CreatePriceSubTableVo vo) {
  59 +
  60 + PriceSubTable data = new PriceSubTable();
  61 + data.setId(IdUtil.getId());
  62 + data.setPriceId(vo.getPriceId());
  63 + data.setProductId(vo.getProductId());
  64 + data.setPrice(vo.getPrice());
  65 + data.setItemId(vo.getItemId());
  66 +
  67 + getBaseMapper().insert(data);
  68 +
  69 + OpLogUtil.setVariable("id", data.getId());
  70 + OpLogUtil.setExtra(vo);
  71 +
  72 + return data.getId();
  73 + }
  74 +
  75 + @OpLog(type = OtherOpLogType.class, name = "修改价格表子表,ID:{}", params = {"#id"})
  76 + @Transactional(rollbackFor = Exception.class)
  77 + @Override
  78 + public void update(UpdatePriceSubTableVo vo) {
  79 +
  80 + PriceSubTable data = getBaseMapper().selectById(vo.getId());
  81 + if (ObjectUtil.isNull(data)) {
  82 + throw new DefaultClientException("价格表子表不存在!");
  83 + }
  84 +
  85 + LambdaUpdateWrapper<PriceSubTable> updateWrapper = Wrappers.lambdaUpdate(PriceSubTable.class)
  86 + .set(PriceSubTable::getProductId, vo.getProductId())
  87 + .set(PriceSubTable::getPrice, vo.getPrice())
  88 + .set(PriceSubTable::getItemId, vo.getPrice())
  89 + .eq(PriceSubTable::getId, vo.getId());
  90 +
  91 + getBaseMapper().update(updateWrapper);
  92 +
  93 + OpLogUtil.setVariable("id", data.getId());
  94 + OpLogUtil.setExtra(vo);
  95 + }
  96 +
  97 + @OpLog(type = OtherOpLogType.class, name = "删除价格表子表,ID:{}", params = {"#id"})
  98 + @Transactional(rollbackFor = Exception.class)
  99 + @Override
  100 + public void deleteById(String id) {
  101 +
  102 + getBaseMapper().deleteById(id);
  103 + }
  104 +
  105 + @Override
  106 + public void cleanCacheByKey(Serializable key) {
  107 +
  108 + }
  109 +}
  1 +package com.lframework.xingyun.basedata.mappers;
  2 +
  3 +import com.lframework.starter.web.core.mapper.BaseMapper;
  4 +import com.lframework.xingyun.basedata.entity.Price;
  5 +import com.lframework.xingyun.basedata.vo.price.QueryPriceVo;
  6 +import org.apache.ibatis.annotations.Param;
  7 +
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * <p>
  12 + * 价格表 Mapper 接口
  13 + * </p>
  14 + *
  15 + */
  16 +public interface PriceMapper extends BaseMapper<Price> {
  17 +
  18 + /**
  19 + * 查询列表
  20 + * @param vo
  21 + * @return
  22 + */
  23 + List<Price> query(@Param("vo") QueryPriceVo vo);
  24 +}
  1 +package com.lframework.xingyun.basedata.mappers;
  2 +
  3 +import com.lframework.starter.web.core.mapper.BaseMapper;
  4 +import com.lframework.xingyun.basedata.entity.PriceSubTable;
  5 +import com.lframework.xingyun.basedata.vo.price.QueryPriceSubTableVo;
  6 +import org.apache.ibatis.annotations.Param;
  7 +
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * <p>
  12 + * 价格表子表 Mapper 接口
  13 + * </p>
  14 + *
  15 + */
  16 +public interface PriceSubTableMapper extends BaseMapper<PriceSubTable> {
  17 +
  18 + /**
  19 + * 查询列表
  20 + * @param vo
  21 + * @return
  22 + */
  23 + List<PriceSubTable> query(@Param("vo") QueryPriceSubTableVo vo);
  24 +}
  1 +package com.lframework.xingyun.basedata.service.price;
  2 +
  3 +import com.lframework.starter.web.core.components.resp.PageResult;
  4 +import com.lframework.starter.web.core.service.BaseMpService;
  5 +import com.lframework.xingyun.basedata.entity.Price;
  6 +import com.lframework.xingyun.basedata.vo.price.CreatePriceVo;
  7 +import com.lframework.xingyun.basedata.vo.price.QueryPriceVo;
  8 +import com.lframework.xingyun.basedata.vo.price.UpdatePriceVo;
  9 +
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * 价格表 Service
  14 + */
  15 +public interface PriceService extends BaseMpService<Price> {
  16 +
  17 + /**
  18 + * 查询列表
  19 + * @return
  20 + */
  21 + PageResult<Price> query(Integer pageIndex, Integer pageSize, QueryPriceVo vo);
  22 +
  23 + /**
  24 + * 查询列表
  25 + * @param vo
  26 + * @return
  27 + */
  28 + List<Price> query(QueryPriceVo vo);
  29 +
  30 + /**
  31 + * 根据ID查询
  32 + * @param id
  33 + * @return
  34 + */
  35 + Price findById(String id);
  36 +
  37 + /**
  38 + * 创建
  39 + * @param vo
  40 + * @return
  41 + */
  42 + String create(CreatePriceVo vo);
  43 +
  44 + /**
  45 + * 修改
  46 + * @param vo
  47 + */
  48 + void update(UpdatePriceVo vo);
  49 +
  50 + /**
  51 + * 根据ID删除
  52 + * @param id
  53 + * @return
  54 + */
  55 + void deleteById(String id);
  56 +}
  1 +package com.lframework.xingyun.basedata.service.price;
  2 +
  3 +import com.lframework.starter.web.core.service.BaseMpService;
  4 +import com.lframework.starter.web.core.components.resp.PageResult;
  5 +import com.lframework.xingyun.basedata.entity.PriceSubTable;
  6 +import com.lframework.xingyun.basedata.vo.price.CreatePriceSubTableVo;
  7 +import com.lframework.xingyun.basedata.vo.price.QueryPriceSubTableVo;
  8 +import com.lframework.xingyun.basedata.vo.price.UpdatePriceSubTableVo;
  9 +import java.util.List;
  10 +
  11 +/**
  12 + * 价格表子表 Service
  13 + */
  14 +public interface PriceSubTableService extends BaseMpService<PriceSubTable> {
  15 +
  16 + /**
  17 + * 查询列表
  18 + * @return
  19 + */
  20 + PageResult<PriceSubTable> query(Integer pageIndex, Integer pageSize, QueryPriceSubTableVo vo);
  21 +
  22 + /**
  23 + * 查询列表
  24 + * @param vo
  25 + * @return
  26 + */
  27 + List<PriceSubTable> query(QueryPriceSubTableVo vo);
  28 +
  29 + /**
  30 + * 根据ID查询
  31 + * @param id
  32 + * @return
  33 + */
  34 + PriceSubTable findById(String id);
  35 +
  36 + /**
  37 + * 创建
  38 + * @param vo
  39 + * @return
  40 + */
  41 + String create(CreatePriceSubTableVo vo);
  42 +
  43 + /**
  44 + * 修改
  45 + * @param vo
  46 + */
  47 + void update(UpdatePriceSubTableVo vo);
  48 +
  49 + /**
  50 + * 根据ID删除
  51 + * @param id
  52 + * @return
  53 + */
  54 + void deleteById(String id);
  55 +}
  1 +package com.lframework.xingyun.basedata.vo.price;
  2 +
  3 +import com.lframework.starter.web.core.components.validation.IsNumberPrecision;
  4 +import java.math.BigDecimal;
  5 +import javax.validation.constraints.NotBlank;
  6 +import com.lframework.starter.web.core.vo.BaseVo;
  7 +import javax.validation.constraints.NotNull;
  8 +import io.swagger.annotations.ApiModelProperty;
  9 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  10 +import org.hibernate.validator.constraints.Length;
  11 +import java.io.Serializable;
  12 +import lombok.Data;
  13 +
  14 +@Data
  15 +public class CreatePriceSubTableVo implements BaseVo, Serializable {
  16 +
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + /**
  20 + * 价格表id
  21 + */
  22 + @ApiModelProperty("价格表id")
  23 + @Length(message = "品名id最多允许32个字符!")
  24 + private String priceId;
  25 +
  26 + /**
  27 + * 品名id
  28 + */
  29 + @ApiModelProperty(value = "品名id", required = true)
  30 + @NotBlank(message = "请输入品名id!")
  31 + @Length(message = "品名id最多允许32个字符!")
  32 + private String productId;
  33 +
  34 + /**
  35 + * 价格
  36 + */
  37 + @ApiModelProperty(value = "价格", required = true)
  38 + @NotNull(message = "请输入价格!")
  39 + @TypeMismatch(message = "价格格式有误!")
  40 + @IsNumberPrecision(message = "价格最多允许10位小数!", value = 10)
  41 + private BigDecimal price;
  42 +
  43 + /**
  44 + * 前端用ID
  45 + */
  46 + @ApiModelProperty(value = "前端用ID")
  47 + private String itemId;
  48 +
  49 +
  50 +}
  1 +package com.lframework.xingyun.basedata.vo.price;
  2 +
  3 +import com.lframework.starter.web.core.vo.BaseVo;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import org.hibernate.validator.constraints.Length;
  7 +import javax.validation.constraints.NotBlank;
  8 +import java.io.Serializable;
  9 +import java.util.List;
  10 +
  11 +@Data
  12 +public class CreatePriceVo implements BaseVo, Serializable {
  13 +
  14 + private static final long serialVersionUID = 1L;
  15 +
  16 + /**
  17 + * 编号
  18 + */
  19 + @ApiModelProperty(value = "编号", required = true)
  20 + @NotBlank(message = "请输入编号!")
  21 + @Length(message = "编号最多允许200个字符!")
  22 + private String code;
  23 +
  24 + /**
  25 + * 价格表子表
  26 + */
  27 + @ApiModelProperty("价格表子表")
  28 + private List<CreatePriceSubTableVo> priceSubTableList;
  29 +
  30 +}
  1 +package com.lframework.xingyun.basedata.vo.price;
  2 +
  3 +import lombok.Data;
  4 +import com.lframework.starter.web.core.vo.PageVo;
  5 +import com.lframework.starter.web.core.vo.BaseVo;
  6 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  7 +import io.swagger.annotations.ApiModelProperty;
  8 +import org.hibernate.validator.constraints.Length;
  9 +
  10 +import java.io.Serializable;
  11 +
  12 +@Data
  13 +public class QueryPriceSubTableVo extends PageVo implements BaseVo, Serializable {
  14 +
  15 + private static final long serialVersionUID = 1L;
  16 +
  17 + /**
  18 + * 价格表id
  19 + */
  20 + @ApiModelProperty("价格表id")
  21 + private String priceId;
  22 +
  23 +}
  1 +package com.lframework.xingyun.basedata.vo.price;
  2 +
  3 +import com.lframework.starter.web.core.vo.BaseVo;
  4 +import com.lframework.starter.web.core.vo.PageVo;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +
  8 +import java.io.Serializable;
  9 +
  10 +@Data
  11 +public class QueryPriceVo extends PageVo implements BaseVo, Serializable {
  12 +
  13 + private static final long serialVersionUID = 1L;
  14 +
  15 + /**
  16 + * 编号
  17 + */
  18 + @ApiModelProperty("编号")
  19 + private String code;
  20 +
  21 + /**
  22 + * 创建人
  23 + */
  24 + @ApiModelProperty("创建人")
  25 + private String createBy;
  26 +
  27 + /**
  28 + * 创建时间
  29 + */
  30 + @ApiModelProperty("创建时间")
  31 + private String createTimeStart;
  32 +
  33 + /**
  34 + * 创建时间
  35 + */
  36 + @ApiModelProperty("创建时间")
  37 + private String createTimeEnd;
  38 +
  39 +
  40 +}
  1 +package com.lframework.xingyun.basedata.vo.price;
  2 +
  3 +import lombok.Data;
  4 +import com.lframework.starter.web.core.components.validation.IsNumberPrecision;
  5 +import java.math.BigDecimal;
  6 +import javax.validation.constraints.NotBlank;
  7 +import com.lframework.starter.web.core.vo.BaseVo;
  8 +import javax.validation.constraints.NotNull;
  9 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  10 +import io.swagger.annotations.ApiModelProperty;
  11 +import org.hibernate.validator.constraints.Length;
  12 +import java.io.Serializable;
  13 +
  14 +@Data
  15 +public class UpdatePriceSubTableVo implements BaseVo, Serializable {
  16 +
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + /**
  20 + * ID
  21 + */
  22 + @ApiModelProperty(value = "ID")
  23 + private String id;
  24 +
  25 +
  26 + /**
  27 + * 品名id
  28 + */
  29 + @ApiModelProperty(value = "品名id", required = true)
  30 + @NotBlank(message = "请输入品名id!")
  31 + @Length(message = "品名id最多允许32个字符!")
  32 + private String productId;
  33 +
  34 + /**
  35 + * 价格
  36 + */
  37 + @ApiModelProperty(value = "价格", required = true)
  38 + @TypeMismatch(message = "价格格式有误!")
  39 + @NotNull(message = "请输入价格!")
  40 + @IsNumberPrecision(message = "价格最多允许10位小数!", value = 10)
  41 + private BigDecimal price;
  42 +
  43 + /**
  44 + * 前端用ID
  45 + */
  46 + @ApiModelProperty(value = "前端用ID")
  47 + private String itemId;
  48 +
  49 +
  50 +}
  1 +package com.lframework.xingyun.basedata.vo.price;
  2 +
  3 +import com.lframework.starter.web.core.vo.BaseVo;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import org.hibernate.validator.constraints.Length;
  7 +import javax.validation.constraints.NotBlank;
  8 +import java.io.Serializable;
  9 +import java.util.List;
  10 +
  11 +@Data
  12 +public class UpdatePriceVo implements BaseVo, Serializable {
  13 +
  14 + private static final long serialVersionUID = 1L;
  15 +
  16 + /**
  17 + * ID
  18 + */
  19 + @ApiModelProperty(value = "ID", required = true)
  20 + @NotBlank(message = "id不能为空!")
  21 + private String id;
  22 +
  23 + /**
  24 + * 编号
  25 + */
  26 + @ApiModelProperty(value = "编号", required = true)
  27 + @NotBlank(message = "请输入编号!")
  28 + @Length(message = "编号最多允许200个字符!")
  29 + private String code;
  30 +
  31 + /**
  32 + * 价格表子表
  33 + */
  34 + @ApiModelProperty("价格表子表")
  35 + private List<UpdatePriceSubTableVo> priceSubTableList;
  36 +
  37 +
  38 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.lframework.xingyun.basedata.mappers.PriceMapper">
  4 +
  5 + <resultMap id="PriceSubTable" type="com.lframework.xingyun.basedata.entity.Price">
  6 + <id column="id" property="id"/>
  7 + <result column="code" property="code"/>
  8 + <result column="create_by_id" property="createById"/>
  9 + <result column="create_by" property="createBy"/>
  10 + <result column="update_by_id" property="updateById"/>
  11 + <result column="update_by" property="updateBy"/>
  12 + <result column="create_time" property="createTime"/>
  13 + <result column="update_time" property="updateTime"/>
  14 + </resultMap>
  15 +
  16 + <sql id="PriceSubTable_sql">
  17 + SELECT
  18 + tb.id,
  19 + tb.code,
  20 + tb.create_by_id,
  21 + tb.create_by,
  22 + tb.update_by_id,
  23 + tb.update_by,
  24 + tb.create_time,
  25 + tb.update_time
  26 + FROM base_data_price_sub_table AS tb
  27 + </sql>
  28 +
  29 + <select id="query" resultMap="PriceSubTable">
  30 + <include refid="PriceSubTable_sql"/>
  31 + <where>
  32 + <if test="vo.code != null and vo.code != ''">
  33 + AND tb.code =LIKE CONCAT('%', #{vo.code},'%')
  34 + </if>
  35 + <if test="vo.createBy != null and vo.createBy != ''">
  36 + AND tb.create_by LIKE CONCAT('%', #{vo.createBy},'%')
  37 + </if>
  38 + <if test="vo.createTimeStart != null">
  39 + AND tb.create_time >= #{vo.createTimeStart}
  40 + </if>
  41 + <if test="vo.createTimeEnd != null">
  42 + <![CDATA[
  43 + AND tb.create_time <= #{vo.createTimeEnd}
  44 + ]]>
  45 + </if>
  46 + </where>
  47 + </select>
  48 +</mapper>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.lframework.xingyun.basedata.mappers.PriceSubTableMapper">
  4 +
  5 + <resultMap id="PriceSubTable" type="com.lframework.xingyun.basedata.entity.PriceSubTable">
  6 + <id column="id" property="id"/>
  7 + <result column="price_id" property="priceId"/>
  8 + <result column="product_id" property="productId"/>
  9 + <result column="product_name" property="productName"/>
  10 + <result column="code" property="code"/>
  11 + <result column="type" property="type"/>
  12 + <result column="price" property="price"/>
  13 + <result column="create_by_id" property="createById"/>
  14 + <result column="create_by" property="createBy"/>
  15 + <result column="update_by_id" property="updateById"/>
  16 + <result column="update_by" property="updateBy"/>
  17 + <result column="create_time" property="createTime"/>
  18 + <result column="update_time" property="updateTime"/>
  19 + </resultMap>
  20 +
  21 + <sql id="PriceSubTable_sql">
  22 + SELECT
  23 + tb.id,
  24 + tb.price_id,
  25 + tb.product_id,
  26 + br.product_name as product_name,
  27 + br.code as code,
  28 + br.type as type,
  29 + tb.price,
  30 + tb.create_by_id,
  31 + tb.create_by,
  32 + tb.update_by_id,
  33 + tb.update_by,
  34 + tb.create_time,
  35 + tb.update_time
  36 + FROM base_data_price_sub_table AS tb
  37 + LEFT JOIN base_data_breed_relationship br on br.id=tb.product_id
  38 + </sql>
  39 +
  40 + <select id="query" resultMap="PriceSubTable">
  41 + <include refid="PriceSubTable_sql"/>
  42 + <where>
  43 + <if test="vo.priceId != null and vo.priceId != ''">
  44 + AND tb.price_id = #{vo.priceId}
  45 + </if>
  46 + </where>
  47 + </select>
  48 +</mapper>