Commit 6b322a199dfaac0efce105ed78ab04f644129aa5

Authored by 杨鸣坤
1 parent 68f592e6

楚江ERP:锁价接口开发,部分问题修复

... ... @@ -152,8 +152,8 @@ create table if not exists `tbl_contract_distributor_line`
152 152 `length_tol_pos` DECIMAL(10, 4) COMMENT '长度公差正',
153 153 `length_tol_neg` DECIMAL(10, 4) COMMENT '长度公差负',
154 154 `status` VARCHAR(50) COMMENT '状态',
155   - `quantity` DECIMAL(15, 4) NOT NULL COMMENT '数量',
156   - `unit_price` DECIMAL(15, 4) NOT NULL COMMENT '单价',
  155 + `quantity` DECIMAL(15, 4) COMMENT '数量',
  156 + `unit_price` DECIMAL(15, 4) COMMENT '单价',
157 157 `amount_excluding_tax` DECIMAL(15, 2) COMMENT '不含税金额',
158 158 `total_amount` DECIMAL(15, 2) COMMENT '总金额',
159 159 `delivery_date` DATE COMMENT '发货日期',
... ...
... ... @@ -44,6 +44,7 @@ import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractDistributorSta
44 44 import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo;
45 45 import io.swagger.annotations.Api;
46 46 import io.swagger.annotations.ApiImplicitParam;
  47 +import io.swagger.annotations.ApiModelProperty;
47 48 import io.swagger.annotations.ApiOperation;
48 49 import lombok.extern.slf4j.Slf4j;
49 50 import org.apache.commons.collections4.CollectionUtils;
... ... @@ -432,6 +433,18 @@ public class ContractDistributorStandardController extends DefaultBaseController
432 433 return InvokeResultBuilder.success(new GetContractDistributorStandardBo(contractDistributorStandard));
433 434 }
434 435
  436 + @ApiModelProperty("锁价")
  437 + @PostMapping("/priceLock")
  438 + public void priceLock(@RequestBody UpdateContractDistributorStandardVo vo) {
  439 + if (vo == null || StringUtils.isBlank(vo.getId())) {
  440 + throw new DefaultClientException("参数错误!");
  441 + }
  442 +
  443 + contractDistributorStandardService.stockContractPriceLock(vo);
  444 +
  445 + contractDistributorStandardService.cleanCacheByKey(vo.getId());
  446 + }
  447 +
435 448 /**
436 449 * 标准合同模版打印
437 450 */
... ...
... ... @@ -22,6 +22,7 @@ import com.lframework.xingyun.basedata.entity.Customer;
22 22 import com.lframework.xingyun.basedata.entity.ProductVariety;
23 23 import com.lframework.xingyun.basedata.service.customer.CustomerService;
24 24 import com.lframework.xingyun.basedata.service.product.ProductVarietyService;
  25 +import com.lframework.xingyun.basedata.vo.customer.QueryCustomerVo;
