Commit 6ef80aebf054014fd5b5e1bfbbca1a091665b02d

Authored by 杨鸣坤
1 parent a81244c6

楚江ERP:合同框架调整,经销标准合同提交

Showing 16 changed files with 1601 additions and 42 deletions
@@ -60,19 +60,87 @@ create table if not exists base_data_product_variety ( @@ -60,19 +60,87 @@ create table if not exists base_data_product_variety (
60 60
61 61
62 -- 合同框架 62 -- 合同框架
63 -create table if not exists `tbl_contract_framework` (  
64 - `id` varchar(32) primary key comment 'ID',  
65 - `code` varchar(20) not null comment '编号',  
66 - `customer_id` varchar(32) not null comment '客户id',  
67 - `company` varchar(50) not null comment '所属单位', 63 +create table if not exists `tbl_contract_framework`(
  64 + `id` varchar(32) primary key comment 'ID',
  65 + `code` varchar(20) not null comment '编号',
  66 + `customer_id` varchar(32) not null comment '客户id',
  67 + `company` varchar(50) not null comment '所属单位',
68 `has_framework_agreement` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否签订框架合同', 68 `has_framework_agreement` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否签订框架合同',
69 - `material_type_id` varchar(32) NOT NULL COMMENT '品种id',  
70 - `validity_time` date comment '期限',  
71 - `create_by_id` varchar(32) not null comment '创建人ID',  
72 - `create_by` varchar(20) not null comment '创建人',  
73 - `update_by_id` varchar(32) not null comment '更新人ID',  
74 - `update_by` varchar(20) not null comment '更新人',  
75 - `create_time` datetime default now() comment '创建时间',  
76 - `update_time` datetime default now() comment '更新时间'  
77 - ); 69 + `material_type_id` varchar(500) NOT NULL COMMENT '品种id',
  70 + `validity_time` date comment '期限',
  71 + `create_by_id` varchar(32) not null comment '创建人ID',
  72 + `create_by` varchar(20) not null comment '创建人',
  73 + `update_by_id` varchar(32) not null comment '更新人ID',
  74 + `update_by` varchar(20) not null comment '更新人',
  75 + `create_time` datetime default now() comment '创建时间',
  76 + `update_time` datetime default now() comment '更新时间'
  77 +);
  78 +
  79 +-- 经销标准合同
  80 +create table if not exists `tbl_contract_distributor_standard`(
  81 + `id` varchar(32) primary key comment 'ID',
  82 + `code` varchar(20) not null comment '编号',
  83 + `supplier` varchar(50) not null comment '供方',
  84 + `buyer` varchar(200) not null comment '需方',
  85 + `dept_id` varchar(32) not null comment '办事处',
  86 + `order_date` date NOT NULL COMMENT '订货日期',
  87 + `unit` VARCHAR(50) COMMENT '单位',
  88 + `total_quantity` DECIMAL(15, 4) COMMENT '合计数量',
  89 + `total_amount_excluding_tax` DECIMAL(15, 4) COMMENT '合计不含税金额',
  90 + `total_amount_including_tax` DECIMAL(15, 4) COMMENT '合计总金额',
  91 + `total_amount_capital` VARCHAR(100) COMMENT '合计人民币金额(大写)',
  92 + `deposit_info` VARCHAR(500) COMMENT '交付定金信息(包含数额、时间)',
  93 + `packaging_requirements` VARCHAR(200) COMMENT '包装要求',
  94 + `payment_terms` VARCHAR(500) COMMENT '付款信息(包含付款方式、付款期限)',
  95 + `execution_standard` VARCHAR(50) COMMENT '执行标准',
  96 + `transport_mode` VARCHAR(100) COMMENT '运输方式',
  97 + `destination` VARCHAR(200) COMMENT '目的地',
  98 + `includes_packaging_fee` tinyint(1) NOT NULL DEFAULT 0 COMMENT '单价中是否已包含包装费',
  99 + `includes_transport_fee` tinyint(1) NOT NULL DEFAULT 0 COMMENT '单价中是否已包含运费',
  100 + `piece_weight_head` TEXT COMMENT '件重条头',
  101 + `surface` TEXT COMMENT '表面',
  102 + `tolerance` TEXT COMMENT '公差',
  103 + `performance` TEXT COMMENT '性能',
  104 + `special_terms` VARCHAR(50) COMMENT '特别条款要求',
  105 + `designated_consignee` TEXT COMMENT '需方指定收货人',
  106 + `remarks` TEXT COMMENT '备注',
  107 + `create_by_id` varchar(32) not null comment '创建人ID',
  108 + `create_by` varchar(20) not null comment '创建人',
  109 + `update_by_id` varchar(32) not null comment '更新人ID',
  110 + `update_by` varchar(20) not null comment '更新人',
  111 + `create_time` datetime default now() comment '创建时间',
  112 + `update_time` datetime default now() comment '更新时间'
  113 +);
78 114
  115 +-- 经销合同物料行
  116 +create table if not exists `tbl_contract_distributor_line`
  117 +(
  118 + `id` varchar(32) primary key comment 'ID',
  119 + `contract_id` varchar(32) NOT NULL COMMENT '合同主表ID',
  120 + `product_id` VARCHAR(50) NOT NULL COMMENT '产品名称',
  121 + `industry` VARCHAR(100) COMMENT '行业',
  122 + `quality` VARCHAR(100) COMMENT '品质',
  123 + `brand` VARCHAR(100) COMMENT '牌号',
  124 + `thickness` DECIMAL(10, 4) COMMENT '厚度',
  125 + `thickness_tol_pos` DECIMAL(10, 4) COMMENT '厚度公差正',
  126 + `thickness_tol_neg` DECIMAL(10, 4) COMMENT '厚度公差负',
  127 + `width` DECIMAL(10, 4) COMMENT '宽度',
  128 + `width_tol_pos` DECIMAL(10, 4) COMMENT '宽度公差正',
  129 + `width_tol_neg` DECIMAL(10, 4) COMMENT '宽度公差负',
  130 + `length` DECIMAL(10, 4) COMMENT '长度',
  131 + `length_tol_pos` DECIMAL(10, 4) COMMENT '长度公差正',
  132 + `length_tol_neg` DECIMAL(10, 4) COMMENT '长度公差负',
  133 + `status` VARCHAR(50) COMMENT '状态',
  134 + `quantity` DECIMAL(15, 4) NOT NULL COMMENT '数量',
  135 + `unit_price` DECIMAL(15, 4) NOT NULL COMMENT '单价',
  136 + `amount_excluding_tax` DECIMAL(15, 2) COMMENT '不含税金额',
  137 + `total_amount` DECIMAL(15, 2) COMMENT '总金额',
  138 + `delivery_date` DATE COMMENT '发货日期',
  139 + `show_order` INT DEFAULT 0 COMMENT '排序',
  140 + `create_by_id` varchar(32) not null comment '创建人ID',
  141 + `create_by` varchar(20) not null comment '创建人',
  142 + `update_by_id` varchar(32) not null comment '更新人ID',
  143 + `update_by` varchar(20) not null comment '更新人',
  144 + `create_time` datetime default now() comment '创建时间',
  145 + `update_time` datetime default now() comment '更新时间'
  146 +)
  1 +package com.lframework.xingyun.sc.bo.contract;
  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.sc.entity.ContractDistributorStandard;
  7 +import io.swagger.annotations.ApiModelProperty;
  8 +import lombok.Data;
  9 +
  10 +import java.math.BigDecimal;
  11 +import java.time.LocalDate;
  12 +
  13 +/**
  14 + * <p>
  15 + * 经销标准合同 GetBo
  16 + * </p>
  17 + *
  18 + */
  19 +@Data
  20 +public class GetContractDistributorStandardBo extends BaseBo<ContractDistributorStandard> {
  21 +
  22 + /**
  23 + * ID
  24 + */
  25 + @ApiModelProperty("ID")
  26 + private String id;
  27 +
  28 + /**
  29 + * 编号
  30 + */
  31 + @ApiModelProperty("编号")
  32 + private String code;
  33 +
  34 + /**
  35 + * 供方
  36 + */
  37 + @ApiModelProperty("供方")
  38 + private String supplier;
  39 +
  40 + /**
  41 + * 需方
  42 + */
  43 + @ApiModelProperty("需方")
  44 + private String buyer;
  45 +
  46 + /**
  47 + * 办事处
  48 + */
  49 + @ApiModelProperty("办事处")
  50 + private String deptId;
  51 +
  52 + /**
  53 + * 订货日期
  54 + */
  55 + @ApiModelProperty("订货日期")
  56 + @JsonFormat(pattern = StringPool.DATE_PATTERN)
  57 + private LocalDate orderDate;
  58 +
  59 + /**
  60 + * 单位
  61 + */
  62 + @ApiModelProperty("单位")
  63 + private String unit;
  64 +
  65 + /**
  66 + * 合计人民币金额(大写)
  67 + */
  68 + @ApiModelProperty("合计人民币金额(大写)")
  69 + private String totalAmountCapital;
  70 +
  71 + /**
  72 + * 交付定金信息(包含数额、时间)
  73 + */
  74 + @ApiModelProperty("交付定金信息(包含数额、时间)")
  75 + private String depositInfo;
  76 +
  77 + /**
  78 + * 包装要求
  79 + */
  80 + @ApiModelProperty("包装要求")
  81 + private String packagingRequirements;
  82 +
  83 + /**
  84 + * 付款信息(包含付款方式、付款期限)
  85 + */
  86 + @ApiModelProperty("付款信息(包含付款方式、付款期限)")
  87 + private String paymentTerms;
  88 +
  89 + /**
  90 + * 执行标准
  91 + */
  92 + @ApiModelProperty("执行标准")
  93 + private String executionStandard;
  94 +
  95 + /**
  96 + * 运输方式
  97 + */
  98 + @ApiModelProperty("运输方式")
  99 + private String transportMode;
  100 +
  101 + /**
  102 + * 目的地
  103 + */
  104 + @ApiModelProperty("目的地")
  105 + private String destination;
  106 +
  107 + /**
  108 + * 单价中是否已包含包装费
  109 + */
  110 + @ApiModelProperty("单价中是否已包含包装费")
  111 + private Boolean includesPackagingFee;
  112 +
  113 + /**
  114 + * 单价中是否已包含运费
  115 + */
  116 + @ApiModelProperty("单价中是否已包含运费")
  117 + private Boolean includesTransportFee;
  118 +
  119 + /**
  120 + * 件重条头
  121 + */
  122 + @ApiModelProperty("件重条头")
  123 + private String pieceWeightHead;
  124 +
  125 + /**
  126 + * 表面
  127 + */
  128 + @ApiModelProperty("表面")
  129 + private String surface;
  130 +
  131 + /**
  132 + * 公差
  133 + */
  134 + @ApiModelProperty("公差")
  135 + private String tolerance;
  136 +
  137 + /**
  138 + * 性能
  139 + */
  140 + @ApiModelProperty("性能")
  141 + private String performance;
  142 +
  143 + /**
  144 + * 特别条款要求
  145 + */
  146 + @ApiModelProperty("特别条款要求")
  147 + private String specialTerms;
  148 +
  149 + /**
  150 + * 需方指定收货人
  151 + */
  152 + @ApiModelProperty("需方指定收货人")
  153 + private String designatedConsignee;
  154 +
  155 + /**
  156 + * 备注
  157 + */
  158 + @ApiModelProperty("备注")
  159 + private String remarks;
  160 +
  161 + /**
  162 + * 合计不含税金额
  163 + */
  164 + @ApiModelProperty("合计不含税金额")
  165 + private BigDecimal totalAmountExcludingTax;
  166 +
  167 + /**
  168 + * 合计总金额
  169 + */
  170 + @ApiModelProperty("合计总金额")
  171 + private BigDecimal totalAmountIncludingTax;
  172 +
  173 + /**
  174 + * 合计数量
  175 + */
  176 + @ApiModelProperty("合计数量")
  177 + private BigDecimal totalQuantity;
  178 +
  179 + public GetContractDistributorStandardBo() {
  180 +
  181 + }
  182 +
  183 + public GetContractDistributorStandardBo(ContractDistributorStandard dto) {
  184 +
  185 + super(dto);
  186 + }
  187 +
  188 + @Override
  189 + public BaseBo<ContractDistributorStandard> convert(ContractDistributorStandard dto) {
  190 + return super.convert(dto);
  191 + }
  192 +
  193 + @Override
  194 + protected void afterInit(ContractDistributorStandard dto) {
  195 +
  196 + }
  197 +}
  1 +package com.lframework.xingyun.sc.bo.contract;
  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.sc.entity.ContractDistributorStandard;
  7 +import io.swagger.annotations.ApiModelProperty;
  8 +import lombok.Data;
  9 +
  10 +import java.math.BigDecimal;
  11 +import java.time.LocalDate;
  12 +
  13 +/**
  14 + * <p>
  15 + * 经销标准合同 QueryBo
  16 + * </p>
  17 + */
  18 +@Data
  19 +public class QueryContractDistributorStandardBo extends BaseBo<ContractDistributorStandard> {
  20 +
  21 + /**
  22 + * ID
  23 + */
  24 + @ApiModelProperty("ID")
  25 + private String id;
  26 +
  27 + /**
  28 + * 编号
  29 + */
  30 + @ApiModelProperty("编号")
  31 + private String code;
  32 +
  33 + /**
  34 + * 需方
  35 + */
  36 + @ApiModelProperty("需方")
  37 + private String buyer;
  38 +
  39 + /**
  40 + * 办事处
  41 + */
  42 + @ApiModelProperty("办事处")
  43 + private String deptId;
  44 +
  45 + /**
  46 + * 创建人
  47 + */
  48 + @ApiModelProperty("创建人")
  49 + private String createBy;
  50 +
  51 + /**
  52 + * 订货日期
  53 + */
  54 + @ApiModelProperty("订货日期")
  55 + @JsonFormat(pattern = StringPool.DATE_PATTERN)
  56 + private LocalDate orderDate;
  57 +
  58 + /**
  59 + * 运输方式
  60 + */
  61 + @ApiModelProperty("运输方式")
  62 + private String transportMode;
  63 +
  64 + /**
  65 + * 目的地
  66 + */
  67 + @ApiModelProperty("目的地")
  68 + private String destination;
  69 +
  70 + /**
  71 + * 合计总金额
  72 + */
  73 + @ApiModelProperty("合计总金额")
  74 + private BigDecimal totalAmountIncludingTax;
  75 +
  76 + /**
  77 + * 合计数量
  78 + */
  79 + @ApiModelProperty("合计数量")
  80 + private BigDecimal totalQuantity;
  81 +
  82 + public QueryContractDistributorStandardBo() {
  83 +
  84 + }
  85 +
  86 + public QueryContractDistributorStandardBo(ContractDistributorStandard dto) {
  87 +
  88 + super(dto);
  89 + }
  90 +
  91 + @Override
  92 + public BaseBo<ContractDistributorStandard> convert(ContractDistributorStandard dto) {
  93 + return super.convert(dto);
  94 + }
  95 +
  96 + @Override
  97 + protected void afterInit(ContractDistributorStandard dto) {
  98 +
  99 + }
  100 +}
  1 +package com.lframework.xingyun.sc.controller.contract;
  2 +
  3 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  4 +import com.lframework.starter.web.core.annotations.security.HasPermission;
  5 +import com.lframework.starter.web.core.components.resp.InvokeResult;
  6 +import com.lframework.starter.web.core.components.resp.InvokeResultBuilder;
  7 +import com.lframework.starter.web.core.components.resp.PageResult;
  8 +import com.lframework.starter.web.core.controller.DefaultBaseController;
  9 +import com.lframework.starter.web.core.utils.PageResultUtil;
  10 +import com.lframework.xingyun.sc.bo.contract.GetContractDistributorStandardBo;
  11 +import com.lframework.xingyun.sc.bo.contract.QueryContractDistributorStandardBo;
  12 +import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
  13 +import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
  14 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo;
  15 +import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo;
  16 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo;
  17 +import io.swagger.annotations.Api;
  18 +import io.swagger.annotations.ApiImplicitParam;
  19 +import io.swagger.annotations.ApiOperation;
  20 +import org.apache.commons.collections4.CollectionUtils;
  21 +import org.springframework.beans.factory.annotation.Autowired;
  22 +import org.springframework.validation.annotation.Validated;
  23 +import org.springframework.web.bind.annotation.*;
  24 +
  25 +import javax.validation.Valid;
  26 +import javax.validation.constraints.NotBlank;
  27 +import java.util.List;
  28 +import java.util.stream.Collectors;
  29 +
  30 +/**
  31 + * 经销标准合同 Controller
  32 + */
  33 +@Api(tags = "经销标准合同")
  34 +@Validated
  35 +@RestController
  36 +@RequestMapping("/contract/contractDistributorStandard")
  37 +public class ContractDistributorStandardController extends DefaultBaseController {
  38 +
  39 + @Autowired
  40 + private ContractDistributorStandardService contractDistributorStandardService;
  41 +
  42 + /**
  43 + * 查询列表
  44 + */
  45 + @ApiOperation("查询列表")
  46 + @HasPermission({"contract:contractDistributorStandard:query"})
  47 + @GetMapping("/query")
  48 + public InvokeResult<PageResult<QueryContractDistributorStandardBo>> query(@Valid QueryContractDistributorStandardVo vo) {
  49 +
  50 + PageResult<ContractDistributorStandard> pageResult = contractDistributorStandardService.query(getPageIndex(vo), getPageSize(vo), vo);
  51 +
  52 + List<ContractDistributorStandard> datas = pageResult.getDatas();
  53 + List<QueryContractDistributorStandardBo> results = null;
  54 +
  55 + if (CollectionUtils.isNotEmpty(datas)) {
  56 + results = datas.stream().map(QueryContractDistributorStandardBo::new).collect(Collectors.toList());
  57 + }
  58 +
  59 + return InvokeResultBuilder.success(PageResultUtil.rebuild(pageResult, results));
  60 + }
  61 +
  62 + /**
  63 + * 根据ID查询
  64 + */
  65 + @ApiOperation("根据ID查询")
  66 + @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true)
  67 + @HasPermission({"contract:contractDistributorStandard:query"})
  68 + @GetMapping
  69 + public InvokeResult<GetContractDistributorStandardBo> get(@NotBlank(message = "id不能为空!") String id) {
  70 +
  71 + ContractDistributorStandard data = contractDistributorStandardService.findById(id);
  72 + if (data == null) {
  73 + throw new DefaultClientException("经销标准合同不存在!");
  74 + }
  75 +
  76 + GetContractDistributorStandardBo result = new GetContractDistributorStandardBo(data);
  77 +
  78 + return InvokeResultBuilder.success(result);
  79 + }
  80 +
  81 + /**
  82 + * 新增
  83 + */
  84 + @ApiOperation("新增")
  85 + @HasPermission({"contract:contractDistributorStandard:add"})
  86 + @PostMapping
  87 + public InvokeResult<Void> create(@Valid CreateContractDistributorStandardVo vo) {
  88 +
  89 + contractDistributorStandardService.create(vo);
  90 +
  91 + return InvokeResultBuilder.success();
  92 + }
  93 +
  94 + /**
  95 + * 修改
  96 + */
  97 + @ApiOperation("修改")
  98 + @HasPermission({"contract:contractDistributorStandard:modify"})
  99 + @PutMapping
  100 + public InvokeResult<Void> update(@Valid UpdateContractDistributorStandardVo vo) {
  101 +
  102 + contractDistributorStandardService.update(vo);
  103 +
  104 + contractDistributorStandardService.cleanCacheByKey(vo.getId());
  105 +
  106 + return InvokeResultBuilder.success();
  107 + }
  108 +}
1 package com.lframework.xingyun.sc.controller.contract; 1 package com.lframework.xingyun.sc.controller.contract;
2 2
3 import com.lframework.starter.common.exceptions.impl.DefaultClientException; 3 import com.lframework.starter.common.exceptions.impl.DefaultClientException;
4 -import com.lframework.starter.common.utils.DateUtil;  
5 -import com.lframework.starter.common.utils.StringUtil;  
6 import com.lframework.starter.mq.core.utils.ExportTaskUtil; 4 import com.lframework.starter.mq.core.utils.ExportTaskUtil;
7 import com.lframework.starter.web.core.annotations.security.HasPermission; 5 import com.lframework.starter.web.core.annotations.security.HasPermission;
8 import com.lframework.starter.web.core.components.resp.InvokeResultBuilder; 6 import com.lframework.starter.web.core.components.resp.InvokeResultBuilder;
@@ -50,9 +48,7 @@ import javax.validation.constraints.NotBlank; @@ -50,9 +48,7 @@ import javax.validation.constraints.NotBlank;
50 import javax.validation.constraints.NotNull; 48 import javax.validation.constraints.NotNull;
51 import java.time.LocalDate; 49 import java.time.LocalDate;
52 import java.time.format.DateTimeFormatter; 50 import java.time.format.DateTimeFormatter;
53 -import java.util.HashMap;  
54 -import java.util.List;  
55 -import java.util.Map; 51 +import java.util.*;
56 import java.util.function.Function; 52 import java.util.function.Function;
57 import java.util.stream.Collectors; 53 import java.util.stream.Collectors;
58 54
@@ -86,7 +82,7 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -86,7 +82,7 @@ public class ContractFrameworkController extends DefaultBaseController {
86 * 查询列表 82 * 查询列表
87 */ 83 */
88 @ApiOperation("查询列表") 84 @ApiOperation("查询列表")
89 - @HasPermission({"contractFramework:contractFramework:query"}) 85 + @HasPermission({"contract:contractFramework:query"})
90 @GetMapping("/query") 86 @GetMapping("/query")
91 public InvokeResult<PageResult<QueryContractFrameworkBo>> query(@Valid QueryContractFrameworkVo vo) { 87 public InvokeResult<PageResult<QueryContractFrameworkBo>> query(@Valid QueryContractFrameworkVo vo) {
92 88
@@ -105,7 +101,13 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -105,7 +101,13 @@ public class ContractFrameworkController extends DefaultBaseController {
105 } 101 }
106 102
107 results = boPageResult.getDatas(); 103 results = boPageResult.getDatas();
108 - List<String> materialTypeIdList = results.stream().map(QueryContractFrameworkBo::getMaterialTypeId).collect(Collectors.toList()); 104 + List<String> materialTypeIdList = results.stream()
  105 + .filter(bo -> StringUtils.isNotBlank(bo.getMaterialTypeId()))
  106 + .flatMap(bo -> Arrays.stream(bo.getMaterialTypeId().split(",")))
  107 + .map(String::trim)
  108 + .filter(StringUtils::isNotBlank)
  109 + .distinct()
  110 + .collect(Collectors.toList());
109 Map<String, ProductVariety> productVarietyMap = new HashMap<>(materialTypeIdList.size()); 111 Map<String, ProductVariety> productVarietyMap = new HashMap<>(materialTypeIdList.size());
110 if (CollectionUtils.isNotEmpty(materialTypeIdList)) { 112 if (CollectionUtils.isNotEmpty(materialTypeIdList)) {
111 List<ProductVariety> productVarietyList = productVarietyService.listByIds(materialTypeIdList); 113 List<ProductVariety> productVarietyList = productVarietyService.listByIds(materialTypeIdList);
@@ -129,8 +131,15 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -129,8 +131,15 @@ public class ContractFrameworkController extends DefaultBaseController {
129 if (bo == null) return; 131 if (bo == null) return;
130 132
131 if (StringUtils.isNotBlank(bo.getMaterialTypeId())) { 133 if (StringUtils.isNotBlank(bo.getMaterialTypeId())) {
132 - ProductVariety productVariety = productVarietyMap.get(bo.getMaterialTypeId());  
133 - bo.setMaterialTypeName(productVariety != null ? productVariety.getName() : ""); 134 + String materialTypeName = Arrays.stream(bo.getMaterialTypeId().split(","))
  135 + .map(String::trim)
  136 + .filter(StringUtils::isNotBlank)
  137 + .map(productVarietyMap::get)
  138 + .filter(Objects::nonNull)
  139 + .map(ProductVariety::getName)
  140 + .collect(Collectors.joining(","));
  141 +
  142 + bo.setMaterialTypeName(materialTypeName);
134 } 143 }
135 144
136 if (StringUtils.isNotBlank(bo.getCustomerId())) { 145 if (StringUtils.isNotBlank(bo.getCustomerId())) {
@@ -151,14 +160,14 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -151,14 +160,14 @@ public class ContractFrameworkController extends DefaultBaseController {
151 * 新增 160 * 新增
152 */ 161 */
153 @ApiOperation("新增") 162 @ApiOperation("新增")
154 - @HasPermission({"contractFramework:contractFramework:add"}) 163 + @HasPermission({"contract:contractFramework:add"})
155 @PostMapping 164 @PostMapping
156 public InvokeResult<String> create(@Valid CreateContractFrameworkVo vo) { 165 public InvokeResult<String> create(@Valid CreateContractFrameworkVo vo) {
157 return InvokeResultBuilder.success(contractFrameworkService.create(vo)); 166 return InvokeResultBuilder.success(contractFrameworkService.create(vo));
158 } 167 }
159 168
160 @ApiOperation("获取code") 169 @ApiOperation("获取code")
161 - @HasPermission({"contractFramework:contractFramework:add"}) 170 + @HasPermission({"contract:contractFramework:add"})
162 @GetMapping("/code") 171 @GetMapping("/code")
163 public InvokeResult<String> code(String company) { 172 public InvokeResult<String> code(String company) {
164 StringBuilder stringBuilder = new StringBuilder(); 173 StringBuilder stringBuilder = new StringBuilder();
@@ -187,7 +196,7 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -187,7 +196,7 @@ public class ContractFrameworkController extends DefaultBaseController {
187 */ 196 */
188 @ApiOperation("根据ID查询") 197 @ApiOperation("根据ID查询")
189 @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true) 198 @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true)
190 - @HasPermission({"contractFramework:contractFramework:query"}) 199 + @HasPermission({"contract:contractFramework:query"})
191 @GetMapping 200 @GetMapping
192 public InvokeResult<QueryContractFrameworkBo> get(@NotBlank(message = "id不能为空!") String id) { 201 public InvokeResult<QueryContractFrameworkBo> get(@NotBlank(message = "id不能为空!") String id) {
193 202
@@ -197,11 +206,37 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -197,11 +206,37 @@ public class ContractFrameworkController extends DefaultBaseController {
197 } 206 }
198 207
199 QueryContractFrameworkBo result = new QueryContractFrameworkBo(data); 208 QueryContractFrameworkBo result = new QueryContractFrameworkBo(data);
200 - String materialTypeId = result.getMaterialTypeId();  
201 - ProductVariety productVariety = productVarietyService.findById(materialTypeId); 209 + String materialTypeIds = result.getMaterialTypeId();
  210 + if (StringUtils.isNotBlank(materialTypeIds)) {
  211 + // 分割ID并去重
  212 + List<String> idList = Arrays.stream(materialTypeIds.split(","))
  213 + .map(String::trim)
  214 + .filter(StringUtils::isNotEmpty)
  215 + .collect(Collectors.toList());
  216 +
  217 + if (CollectionUtils.isNotEmpty(idList)) {
  218 + // 批量查询
  219 + List<ProductVariety> productVarietyList = productVarietyService.listByIds(idList);
  220 +
  221 + // 转换为Map提高查找效率
  222 + Map<String, String> idToNameMap = productVarietyList.stream()
  223 + .collect(Collectors.toMap(
  224 + ProductVariety::getId,
  225 + ProductVariety::getName
  226 + ));
  227 +
  228 + // 按原始顺序构建名称字符串
  229 + String materialTypeName = idList.stream()
  230 + .map(idToNameMap::get)
  231 + .filter(Objects::nonNull) // 过滤掉未找到的ID
  232 + .collect(Collectors.joining(","));
  233 +
  234 + result.setMaterialTypeName(materialTypeName);
  235 + }
  236 + }
  237 +
202 String customerId = result.getCustomerId(); 238 String customerId = result.getCustomerId();
203 Customer customer = customerService.findById(customerId); 239 Customer customer = customerService.findById(customerId);
204 - result.setMaterialTypeName(productVariety != null ? productVariety.getName() : "");  
205 result.setCustomerName(customer != null ? customer.getName() : ""); 240 result.setCustomerName(customer != null ? customer.getName() : "");
206 SysDataDicItem sysDataDicItem = sysDataDicItemService.findByCode(SUPPLIER_DIC_CODE, result.getCompany()); 241 SysDataDicItem sysDataDicItem = sysDataDicItemService.findByCode(SUPPLIER_DIC_CODE, result.getCompany());
207 result.setCompanyName(sysDataDicItem != null ? sysDataDicItem.getName() : ""); 242 result.setCompanyName(sysDataDicItem != null ? sysDataDicItem.getName() : "");
@@ -213,7 +248,7 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -213,7 +248,7 @@ public class ContractFrameworkController extends DefaultBaseController {
213 * 修改 248 * 修改
214 */ 249 */
215 @ApiOperation("修改") 250 @ApiOperation("修改")
216 - @HasPermission({"contractFramework:contractFramework:modify"}) 251 + @HasPermission({"contract:contractFramework:modify"})
217 @PutMapping 252 @PutMapping
218 public InvokeResult<Void> update(@Valid UpdateContractFrameworkVo vo) { 253 public InvokeResult<Void> update(@Valid UpdateContractFrameworkVo vo) {
219 254
@@ -231,7 +266,7 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -231,7 +266,7 @@ public class ContractFrameworkController extends DefaultBaseController {
231 * @return 266 * @return
232 */ 267 */
233 @ApiOperation("导出") 268 @ApiOperation("导出")
234 - @HasPermission({"contractFramework:contractFramework:export"}) 269 + @HasPermission({"contract:contractFramework:export"})
235 @PostMapping("/export") 270 @PostMapping("/export")
236 public InvokeResult<Void> export(@Valid QueryContractFrameworkVo vo) { 271 public InvokeResult<Void> export(@Valid QueryContractFrameworkVo vo) {
237 272
@@ -241,14 +276,14 @@ public class ContractFrameworkController extends DefaultBaseController { @@ -241,14 +276,14 @@ public class ContractFrameworkController extends DefaultBaseController {
241 } 276 }
242 277
243 @ApiOperation("下载导入模板") 278 @ApiOperation("下载导入模板")
244 - @HasPermission({"contractFramework:contractFramework:import"}) 279 + @HasPermission({"contract:contractFramework:import"})
245 @GetMapping("/import/template") 280 @GetMapping("/import/template")
246 public void downloadImportTemplate() { 281 public void downloadImportTemplate() {
247 ExcelUtil.exportXls("合同框架导入模板", ContractFrameworkImportModel.class); 282 ExcelUtil.exportXls("合同框架导入模板", ContractFrameworkImportModel.class);
248 } 283 }
249 284
250 @ApiOperation("导入") 285 @ApiOperation("导入")
251 - @HasPermission({"contractFramework:contractFramework:import"}) 286 + @HasPermission({"contract:contractFramework:import"})
252 @PostMapping("/import") 287 @PostMapping("/import")
253 public InvokeResult<Void> importExcel(@NotBlank(message = "ID不能为空") String id, 288 public InvokeResult<Void> importExcel(@NotBlank(message = "ID不能为空") String id,
254 @NotNull(message = "请上传文件") MultipartFile file) { 289 @NotNull(message = "请上传文件") MultipartFile file) {
  1 +package com.lframework.xingyun.sc.entity;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +
  5 +import java.math.BigDecimal;
  6 +
  7 +import com.lframework.starter.web.core.dto.BaseDto;
  8 +
  9 +import java.time.LocalDate;
  10 +import java.time.LocalDateTime;
  11 +
  12 +import com.baomidou.mybatisplus.annotation.FieldFill;
  13 +import com.lframework.starter.web.core.entity.BaseEntity;
  14 +import com.baomidou.mybatisplus.annotation.TableField;
  15 +import lombok.Data;
  16 +
  17 +/**
  18 + * <p>
  19 + * 经销标准合同
  20 + * </p>
  21 + */
  22 +@Data
  23 +@TableName("tbl_contract_distributor_standard")
  24 +public class ContractDistributorStandard extends BaseEntity implements BaseDto {
  25 +
  26 + private static final long serialVersionUID = 1L;
  27 +
  28 + public static final String CACHE_NAME = "ContractDistributorStandard";
  29 +
  30 + /**
  31 + * ID
  32 + */
  33 + private String id;
  34 +
  35 + /**
  36 + * 编号
  37 + */
  38 + private String code;
  39 +
  40 + /**
  41 + * 供方
  42 + */
  43 + private String supplier;
  44 +
  45 + /**
  46 + * 需方
  47 + */
  48 + private String buyer;
  49 +
  50 + /**
  51 + * 办事处
  52 + */
  53 + private String deptId;
  54 +
  55 + /**
  56 + * 订货日期
  57 + */
  58 + private LocalDate orderDate;
  59 +
  60 + /**
  61 + * 单位
  62 + */
  63 + private String unit;
  64 +
  65 + /**
  66 + * 合计人民币金额(大写)
  67 + */
  68 + private String totalAmountCapital;
  69 +
  70 + /**
  71 + * 交付定金信息(包含数额、时间)
  72 + */
  73 + private String depositInfo;
  74 +
  75 + /**
  76 + * 包装要求
  77 + */
  78 + private String packagingRequirements;
  79 +
  80 + /**
  81 + * 付款信息(包含付款方式、付款期限)
  82 + */
  83 + private String paymentTerms;
  84 +
  85 + /**
  86 + * 执行标准
  87 + */
  88 + private String executionStandard;
  89 +
  90 + /**
  91 + * 运输方式
  92 + */
  93 + private String transportMode;
  94 +
  95 + /**
  96 + * 目的地
  97 + */
  98 + private String destination;
  99 +
  100 + /**
  101 + * 单价中是否已包含包装费
  102 + */
  103 + private Boolean includesPackagingFee;
  104 +
  105 + /**
  106 + * 单价中是否已包含运费
  107 + */
  108 + private Boolean includesTransportFee;
  109 +
  110 + /**
  111 + * 件重条头
  112 + */
  113 + private String pieceWeightHead;
  114 +
  115 + /**
  116 + * 表面
  117 + */
  118 + private String surface;
  119 +
  120 + /**
  121 + * 公差
  122 + */
  123 + private String tolerance;
  124 +
  125 + /**
  126 + * 性能
  127 + */
  128 + private String performance;
  129 +
  130 + /**
  131 + * 特别条款要求
  132 + */
  133 + private String specialTerms;
  134 +
  135 + /**
  136 + * 需方指定收货人
  137 + */
  138 + private String designatedConsignee;
  139 +
  140 + /**
  141 + * 备注
  142 + */
  143 + private String remarks;
  144 +
  145 + /**
  146 + * 创建人ID
  147 + */
  148 + @TableField(fill = FieldFill.INSERT)
  149 + private String createById;
  150 +
  151 + /**
  152 + * 创建人
  153 + */
  154 + @TableField(fill = FieldFill.INSERT)
  155 + private String createBy;
  156 +
  157 + /**
  158 + * 更新人ID
  159 + */
  160 + @TableField(fill = FieldFill.INSERT_UPDATE)
  161 + private String updateById;
  162 +
  163 + /**
  164 + * 更新人
  165 + */
  166 + @TableField(fill = FieldFill.INSERT_UPDATE)
  167 + private String updateBy;
  168 +
  169 + /**
  170 + * 创建时间
  171 + */
  172 + @TableField(fill = FieldFill.INSERT)
  173 + private LocalDateTime createTime;
  174 +
  175 + /**
  176 + * 更新时间
  177 + */
  178 + @TableField(fill = FieldFill.INSERT_UPDATE)
  179 + private LocalDateTime updateTime;
  180 +
  181 + /**
  182 + * 合计数量
  183 + */
  184 + private BigDecimal totalQuantity;
  185 +
  186 + /**
  187 + * 合计不含税金额
  188 + */
  189 + private BigDecimal totalAmountExcludingTax;
  190 +
  191 + /**
  192 + * 合计总金额
  193 + */
  194 + private BigDecimal totalAmountIncludingTax;
  195 +
  196 +}
@@ -21,11 +21,13 @@ import com.lframework.xingyun.sc.controller.contract.ContractFrameworkController @@ -21,11 +21,13 @@ import com.lframework.xingyun.sc.controller.contract.ContractFrameworkController
21 import com.lframework.xingyun.sc.entity.ContractFramework; 21 import com.lframework.xingyun.sc.entity.ContractFramework;
22 import io.swagger.annotations.ApiModelProperty; 22 import io.swagger.annotations.ApiModelProperty;
23 import lombok.Data; 23 import lombok.Data;
  24 +import org.apache.commons.collections4.CollectionUtils;
24 import org.apache.commons.lang3.BooleanUtils; 25 import org.apache.commons.lang3.BooleanUtils;
25 import org.apache.commons.lang3.StringUtils; 26 import org.apache.commons.lang3.StringUtils;
26 27
27 import java.time.format.DateTimeFormatter; 28 import java.time.format.DateTimeFormatter;
28 -import java.util.Date; 29 +import java.util.*;
  30 +import java.util.stream.Collectors;
29 31
30 @Data 32 @Data
31 public class ContractFrameworkExportModel extends BaseBo<ContractFramework> implements ExcelModel { 33 public class ContractFrameworkExportModel extends BaseBo<ContractFramework> implements ExcelModel {
@@ -90,9 +92,31 @@ public class ContractFrameworkExportModel extends BaseBo<ContractFramework> impl @@ -90,9 +92,31 @@ public class ContractFrameworkExportModel extends BaseBo<ContractFramework> impl
90 } 92 }
91 93
92 if (StringUtils.isNotBlank(dto.getMaterialTypeId())) { 94 if (StringUtils.isNotBlank(dto.getMaterialTypeId())) {
93 - ProductVarietyService productVarietyService = ApplicationUtil.getBean(ProductVarietyService.class);  
94 - ProductVariety productVariety = productVarietyService.findById(dto.getMaterialTypeId());  
95 - this.materialTypeName = productVariety != null ? productVariety.getName() : ""; 95 + String materialTypeIds = dto.getMaterialTypeId();
  96 + // 分割ID并去重
  97 + List<String> idList = Arrays.stream(materialTypeIds.split(","))
  98 + .map(String::trim)
  99 + .filter(StringUtils::isNotEmpty)
  100 + .collect(Collectors.toList());
  101 +
  102 + if (CollectionUtils.isNotEmpty(idList)) {
  103 + ProductVarietyService productVarietyService = ApplicationUtil.getBean(ProductVarietyService.class);
  104 + // 批量查询
  105 + List<ProductVariety> productVarietyList = productVarietyService.listByIds(idList);
  106 +
  107 + // 转换为Map提高查找效率
  108 + Map<String, String> idToNameMap = productVarietyList.stream()
  109 + .collect(Collectors.toMap(
  110 + ProductVariety::getId,
  111 + ProductVariety::getName
  112 + ));
  113 +
  114 + // 按原始顺序构建名称字符串
  115 + this.materialTypeName = idList.stream()
  116 + .map(idToNameMap::get)
  117 + .filter(Objects::nonNull) // 过滤掉未找到的ID
  118 + .collect(Collectors.joining(","));
  119 + }
96 } 120 }
97 121
98 this.hasFrameworkAgreementStr = BooleanUtils.isTrue(dto.getHasFrameworkAgreement()) ? "是" : "否"; 122 this.hasFrameworkAgreementStr = BooleanUtils.isTrue(dto.getHasFrameworkAgreement()) ? "是" : "否";
@@ -30,7 +30,10 @@ import org.apache.commons.lang3.StringUtils; @@ -30,7 +30,10 @@ import org.apache.commons.lang3.StringUtils;
30 30
31 import java.time.LocalDate; 31 import java.time.LocalDate;
32 import java.time.format.DateTimeFormatter; 32 import java.time.format.DateTimeFormatter;
  33 +import java.util.Arrays;
33 import java.util.List; 34 import java.util.List;
  35 +import java.util.Objects;
  36 +import java.util.stream.Collectors;
34 37
35 @Slf4j 38 @Slf4j
36 public class ContractFrameworkImportListener extends ExcelImportListener<ContractFrameworkImportModel> { 39 public class ContractFrameworkImportListener extends ExcelImportListener<ContractFrameworkImportModel> {
@@ -77,16 +80,25 @@ public class ContractFrameworkImportListener extends ExcelImportListener<Contrac @@ -77,16 +80,25 @@ public class ContractFrameworkImportListener extends ExcelImportListener<Contrac
77 "第" + context.readRowHolder().getRowIndex() + "行授信截止日期不可为空"); 80 "第" + context.readRowHolder().getRowIndex() + "行授信截止日期不可为空");
78 } 81 }
79 82
  83 + if (StringUtils.isBlank(data.getMaterialTypeName())) {
  84 + throw new DefaultClientException(
  85 + "第" + context.readRowHolder().getRowIndex() + "行品种不可为空!");
  86 + }
  87 +
80 ProductVarietyService productVarietyService = ApplicationUtil.getBean(ProductVarietyService.class); 88 ProductVarietyService productVarietyService = ApplicationUtil.getBean(ProductVarietyService.class);
81 Wrapper<ProductVariety> productVarietyWrapper = Wrappers.lambdaQuery(ProductVariety.class) 89 Wrapper<ProductVariety> productVarietyWrapper = Wrappers.lambdaQuery(ProductVariety.class)
82 - .eq(ProductVariety::getName, data.getMaterialTypeName());  
83 - ProductVariety productVariety = productVarietyService.getOne(productVarietyWrapper);  
84 - if (productVariety == null) { 90 + .in(ProductVariety::getName, Arrays.asList(data.getMaterialTypeName().split(",")));
  91 + List<ProductVariety> productVarietyList = productVarietyService.list(productVarietyWrapper);
  92 + if (CollectionUtils.isEmpty(productVarietyList)) {
85 throw new DefaultClientException("第" + context.readRowHolder().getRowIndex() + "行,品种[" + data.getMaterialTypeName() 93 throw new DefaultClientException("第" + context.readRowHolder().getRowIndex() + "行,品种[" + data.getMaterialTypeName()
86 + "]不存在,请检查后再次导入!"); 94 + "]不存在,请检查后再次导入!");
87 } 95 }
88 96
89 - data.setMaterialTypId(productVariety.getId()); 97 + data.setMaterialTypId(productVarietyList.stream()
  98 + .map(ProductVariety::getId)
  99 + .filter(Objects::nonNull)
  100 + .distinct()
  101 + .collect(Collectors.joining(",")));
90 } 102 }
91 103
92 @Override 104 @Override
  1 +package com.lframework.xingyun.sc.impl.contract;
  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.xingyun.sc.entity.ContractDistributorStandard;
  7 +import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
  8 +import com.lframework.starter.web.core.utils.PageResultUtil;
  9 +import com.lframework.starter.web.core.utils.OpLogUtil;
  10 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  11 +import com.lframework.starter.web.core.utils.IdUtil;
  12 +import com.lframework.starter.web.core.annotations.oplog.OpLog;
  13 +import com.lframework.starter.web.core.utils.PageHelperUtil;
  14 +import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
  15 +import com.lframework.starter.web.core.components.resp.PageResult;
  16 +import com.lframework.starter.common.utils.ObjectUtil;
  17 +import com.lframework.starter.common.utils.Assert;
  18 +import com.lframework.xingyun.sc.mappers.ContractDistributorStandardMapper;
  19 +import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
  20 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo;
  21 +import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo;
  22 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo;
  23 +import org.springframework.cache.annotation.CacheEvict;
  24 +import org.springframework.cache.annotation.Cacheable;
  25 +import org.springframework.stereotype.Service;
  26 +import org.springframework.transaction.annotation.Transactional;
  27 +
  28 +import java.io.Serializable;
  29 +import java.util.List;
  30 +
  31 +@Service
  32 +public class ContractDistributorStandardServiceImpl extends
  33 + BaseMpServiceImpl<ContractDistributorStandardMapper, ContractDistributorStandard> implements ContractDistributorStandardService {
  34 +
  35 + @Override
  36 + public PageResult<ContractDistributorStandard> query(Integer pageIndex, Integer pageSize, QueryContractDistributorStandardVo vo) {
  37 +
  38 + Assert.greaterThanZero(pageIndex);
  39 + Assert.greaterThanZero(pageSize);
  40 +
  41 + PageHelperUtil.startPage(pageIndex, pageSize);
  42 + List<ContractDistributorStandard> datas = this.query(vo);
  43 +
  44 + return PageResultUtil.convert(new PageInfo<>(datas));
  45 + }
  46 +
  47 + @Override
  48 + public List<ContractDistributorStandard> query(QueryContractDistributorStandardVo vo) {
  49 +
  50 + return getBaseMapper().query(vo);
  51 + }
  52 +
  53 + @Cacheable(value = ContractDistributorStandard.CACHE_NAME, key = "@cacheVariables.tenantId() + #id", unless = "#result == null")
  54 + @Override
  55 + public ContractDistributorStandard findById(String id) {
  56 +
  57 + return getBaseMapper().selectById(id);
  58 + }
  59 +
  60 + @OpLog(type = OtherOpLogType.class, name = "新增经销标准合同,ID:{}", params = {"#id"})
  61 + @Transactional(rollbackFor = Exception.class)
  62 + @Override
  63 + public String create(CreateContractDistributorStandardVo vo) {
  64 +
  65 + ContractDistributorStandard data = new ContractDistributorStandard();
  66 + data.setId(IdUtil.getUUID());
  67 + data.setCode(vo.getCode());
  68 + data.setSupplier(vo.getSupplier());
  69 + data.setBuyer(vo.getBuyer());
  70 + data.setOrderDate(vo.getOrderDate());
  71 + data.setUnit(vo.getUnit());
  72 + data.setTotalAmountCapital(vo.getTotalAmountCapital());
  73 + data.setDepositInfo(vo.getDepositInfo());
  74 + data.setPackagingRequirements(vo.getPackagingRequirements());
  75 + data.setPaymentTerms(vo.getPaymentTerms());
  76 + data.setExecutionStandard(vo.getExecutionStandard());
  77 + data.setTransportMode(vo.getTransportMode());
  78 + data.setDestination(vo.getDestination());
  79 + data.setIncludesPackagingFee(vo.getIncludesPackagingFee());
  80 + data.setIncludesTransportFee(vo.getIncludesTransportFee());
  81 + data.setPieceWeightHead(vo.getPieceWeightHead());
  82 + data.setSurface(vo.getSurface());
  83 + data.setTolerance(vo.getTolerance());
  84 + data.setPerformance(vo.getPerformance());
  85 + data.setSpecialTerms(vo.getSpecialTerms());
  86 + data.setDesignatedConsignee(vo.getDesignatedConsignee());
  87 + data.setRemarks(vo.getRemarks());
  88 + data.setTotalAmountExcludingTax(vo.getTotalAmountExcludingTax());
  89 + data.setTotalAmountIncludingTax(vo.getTotalAmountIncludingTax());
  90 + data.setTotalQuantity(vo.getTotalQuantity());
  91 +
  92 + getBaseMapper().insert(data);
  93 +
  94 + OpLogUtil.setVariable("id", data.getId());
  95 + OpLogUtil.setExtra(vo);
  96 +
  97 + return data.getId();
  98 + }
  99 +
  100 + @OpLog(type = OtherOpLogType.class, name = "修改经销标准合同,ID:{}", params = {"#id"})
  101 + @Transactional(rollbackFor = Exception.class)
  102 + @Override
  103 + public void update(UpdateContractDistributorStandardVo vo) {
  104 +
  105 + ContractDistributorStandard data = getBaseMapper().selectById(vo.getId());
  106 + if (ObjectUtil.isNull(data)) {
  107 + throw new DefaultClientException("经销标准合同不存在!");
  108 + }
  109 +
  110 + LambdaUpdateWrapper<ContractDistributorStandard> updateWrapper = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
  111 + .set(ContractDistributorStandard::getCode, vo.getCode())
  112 + .set(ContractDistributorStandard::getSupplier, vo.getSupplier())
  113 + .set(ContractDistributorStandard::getBuyer, vo.getBuyer())
  114 + .set(ContractDistributorStandard::getOrderDate, vo.getOrderDate())
  115 + .set(ContractDistributorStandard::getUnit, vo.getUnit())
  116 + .set(ContractDistributorStandard::getTotalAmountCapital, vo.getTotalAmountCapital())
  117 + .set(ContractDistributorStandard::getDepositInfo, vo.getDepositInfo())
  118 + .set(ContractDistributorStandard::getPackagingRequirements, vo.getPackagingRequirements())
  119 + .set(ContractDistributorStandard::getPaymentTerms, vo.getPaymentTerms())
  120 + .set(ContractDistributorStandard::getExecutionStandard, vo.getExecutionStandard())
  121 + .set(ContractDistributorStandard::getTransportMode, vo.getTransportMode())
  122 + .set(ContractDistributorStandard::getDestination, vo.getDestination())
  123 + .set(ContractDistributorStandard::getIncludesPackagingFee, vo.getIncludesPackagingFee())
  124 + .set(ContractDistributorStandard::getIncludesTransportFee, vo.getIncludesTransportFee())
  125 + .set(ContractDistributorStandard::getPieceWeightHead, vo.getPieceWeightHead())
  126 + .set(ContractDistributorStandard::getSurface, vo.getSurface())
  127 + .set(ContractDistributorStandard::getTolerance, vo.getTolerance())
  128 + .set(ContractDistributorStandard::getPerformance, vo.getPerformance())
  129 + .set(ContractDistributorStandard::getSpecialTerms, vo.getSpecialTerms())
  130 + .set(ContractDistributorStandard::getDesignatedConsignee, vo.getDesignatedConsignee())
  131 + .set(ContractDistributorStandard::getRemarks, vo.getRemarks())
  132 + .set(ContractDistributorStandard::getTotalAmountExcludingTax, vo.getTotalAmountExcludingTax())
  133 + .set(ContractDistributorStandard::getTotalAmountIncludingTax, vo.getTotalAmountIncludingTax())
  134 + .set(ContractDistributorStandard::getTotalQuantity, vo.getTotalQuantity())
  135 + .eq(ContractDistributorStandard::getId, vo.getId());
  136 +
  137 + getBaseMapper().update(updateWrapper);
  138 +
  139 + OpLogUtil.setVariable("id", data.getId());
  140 + OpLogUtil.setExtra(vo);
  141 + }
  142 +
  143 + @CacheEvict(value = ContractDistributorStandard.CACHE_NAME, key = "@cacheVariables.tenantId() + #key")
  144 + @Override
  145 + public void cleanCacheByKey(Serializable key) {
  146 +
  147 + }
  148 +}
  149 +
  1 +package com.lframework.xingyun.sc.mappers;
  2 +
  3 +import com.lframework.starter.web.core.mapper.BaseMapper;
  4 +import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
  5 +import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo;
  6 +import org.apache.ibatis.annotations.Param;
  7 +
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * <p>
  12 + * 经销标准合同 Mapper 接口
  13 + * </p>
  14 + */
  15 +public interface ContractDistributorStandardMapper extends BaseMapper<ContractDistributorStandard> {
  16 +
  17 + /**
  18 + * 查询列表
  19 + *
  20 + * @param vo
  21 + * @return
  22 + */
  23 + List<ContractDistributorStandard> query(@Param("vo") QueryContractDistributorStandardVo vo);
  24 +}
  1 +package com.lframework.xingyun.sc.service.contract;
  2 +
  3 +import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
  4 +import com.lframework.starter.web.core.service.BaseMpService;
  5 +import com.lframework.starter.web.core.components.resp.PageResult;
  6 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorStandardVo;
  7 +import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorStandardVo;
  8 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo;
  9 +
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * 经销标准合同 Service
  14 + */
  15 +public interface ContractDistributorStandardService extends BaseMpService<ContractDistributorStandard> {
  16 +
  17 + /**
  18 + * 查询列表
  19 + *
  20 + * @return
  21 + */
  22 + PageResult<ContractDistributorStandard> query(Integer pageIndex, Integer pageSize, QueryContractDistributorStandardVo vo);
  23 +
  24 + /**
  25 + * 查询列表
  26 + *
  27 + * @param vo
  28 + * @return
  29 + */
  30 + List<ContractDistributorStandard> query(QueryContractDistributorStandardVo vo);
  31 +
  32 + /**
  33 + * 根据ID查询
  34 + *
  35 + * @param id
  36 + * @return
  37 + */
  38 + ContractDistributorStandard findById(String id);
  39 +
  40 + /**
  41 + * 创建
  42 + *
  43 + * @param vo
  44 + * @return
  45 + */
  46 + String create(CreateContractDistributorStandardVo vo);
  47 +
  48 + /**
  49 + * 修改
  50 + *
  51 + * @param vo
  52 + */
  53 + void update(UpdateContractDistributorStandardVo vo);
  54 +
  55 +}
  1 +package com.lframework.xingyun.sc.vo.contract.createVo;
  2 +
  3 +import java.math.BigDecimal;
  4 +import javax.validation.constraints.NotBlank;
  5 +import java.time.LocalDate;
  6 +
  7 +import com.lframework.starter.web.core.vo.BaseVo;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +import io.swagger.annotations.ApiModelProperty;
  12 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  13 +import org.hibernate.validator.constraints.Length;
  14 +
  15 +import java.io.Serializable;
  16 +
  17 +import lombok.Data;
  18 +
  19 +@Data
  20 +public class CreateContractDistributorStandardVo implements BaseVo, Serializable {
  21 +
  22 + private static final long serialVersionUID = 1L;
  23 +
  24 + /**
  25 + * 编号
  26 + */
  27 + @ApiModelProperty(value = "编号", required = true)
  28 + @NotBlank(message = "请输入编号!")
  29 + @Length(message = "编号最多允许20个字符!")
  30 + private String code;
  31 +
  32 + /**
  33 + * 供方
  34 + */
  35 + @ApiModelProperty(value = "供方", required = true)
  36 + @NotBlank(message = "请输入供方!")
  37 + @Length(message = "供方最多允许50个字符!")
  38 + private String supplier;
  39 +
  40 + /**
  41 + * 需方
  42 + */
  43 + @ApiModelProperty(value = "需方", required = true)
  44 + @NotBlank(message = "请输入需方!")
  45 + @Length(message = "需方最多允许200个字符!")
  46 + private String buyer;
  47 +
  48 + /**
  49 + * 订货日期
  50 + */
  51 + @ApiModelProperty(value = "订货日期", required = true)
  52 + @NotNull(message = "请输入订货日期!")
  53 + @TypeMismatch(message = "订货日期格式有误!")
  54 + private LocalDate orderDate;
  55 +
  56 + /**
  57 + * 单位
  58 + */
  59 + @ApiModelProperty(value = "单位", required = true)
  60 + @NotBlank(message = "请输入单位!")
  61 + @Length(message = "单位最多允许50个字符!")
  62 + private String unit;
  63 +
  64 + /**
  65 + * 合计人民币金额(大写)
  66 + */
  67 + @ApiModelProperty(value = "合计人民币金额(大写)", required = true)
  68 + @NotBlank(message = "请输入合计人民币金额(大写)!")
  69 + @Length(message = "合计人民币金额(大写)最多允许100个字符!")
  70 + private String totalAmountCapital;
  71 +
  72 + /**
  73 + * 交付定金信息(包含数额、时间)
  74 + */
  75 + @ApiModelProperty(value = "交付定金信息(包含数额、时间)", required = true)
  76 + @NotBlank(message = "请输入交付定金信息(包含数额、时间)!")
  77 + @Length(message = "交付定金信息(包含数额、时间)最多允许500个字符!")
  78 + private String depositInfo;
  79 +
  80 + /**
  81 + * 包装要求
  82 + */
  83 + @ApiModelProperty(value = "包装要求", required = true)
  84 + @NotBlank(message = "请输入包装要求!")
  85 + @Length(message = "包装要求最多允许200个字符!")
  86 + private String packagingRequirements;
  87 +
  88 + /**
  89 + * 付款信息(包含付款方式、付款期限)
  90 + */
  91 + @ApiModelProperty(value = "付款信息(包含付款方式、付款期限)", required = true)
  92 + @NotBlank(message = "请输入付款信息(包含付款方式、付款期限)!")
  93 + @Length(message = "付款信息(包含付款方式、付款期限)最多允许500个字符!")
  94 + private String paymentTerms;
  95 +
  96 + /**
  97 + * 执行标准
  98 + */
  99 + @ApiModelProperty(value = "执行标准", required = true)
  100 + @NotBlank(message = "请输入执行标准!")
  101 + @Length(message = "执行标准最多允许50个字符!")
  102 + private String executionStandard;
  103 +
  104 + /**
  105 + * 运输方式
  106 + */
  107 + @ApiModelProperty(value = "运输方式", required = true)
  108 + @NotBlank(message = "请输入运输方式!")
  109 + @Length(message = "运输方式最多允许100个字符!")
  110 + private String transportMode;
  111 +
  112 + /**
  113 + * 目的地
  114 + */
  115 + @ApiModelProperty(value = "目的地", required = true)
  116 + @NotBlank(message = "请输入目的地!")
  117 + @Length(message = "目的地最多允许200个字符!")
  118 + private String destination;
  119 +
  120 + /**
  121 + * 单价中是否已包含包装费
  122 + */
  123 + @ApiModelProperty(value = "单价中是否已包含包装费", required = true)
  124 + @NotNull(message = "请输入单价中是否已包含包装费!")
  125 + @TypeMismatch(message = "单价中是否已包含包装费格式有误!")
  126 + private Boolean includesPackagingFee;
  127 +
  128 + /**
  129 + * 单价中是否已包含运费
  130 + */
  131 + @ApiModelProperty(value = "单价中是否已包含运费", required = true)
  132 + @NotNull(message = "请输入单价中是否已包含运费!")
  133 + @TypeMismatch(message = "单价中是否已包含运费格式有误!")
  134 + private Boolean includesTransportFee;
  135 +
  136 + /**
  137 + * 件重条头
  138 + */
  139 + @ApiModelProperty(value = "件重条头", required = true)
  140 + @NotBlank(message = "请输入件重条头!")
  141 + @Length(message = "件重条头最多允许65,535个字符!")
  142 + private String pieceWeightHead;
  143 +
  144 + /**
  145 + * 表面
  146 + */
  147 + @ApiModelProperty(value = "表面", required = true)
  148 + @NotBlank(message = "请输入表面!")
  149 + @Length(message = "表面最多允许65,535个字符!")
  150 + private String surface;
  151 +
  152 + /**
  153 + * 公差
  154 + */
  155 + @ApiModelProperty(value = "公差", required = true)
  156 + @NotBlank(message = "请输入公差!")
  157 + @Length(message = "公差最多允许65,535个字符!")
  158 + private String tolerance;
  159 +
  160 + /**
  161 + * 性能
  162 + */
  163 + @ApiModelProperty(value = "性能", required = true)
  164 + @NotBlank(message = "请输入性能!")
  165 + @Length(message = "性能最多允许65,535个字符!")
  166 + private String performance;
  167 +
  168 + /**
  169 + * 特别条款要求
  170 + */
  171 + @ApiModelProperty(value = "特别条款要求", required = true)
  172 + @NotBlank(message = "请输入特别条款要求!")
  173 + @Length(message = "特别条款要求最多允许50个字符!")
  174 + private String specialTerms;
  175 +
  176 + /**
  177 + * 需方指定收货人
  178 + */
  179 + @ApiModelProperty(value = "需方指定收货人", required = true)
  180 + @NotBlank(message = "请输入需方指定收货人!")
  181 + @Length(message = "需方指定收货人最多允许65,535个字符!")
  182 + private String designatedConsignee;
  183 +
  184 + /**
  185 + * 备注
  186 + */
  187 + @ApiModelProperty(value = "备注", required = true)
  188 + @NotBlank(message = "请输入备注!")
  189 + @Length(message = "备注最多允许65,535个字符!")
  190 + private String remarks;
  191 +
  192 + /**
  193 + * 合计数量
  194 + */
  195 + @ApiModelProperty(value = "合计数量", required = true)
  196 + @NotNull(message = "请输入合计数量!")
  197 + @TypeMismatch(message = "合计数量格式有误!")
  198 + private BigDecimal totalQuantity;
  199 +
  200 + /**
  201 + * 合计不含税金额
  202 + */
  203 + @ApiModelProperty(value = "合计不含税金额", required = true)
  204 + @NotNull(message = "请输入合计不含税金额!")
  205 + @TypeMismatch(message = "合计不含税金额格式有误!")
  206 + private BigDecimal totalAmountExcludingTax;
  207 +
  208 + /**
  209 + * 合计总金额
  210 + */
  211 + @ApiModelProperty(value = "合计总金额", required = true)
  212 + @NotNull(message = "请输入合计总金额!")
  213 + @TypeMismatch(message = "合计总金额格式有误!")
  214 + private BigDecimal totalAmountIncludingTax;
  215 +
  216 +}
  1 +package com.lframework.xingyun.sc.vo.contract.queryVo;
  2 +
  3 +import lombok.Data;
  4 +import com.lframework.starter.web.core.vo.PageVo;
  5 +
  6 +import java.time.LocalDate;
  7 +
  8 +import com.lframework.starter.web.core.vo.BaseVo;
  9 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  10 +import io.swagger.annotations.ApiModelProperty;
  11 +
  12 +import java.io.Serializable;
  13 +
  14 +@Data
  15 +public class QueryContractDistributorStandardVo extends PageVo implements BaseVo, Serializable {
  16 +
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + /**
  20 + * 编号
  21 + */
  22 + @ApiModelProperty("编号")
  23 + private String code;
  24 +
  25 + /**
  26 + * 需方
  27 + */
  28 + @ApiModelProperty("需方")
  29 + private String buyer;
  30 +
  31 + /**
  32 + * 办事处
  33 + */
  34 + @ApiModelProperty("办事处")
  35 + private String deptId;
  36 +
  37 + /**
  38 + * 订货日期
  39 + */
  40 + @ApiModelProperty("订货日期")
  41 + @TypeMismatch(message = "订货日期格式有误!")
  42 + private LocalDate orderDate;
  43 +
  44 + @ApiModelProperty("订货日期筛选开始日期")
  45 + @TypeMismatch(message = "订货日期格式有误!")
  46 + private LocalDate orderDateStart;
  47 +
  48 + @ApiModelProperty("订货日期筛选结束日期")
  49 + @TypeMismatch(message = "订货日期格式有误!")
  50 + private LocalDate orderDateEnd;
  51 +}
  52 +
  1 +package com.lframework.xingyun.sc.vo.contract.updateVo;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.math.BigDecimal;
  6 +import javax.validation.constraints.NotBlank;
  7 +import java.time.LocalDate;
  8 +
  9 +import com.lframework.starter.web.core.vo.BaseVo;
  10 +
  11 +import javax.validation.constraints.NotNull;
  12 +
  13 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  14 +import io.swagger.annotations.ApiModelProperty;
  15 +import org.hibernate.validator.constraints.Length;
  16 +
  17 +import java.io.Serializable;
  18 +
  19 +@Data
  20 +public class UpdateContractDistributorStandardVo implements BaseVo, Serializable {
  21 +
  22 + private static final long serialVersionUID = 1L;
  23 +
  24 + /**
  25 + * ID
  26 + */
  27 + @ApiModelProperty(value = "ID", required = true)
  28 + @NotBlank(message = "id不能为空!")
  29 + private String id;
  30 +
  31 + /**
  32 + * 编号
  33 + */
  34 + @ApiModelProperty(value = "编号", required = true)
  35 + @NotBlank(message = "请输入编号!")
  36 + @Length(message = "编号最多允许20个字符!")
  37 + private String code;
  38 +
  39 + /**
  40 + * 供方
  41 + */
  42 + @ApiModelProperty(value = "供方", required = true)
  43 + @NotBlank(message = "请输入供方!")
  44 + @Length(message = "供方最多允许50个字符!")
  45 + private String supplier;
  46 +
  47 + /**
  48 + * 需方
  49 + */
  50 + @ApiModelProperty(value = "需方", required = true)
  51 + @NotBlank(message = "请输入需方!")
  52 + @Length(message = "需方最多允许200个字符!")
  53 + private String buyer;
  54 +
  55 + /**
  56 + * 订货日期
  57 + */
  58 + @ApiModelProperty(value = "订货日期", required = true)
  59 + @TypeMismatch(message = "订货日期格式有误!")
  60 + @NotNull(message = "请输入订货日期!")
  61 + private LocalDate orderDate;
  62 +
  63 + /**
  64 + * 单位
  65 + */
  66 + @ApiModelProperty(value = "单位", required = true)
  67 + @NotBlank(message = "请输入单位!")
  68 + @Length(message = "单位最多允许50个字符!")
  69 + private String unit;
  70 +
  71 + /**
  72 + * 合计人民币金额(大写)
  73 + */
  74 + @ApiModelProperty(value = "合计人民币金额(大写)", required = true)
  75 + @NotBlank(message = "请输入合计人民币金额(大写)!")
  76 + @Length(message = "合计人民币金额(大写)最多允许100个字符!")
  77 + private String totalAmountCapital;
  78 +
  79 + /**
  80 + * 交付定金信息(包含数额、时间)
  81 + */
  82 + @ApiModelProperty(value = "交付定金信息(包含数额、时间)", required = true)
  83 + @NotBlank(message = "请输入交付定金信息(包含数额、时间)!")
  84 + @Length(message = "交付定金信息(包含数额、时间)最多允许500个字符!")
  85 + private String depositInfo;
  86 +
  87 + /**
  88 + * 包装要求
  89 + */
  90 + @ApiModelProperty(value = "包装要求", required = true)
  91 + @NotBlank(message = "请输入包装要求!")
  92 + @Length(message = "包装要求最多允许200个字符!")
  93 + private String packagingRequirements;
  94 +
  95 + /**
  96 + * 付款信息(包含付款方式、付款期限)
  97 + */
  98 + @ApiModelProperty(value = "付款信息(包含付款方式、付款期限)", required = true)
  99 + @NotBlank(message = "请输入付款信息(包含付款方式、付款期限)!")
  100 + @Length(message = "付款信息(包含付款方式、付款期限)最多允许500个字符!")
  101 + private String paymentTerms;
  102 +
  103 + /**
  104 + * 执行标准
  105 + */
  106 + @ApiModelProperty(value = "执行标准", required = true)
  107 + @NotBlank(message = "请输入执行标准!")
  108 + @Length(message = "执行标准最多允许50个字符!")
  109 + private String executionStandard;
  110 +
  111 + /**
  112 + * 运输方式
  113 + */
  114 + @ApiModelProperty(value = "运输方式", required = true)
  115 + @NotBlank(message = "请输入运输方式!")
  116 + @Length(message = "运输方式最多允许100个字符!")
  117 + private String transportMode;
  118 +
  119 + /**
  120 + * 目的地
  121 + */
  122 + @ApiModelProperty(value = "目的地", required = true)
  123 + @NotBlank(message = "请输入目的地!")
  124 + @Length(message = "目的地最多允许200个字符!")
  125 + private String destination;
  126 +
  127 + /**
  128 + * 单价中是否已包含包装费
  129 + */
  130 + @ApiModelProperty(value = "单价中是否已包含包装费", required = true)
  131 + @TypeMismatch(message = "单价中是否已包含包装费格式有误!")
  132 + @NotNull(message = "请输入单价中是否已包含包装费!")
  133 + private Boolean includesPackagingFee;
  134 +
  135 + /**
  136 + * 单价中是否已包含运费
  137 + */
  138 + @ApiModelProperty(value = "单价中是否已包含运费", required = true)
  139 + @TypeMismatch(message = "单价中是否已包含运费格式有误!")
  140 + @NotNull(message = "请输入单价中是否已包含运费!")
  141 + private Boolean includesTransportFee;
  142 +
  143 + /**
  144 + * 件重条头
  145 + */
  146 + @ApiModelProperty(value = "件重条头", required = true)
  147 + @NotBlank(message = "请输入件重条头!")
  148 + @Length(message = "件重条头最多允许65,535个字符!")
  149 + private String pieceWeightHead;
  150 +
  151 + /**
  152 + * 表面
  153 + */
  154 + @ApiModelProperty(value = "表面", required = true)
  155 + @NotBlank(message = "请输入表面!")
  156 + @Length(message = "表面最多允许65,535个字符!")
  157 + private String surface;
  158 +
  159 + /**
  160 + * 公差
  161 + */
  162 + @ApiModelProperty(value = "公差", required = true)
  163 + @NotBlank(message = "请输入公差!")
  164 + @Length(message = "公差最多允许65,535个字符!")
  165 + private String tolerance;
  166 +
  167 + /**
  168 + * 性能
  169 + */
  170 + @ApiModelProperty(value = "性能", required = true)
  171 + @NotBlank(message = "请输入性能!")
  172 + @Length(message = "性能最多允许65,535个字符!")
  173 + private String performance;
  174 +
  175 + /**
  176 + * 特别条款要求
  177 + */
  178 + @ApiModelProperty(value = "特别条款要求", required = true)
  179 + @NotBlank(message = "请输入特别条款要求!")
  180 + @Length(message = "特别条款要求最多允许50个字符!")
  181 + private String specialTerms;
  182 +
  183 + /**
  184 + * 需方指定收货人
  185 + */
  186 + @ApiModelProperty(value = "需方指定收货人", required = true)
  187 + @NotBlank(message = "请输入需方指定收货人!")
  188 + @Length(message = "需方指定收货人最多允许65,535个字符!")
  189 + private String designatedConsignee;
  190 +
  191 + /**
  192 + * 备注
  193 + */
  194 + @ApiModelProperty(value = "备注", required = true)
  195 + @NotBlank(message = "请输入备注!")
  196 + @Length(message = "备注最多允许65,535个字符!")
  197 + private String remarks;
  198 +
  199 + /**
  200 + * 合计数量
  201 + */
  202 + @ApiModelProperty(value = "合计数量", required = true)
  203 + @TypeMismatch(message = "合计数量格式有误!")
  204 + @NotNull(message = "请输入合计数量!")
  205 + private BigDecimal totalQuantity;
  206 +
  207 + /**
  208 + * 合计不含税金额
  209 + */
  210 + @ApiModelProperty(value = "合计不含税金额", required = true)
  211 + @TypeMismatch(message = "合计不含税金额格式有误!")
  212 + @NotNull(message = "请输入合计不含税金额!")
  213 + private BigDecimal totalAmountExcludingTax;
  214 +
  215 + /**
  216 + * 合计总金额
  217 + */
  218 + @ApiModelProperty(value = "合计总金额", required = true)
  219 + @TypeMismatch(message = "合计总金额格式有误!")
  220 + @NotNull(message = "请输入合计总金额!")
  221 + private BigDecimal totalAmountIncludingTax;
  222 +
  223 +}
  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.sc.mappers.ContractDistributorStandardMapper">
  4 +
  5 + <resultMap id="ContractDistributorStandard" type="com.lframework.xingyun.sc.entity.ContractDistributorStandard">
  6 + <id column="id" property="id"/>
  7 + <result column="code" property="code"/>
  8 + <result column="supplier" property="supplier"/>
  9 + <result column="buyer" property="buyer"/>
  10 + <result column="dept_id" property="deptId"/>
  11 + <result column="order_date" property="orderDate"/>
  12 + <result column="unit" property="unit"/>
  13 + <result column="total_amount_capital" property="totalAmountCapital"/>
  14 + <result column="deposit_info" property="depositInfo"/>
  15 + <result column="packaging_requirements" property="packagingRequirements"/>
  16 + <result column="payment_terms" property="paymentTerms"/>
  17 + <result column="execution_standard" property="executionStandard"/>
  18 + <result column="transport_mode" property="transportMode"/>
  19 + <result column="destination" property="destination"/>
  20 + <result column="includes_packaging_fee" property="includesPackagingFee"/>
  21 + <result column="includes_transport_fee" property="includesTransportFee"/>
  22 + <result column="piece_weight_head" property="pieceWeightHead"/>
  23 + <result column="surface" property="surface"/>
  24 + <result column="tolerance" property="tolerance"/>
  25 + <result column="performance" property="performance"/>
  26 + <result column="special_terms" property="specialTerms"/>
  27 + <result column="designated_consignee" property="designatedConsignee"/>
  28 + <result column="remarks" property="remarks"/>
  29 + <result column="create_by_id" property="createById"/>
  30 + <result column="create_by" property="createBy"/>
  31 + <result column="update_by_id" property="updateById"/>
  32 + <result column="update_by" property="updateBy"/>
  33 + <result column="create_time" property="createTime"/>
  34 + <result column="update_time" property="updateTime"/>
  35 + <result column="total_quantit" property="totalQuantit"/>
  36 + <result column="total_amount_excluding_tax" property="totalAmountExcludingTax"/>
  37 + <result column="total_amount_including_tax" property="totalAmountIncludingTax"/>
  38 + </resultMap>
  39 +
  40 + <sql id="ContractDistributorStandard_sql">
  41 + SELECT
  42 + tb.id,
  43 + tb.code,
  44 + tb.supplier,
  45 + tb.buyer,
  46 + tb.dept_id,
  47 + tb.order_date,
  48 + tb.unit,
  49 + tb.total_amount_capital,
  50 + tb.deposit_info,
  51 + tb.packaging_requirements,
  52 + tb.payment_terms,
  53 + tb.execution_standard,
  54 + tb.transport_mode,
  55 + tb.destination,
  56 + tb.includes_packaging_fee,
  57 + tb.includes_transport_fee,
  58 + tb.piece_weight_head,
  59 + tb.surface,
  60 + tb.tolerance,
  61 + tb.performance,
  62 + tb.special_terms,
  63 + tb.designated_consignee,
  64 + tb.remarks,
  65 + tb.create_by_id,
  66 + tb.create_by,
  67 + tb.update_by_id,
  68 + tb.update_by,
  69 + tb.create_time,
  70 + tb.update_time,
  71 + tb.total_quantit,
  72 + tb.total_amount_excluding_tax,
  73 + tb.total_amount_including_tax
  74 + FROM tbl_contract_distributor_standard AS tb
  75 + </sql>
  76 +
  77 + <select id="query" resultMap="ContractDistributorStandard">
  78 + <include refid="ContractDistributorStandard_sql"/>
  79 + <where>
  80 + <if test="vo.code != null and vo.code != ''">
  81 + AND tb.code LIKE CONCAT('%', #{vo.code})
  82 + </if>
  83 + <if test="vo.buyer != null and vo.buyer != ''">
  84 + AND tb.buyer LIKE CONCAT('%', #{vo.buyer})
  85 + </if>
  86 + <if test="vo.deptId != null and vo.deptId != ''">
  87 + AND tb.dept_id = #{vo.deptId}
  88 + </if>
  89 + <if test="vo.orderDate != null">
  90 + AND tb.order_date IN (#{vo.orderDate})
  91 + </if>
  92 + <if test="vo.orderDateStart != null">
  93 + AND tb.order_date &gt;= #{vo.orderDateStart}
  94 + </if>
  95 + <if test="vo.orderDateEnd != null">
  96 + AND tb.order_date &lt;= #{vo.orderDateEnd}
  97 + </if>
  98 + </where>
  99 + </select>
  100 +</mapper>
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
52 AND tb.has_framework_agreement = #{vo.hasFrameworkAgreement} 52 AND tb.has_framework_agreement = #{vo.hasFrameworkAgreement}
53 </if> 53 </if>
54 <if test="vo.materialTypeId != null and vo.materialTypeId != ''"> 54 <if test="vo.materialTypeId != null and vo.materialTypeId != ''">
55 - AND tb.material_type_id = #{materialTypeId} 55 + AND tb.material_type_id like CONCAT('%', #{vo.materialTypeId}, '%')
56 </if> 56 </if>
57 <if test="vo.validityTime != null"> 57 <if test="vo.validityTime != null">
58 AND tb.validity_time = #{vo.validityTime} 58 AND tb.validity_time = #{vo.validityTime}