25 26 import com.lframework.xingyun.sc.bo.contract.QueryContractFrameworkBo;
26 27 import com.lframework.xingyun.sc.components.code.GenerateCodeTypePool;
27 28 import com.lframework.xingyun.sc.entity.ContractFramework;
... ... @@ -86,6 +87,17 @@ public class ContractFrameworkController extends DefaultBaseController {
86 87 @HasPermission({"contract:contractFramework:query"})
87 88 @GetMapping("/query")
88 89 public InvokeResult<PageResult<QueryContractFrameworkBo>> query(@Valid QueryContractFrameworkVo vo) {
  90 + if(vo != null && StringUtils.isNotBlank(vo.getCustomerName())) {
  91 + QueryCustomerVo queryCustomerVo = new QueryCustomerVo();
  92 + queryCustomerVo.setName(vo.getCustomerName());
  93 + List<Customer> customerList = customerService.query(queryCustomerVo);
  94 + if(CollectionUtils.isEmpty(customerList)) {
  95 + PageResult<QueryContractFrameworkBo> boPageResult = new PageResult<>();
  96 + return InvokeResultBuilder.success(boPageResult);
  97 + }
  98 +
  99 + vo.setCustomerIdList(customerList.stream().map(Customer::getId).collect(Collectors.toList()));
  100 + }
89 101
90 102 PageResult<ContractFramework> pageResult = contractFrameworkService.query(getPageIndex(vo), getPageSize(vo), vo);
91 103
... ...
1 1 package com.lframework.xingyun.sc.excel.contract;
2 2
3 3 import com.alibaba.excel.annotation.ExcelProperty;
  4 +import com.alibaba.excel.annotation.format.DateTimeFormat;
  5 +import com.lframework.starter.common.constants.StringPool;
4 6 import com.lframework.starter.common.utils.DateUtil;
5 7 import com.lframework.starter.web.core.bo.BaseBo;
6 8 import com.lframework.starter.web.core.components.excel.ExcelModel;
... ... @@ -58,6 +60,7 @@ public class ContractFrameworkExportModel extends BaseBo<ContractFramework> impl
58 60 * 授信截止日期
59 61 */
60 62 @ExcelProperty("授信截止日期")
  63 + @DateTimeFormat(StringPool.DATE_PATTERN)
61 64 private Date validityTime;
62 65
63 66 public ContractFrameworkExportModel() {
... ...
... ... @@ -2,12 +2,12 @@ package com.lframework.xingyun.sc.excel.contract;
2 2
3 3 import com.alibaba.excel.annotation.ExcelIgnore;
4 4 import com.alibaba.excel.annotation.ExcelProperty;
  5 +import com.alibaba.excel.annotation.format.DateTimeFormat;
  6 +import com.lframework.starter.common.constants.StringPool;
5 7 import com.lframework.starter.web.core.annotations.excel.ExcelRequired;
6 8 import com.lframework.starter.web.core.components.excel.ExcelModel;
7   -import io.swagger.annotations.ApiModelProperty;
8 9 import lombok.Data;
9 10
10   -import java.time.LocalDateTime;
11 11 import java.util.Date;
12 12
13 13 @Data
... ... @@ -63,6 +63,7 @@ public class ContractFrameworkImportModel implements ExcelModel {
63 63 * 授信截止日期
64 64 */
65 65 @ExcelRequired
  66 + @DateTimeFormat(StringPool.DATE_PATTERN)
66 67 @ExcelProperty("授信截止日期")
67 68 private Date validityTime;
68 69
... ...
... ... @@ -57,7 +57,7 @@ public class ContractDistributorLineServiceImpl extends BaseMpServiceImpl<Contra
57 57 return getBaseMapper().selectById(id);
58 58 }
59 59
60   - @OpLog(type = OtherOpLogType.class, name = "新增经销标准合同物料行,ID:{}", params = {"#id"})
  60 + @OpLog(type = OtherOpLogType.class, name = "新增合同物料行,ID:{}", params = {"#id"})
61 61 @Transactional(rollbackFor = Exception.class)
62 62 @Override
63 63 public String create(CreateContractDistributorLineVo vo) {
... ... @@ -94,14 +94,14 @@ public class ContractDistributorLineServiceImpl extends BaseMpServiceImpl<Contra
94 94 return data.getId();
95 95 }
96 96
97   - @OpLog(type = OtherOpLogType.class, name = "修改经销标准合同物料行,ID:{}", params = {"#id"})
  97 + @OpLog(type = OtherOpLogType.class, name = "修改合同物料行,ID:{}", params = {"#id"})
98 98 @Transactional(rollbackFor = Exception.class)
99 99 @Override
100 100 public void update(UpdateContractDistributorLineVo vo) {
101 101
102 102 ContractDistributorLine data = getBaseMapper().selectById(vo.getId());
103 103 if (ObjectUtil.isNull(data)) {
104   - throw new DefaultClientException("经销标准合同物料行不存在!");
  104 + throw new DefaultClientException("合同物料行不存在!");
105 105 }
106 106
107 107 LambdaUpdateWrapper<ContractDistributorLine> updateWrapper = Wrappers.lambdaUpdate(ContractDistributorLine.class)
... ...
... ... @@ -103,7 +103,7 @@ public class ContractDistributorStandardServiceImpl extends
103 103 return getBaseMapper().selectById(id);
104 104 }
105 105
106   - @OpLog(type = OtherOpLogType.class, name = "新增经销标准合同,ID:{}", params = {"#id"})
  106 + @OpLog(type = OtherOpLogType.class, name = "新增合同,ID:{}", params = {"#id"})
107 107 @Transactional(rollbackFor = Exception.class)
108 108 @Override
109 109 public String create(CreateContractDistributorStandardVo vo) {
... ... @@ -158,14 +158,14 @@ public class ContractDistributorStandardServiceImpl extends
158 158 return data.getId();
159 159 }
160 160
161   - @OpLog(type = OtherOpLogType.class, name = "修改经销标准合同,ID:{}", params = {"#id"})
  161 + @OpLog(type = OtherOpLogType.class, name = "修改合同,ID:{}", params = {"#id"})
162 162 @Transactional(rollbackFor = Exception.class)
163 163 @Override
164 164 public void update(UpdateContractDistributorStandardVo vo) {
165 165
166 166 ContractDistributorStandard data = getBaseMapper().selectById(vo.getId());
167 167 if (ObjectUtil.isNull(data)) {
168   - throw new DefaultClientException("经销标准合同不存在!");
  168 + throw new DefaultClientException("合同不存在!");
169 169 }
170 170
171 171 LambdaUpdateWrapper<ContractDistributorStandard> updateWrapper = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
... ... @@ -305,7 +305,7 @@ public class ContractDistributorStandardServiceImpl extends
305 305 .set(ContractDistributorStandard::getStandardFileName, vo.getStandardFileName())
306 306 .set(ContractDistributorStandard::getStandardStandardized, vo.getStandardStandardized())
307 307 .set(ContractDistributorStandard::getStandardApproved, CustomerDevelopStatus.AUDIT.name());
308   - if (!data.getStatus().equals("STANDARD")) {
  308 + if (!data.getStatus().equals("STANDARD") && "DISTRIB_STD".equals(data.getType())) { // 只有经销标准合同才修改状态
309 309 updateWrapper.set(ContractDistributorStandard::getStatus, "STANDARD");
310 310
311 311 }
... ... @@ -371,6 +371,7 @@ public class ContractDistributorStandardServiceImpl extends
371 371 vo.setStandardApproved(standardApproved);
372 372 vo.setStandardTime(LocalDateTime.now());
373 373 vo.setStandardApproved(SecurityUtil.getCurrentUser().getId());
  374 +
374 375 OpLogUtil.setVariable("id", id);
375 376 OpLogUtil.setExtra(vo);
376 377 }
... ... @@ -455,6 +456,46 @@ public class ContractDistributorStandardServiceImpl extends
455 456 return contractDistributorStandard;
456 457 }
457 458
  459 + @Override
  460 + @OpLog(type = OtherOpLogType.class, name = "合同锁价,ID:{}", params = {"#vo.id"})
  461 + @Transactional(rollbackFor = Exception.class)
  462 + public void stockContractPriceLock(UpdateContractDistributorStandardVo vo) {
  463 + ContractDistributorStandard data = getBaseMapper().selectById(vo.getId());
  464 + if (ObjectUtil.isNull(data)) {
  465 + throw new DefaultClientException("合同不存在!");
  466 + }
  467 +
  468 + List<UpdateContractDistributorLineVo> lineVoList = vo.getContractDistributorLineList();
  469 + if (CollectionUtils.isEmpty(lineVoList)) {
  470 + throw new DefaultClientException("合同行数据为空!");
  471 + }
  472 +
  473 + Wrapper<ContractDistributorStandard> wrapper = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
  474 + .set(ContractDistributorStandard::getTotalQuantity, vo.getTotalQuantity())
  475 + .set(ContractDistributorStandard::getTotalAmountExcludingTax, vo.getTotalAmountExcludingTax())
  476 + .set(ContractDistributorStandard::getTotalAmountIncludingTax, vo.getTotalAmountIncludingTax())
  477 + .set(ContractDistributorStandard::getTotalAmountCapital, vo.getTotalAmountCapital())
  478 + .set(ContractDistributorStandard::getStatus, "STANDARD")
  479 + .eq(ContractDistributorStandard::getId, vo.getId());
  480 +
  481 + getBaseMapper().update(wrapper);
  482 +
  483 + lineVoList.forEach(lineVo -> {
  484 + Wrapper<ContractDistributorLine> contractDistributorLineWrapper = Wrappers.lambdaUpdate(ContractDistributorLine.class)
  485 + .set(ContractDistributorLine::getQuantity, lineVo.getQuantity())
  486 + .set(ContractDistributorLine::getUnitPrice, lineVo.getUnitPrice())
  487 + .set(ContractDistributorLine::getAmountExcludingTax, lineVo.getAmountExcludingTax())
  488 + .set(ContractDistributorLine::getTotalAmount, lineVo.getTotalAmount())
  489 + .eq(ContractDistributorLine::getId, lineVo.getId());
  490 +
  491 + contractDistributorLineService.update(contractDistributorLineWrapper);
  492 + contractDistributorLineService.cleanCacheByKey(lineVo.getId());
  493 + });
  494 +
  495 + OpLogUtil.setVariable("id", data.getId());
  496 + OpLogUtil.setExtra(vo);
  497 + }
  498 +
458 499 @CacheEvict(value = ContractDistributorStandard.CACHE_NAME, key = "@cacheVariables.tenantId() + #key")
459 500 @Override
460 501 public void cleanCacheByKey(Serializable key) {
... ...
... ... @@ -79,6 +79,13 @@ public interface ContractDistributorStandardService extends BaseMpService<Contra
79 79 * @param productIdList
80 80 * @return
81 81 */
82   - ContractDistributorStandard getCustomerSpecificQualityRequirements(String customerId,List<String> productIdList);
  82 + ContractDistributorStandard getCustomerSpecificQualityRequirements(String customerId, List<String> productIdList);
  83 +
  84 + /**
  85 + * 锁价
  86 + *
  87 + * @param vo
  88 + */
  89 + void stockContractPriceLock(UpdateContractDistributorStandardVo vo);
83 90
84 91 }
\ No newline at end of file
... ...
... ... @@ -218,31 +218,28 @@ public class CreateContractDistributorStandardVo implements BaseVo, Serializable
218 218 /**
219 219 * 合计数量
220 220 */
221   - @ApiModelProperty(value = "合计数量", required = true)
222   - @NotNull(message = "请输入合计数量!")
  221 + @ApiModelProperty(value = "合计数量")
223 222 @TypeMismatch(message = "合计数量格式有误!")
224 223 private BigDecimal totalQuantity;
225 224
226 225 /**
227 226 * 合计不含税金额
228 227 */
229   - @ApiModelProperty(value = "合计不含税金额", required = true)
230   - @NotNull(message = "请输入合计不含税金额!")
  228 + @ApiModelProperty(value = "合计不含税金额")
231 229 @TypeMismatch(message = "合计不含税金额格式有误!")
232 230 private BigDecimal totalAmountExcludingTax;
233 231
234 232 /**
235 233 * 合计总金额
236 234 */
237   - @ApiModelProperty(value = "合计总金额", required = true)
238   - @NotNull(message = "请输入合计总金额!")
  235 + @ApiModelProperty(value = "合计总金额")
239 236 @TypeMismatch(message = "合计总金额格式有误!")
240 237 private BigDecimal totalAmountIncludingTax;
241 238
242 239 /**
243 240 * 合同类型
244 241 */
245   - @ApiModelProperty(value = "合同类型", required = true)
  242 + @ApiModelProperty(value = "合同类型")
246 243 @NotBlank(message = "请输入合同类型!")
247 244 private String type;
248 245
... ... @@ -253,10 +250,10 @@ public class CreateContractDistributorStandardVo implements BaseVo, Serializable
253 250 private String parentId;
254 251
255 252 /**
256   - * 经销标准合同物料行
  253 + * 合同物料行
257 254 */
258   - @ApiModelProperty(value = "经销标准合同物料行", required = true)
259   - @NotNull(message = "经销标准合同物料行不可为空!")
  255 + @ApiModelProperty(value = "合同物料行", required = true)
  256 + @NotNull(message = "合同物料行不可为空!")
260 257 private List<CreateContractDistributorLineVo> contractDistributorLineList;
261 258
262 259 /**
... ...
... ... @@ -12,6 +12,8 @@ import com.lframework.starter.web.core.components.validation.TypeMismatch;
12 12 import io.swagger.annotations.ApiModelProperty;
13 13
14 14 import java.io.Serializable;
  15 +import java.time.LocalDateTime;
  16 +import java.util.List;
15 17
16 18 @Data
17 19 public class QueryContractFrameworkVo extends PageVo implements BaseVo, Serializable {
... ... @@ -66,16 +68,28 @@ public class QueryContractFrameworkVo extends PageVo implements BaseVo, Serializ
66 68 * 期限(查询)
67 69 */
68 70 @ApiModelProperty("期限查询开始时间")
69   - @JsonFormat(pattern = StringPool.DATE_PATTERN)
70   - private LocalDate validityTimeStart;
  71 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  72 + private LocalDateTime validityTimeStart;
71 73
72 74 @ApiModelProperty("期限查询结束时间")
73   - @JsonFormat(pattern = StringPool.DATE_PATTERN)
74   - private LocalDate validityTimeEnd;
  75 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  76 + private LocalDateTime validityTimeEnd;
75 77
76 78 /**
77 79 * 导出类型
78 80 */
79 81 @ApiModelProperty("导出类型")
80 82 private String exportType;
  83 +
  84 + /**
  85 + * 客户名称
  86 + */
  87 + @ApiModelProperty("客户名称")
  88 + private String customerName;
  89 +
  90 + /**
  91 + * 客户Id集合
  92 + */
  93 + @ApiModelProperty("客户Id集合")
  94 + private List<String> customerIdList;
81 95 }
... ...
... ... @@ -33,40 +33,35 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable
33 33 /**
34 34 * 编号
35 35 */
36   - @ApiModelProperty(value = "编号", required = true)
37   - @NotBlank(message = "请输入编号!")
  36 + @ApiModelProperty(value = "编号")
38 37 @Length(message = "编号最多允许20个字符!")
39 38 private String code;
40 39
41 40 /**
42 41 * 供方
43 42 */
44   - @ApiModelProperty(value = "供方", required = true)
45   - @NotBlank(message = "请输入供方!")
  43 + @ApiModelProperty(value = "供方")
46 44 @Length(message = "供方最多允许50个字符!")
47 45 private String supplier;
48 46
49 47 /**
50 48 * 需方
51 49 */
52   - @ApiModelProperty(value = "需方", required = true)
53   - @NotBlank(message = "请输入需方!")
  50 + @ApiModelProperty(value = "需方")
54 51 @Length(message = "需方最多允许200个字符!")
55 52 private String buyer;
56 53
57 54 /**
58 55 * 订货日期
59 56 */
60   - @ApiModelProperty(value = "订货日期", required = true)
  57 + @ApiModelProperty(value = "订货日期")
61 58 @TypeMismatch(message = "订货日期格式有误!")
62   - @NotNull(message = "请输入订货日期!")
63 59 private LocalDate orderDate;
64 60
65 61 /**
66 62 * 单位
67 63 */
68   - @ApiModelProperty(value = "单位", required = true)
69   - @NotBlank(message = "请输入单位!")
  64 + @ApiModelProperty(value = "单位")
70 65 @Length(message = "单位最多允许50个字符!")
71 66 private String unit;
72 67
... ... @@ -80,8 +75,7 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable
80 75 /**
81 76 * 合计人民币金额(大写)
82 77 */
83   - @ApiModelProperty(value = "合计人民币金额(大写)", required = true)
84   - @NotBlank(message = "请输入合计人民币金额(大写)!")
  78 + @ApiModelProperty(value = "合计人民币金额(大写)")
85 79 @Length(message = "合计人民币金额(大写)最多允许100个字符!")
86 80 private String totalAmountCapital;
87 81
... ... @@ -258,10 +252,10 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable
258 252 private String parentId;
259 253
260 254 /**
261   - * 经销标准合同物料行
  255 + * 合同物料行
262 256 */
263   - @ApiModelProperty(value = "经销标准合同物料行", required = true)
264   - @NotNull(message = "经销标准合同物料行不可为空!")
  257 + @ApiModelProperty(value = "合同物料行")
  258 + @NotNull(message = "合同物料行不可为空!")
265 259 private List<UpdateContractDistributorLineVo> contractDistributorLineList;
266 260
267 261 /**
... ...
... ... @@ -63,6 +63,12 @@
63 63 <if test="vo.validityTimeEnd != null">
64 64 AND tb.validity_time &lt;= #{vo.validityTimeEnd}
65 65 </if>
  66 + <if test="vo.customerIdList != null and vo.customerIdList.size() > 0">
  67 + AND tb.customer_id IN
  68 + <foreach collection="vo.customerIdList" open="(" separator="," close=")" item="item">
  69 + #{item}
  70 + </foreach>
  71 + </if>
66 72 </where>
67 73 </select>
68 74 </mapper>
... ...