Commit f3af908f705af64affd5c0a2f022dfa8bcac1ba1

Authored by 杨鸣坤
1 parent a5e7d539

楚江ERP:合同增加合同名称

... ... @@ -130,6 +130,7 @@ create table if not exists `tbl_contract_distributor_standard`
130 130 `signed_contract_file_name` VARCHAR(255) COMMENT '双方盖章合同名称',
131 131 `formalized_at` datetime comment '转为正式合同时间',
132 132 `standardized_at` datetime comment '转为标准合同时间',
  133 + `title` varchar(20) comment '合同名称(销售合同、销售订单)',
133 134 `create_by_id` varchar(32) not null comment '创建人ID',
134 135 `create_by` varchar(20) not null comment '创建人',
135 136 `update_by_id` varchar(32) not null comment '更新人ID',
... ...
... ... @@ -407,6 +407,12 @@ public class GetContractDistributorStandardBo extends BaseBo<ContractDistributor
407 407 @ApiModelProperty(value = "是否已完成锁价/锁规")
408 408 private Boolean priceSpecLocked;
409 409
  410 + /**
  411 + * 合同名称(销售合同、销售订单)
  412 + */
  413 + @ApiModelProperty(value = "合同名称(销售合同、销售订单)")
  414 + private String title;
  415 +
410 416 public GetContractDistributorStandardBo() {
411 417
412 418 }
... ...
... ... @@ -105,8 +105,6 @@ public class ContractDistributorStandardController extends DefaultBaseController
105 105 @Autowired
106 106 private ContractFrameworkService contractFrameworkService;
107 107 @Autowired
108   - private ProductVarietyService productVarietyService;
109   - @Autowired
110 108 private ContractStdProcessingLineService contractStdProcessingLineService;
111 109
112 110
... ... @@ -636,32 +634,6 @@ public class ContractDistributorStandardController extends DefaultBaseController
636 634 // 设置响应头
637 635 setupResponse(response, data.getCode() + "_" + data.getBuyerName() + "-合同打印.xls");
638 636
639   - Wrapper<ContractFramework> contractFrameworkWrapper = Wrappers.lambdaQuery(ContractFramework.class)
640   - .eq(ContractFramework::getCustomerId, data.getBuyer())
641   - .ge(ContractFramework::getValidityTime, LocalDate.now())
642   - .ge(ContractFramework::getCompany, data.getSupplier())
643   - .eq(ContractFramework::getHasFrameworkAgreement, true);
644   - List<ContractFramework> contractFrameworkList = contractFrameworkService.list(contractFrameworkWrapper);
645   - List<String> productNameList = new ArrayList<>();
646   - if (CollectionUtils.isNotEmpty(contractFrameworkList)) {
647   - List<String> materialTypeIdList = contractFrameworkList.stream()
648   - .filter(bo -> StringUtils.isNotBlank(bo.getMaterialTypeId()))
649   - .flatMap(bo -> Arrays.stream(bo.getMaterialTypeId().split(",")))
650   - .map(String::trim)
651   - .filter(StringUtils::isNotBlank)
652   - .distinct()
653   - .collect(Collectors.toList());
654   - List<ProductVariety> productVarietyList = productVarietyService.listByIds(materialTypeIdList);
655   - CollectionUtils.emptyIfNull(productVarietyList).forEach(productVariety -> {
656   - if (productVariety == null || StringUtils.isBlank(productVariety.getName())) {
657   - return;
658   - }
659   -
660   - productNameList.add(productVariety.getName().substring(0, 2));
661   - });
662   - }
663   -
664   -
665 637 String templatePath = "templates/standardContractTemplate.xls";
666 638 if ("INTL_STD_CONTRACT".equals(data.getType())
667 639 || "INTL_INVENTORY_AGMT".equals(data.getType())
... ... @@ -688,6 +660,8 @@ public class ContractDistributorStandardController extends DefaultBaseController
688 660 contractTitle = "销售订单(外贸)";
689 661 }
690 662
  663 + List<String> productNameList = contractFrameworkService.getCustomerFrameworkProductNameList(data.getBuyer(), data.getSupplier());
  664 +
691 665 if (CollectionUtils.isNotEmpty(data.getContractDistributorLineList())) {
692 666 for (GetContractDistributorLineBo contractDistributorLineBo : data.getContractDistributorLineList()) {
693 667 if (StringUtils.isNotBlank(contractDistributorLineBo.getProductName())
... ...
... ... @@ -39,7 +39,6 @@ import org.springframework.validation.annotation.Validated;
39 39 import org.springframework.web.bind.annotation.*;
40 40
41 41 import javax.validation.constraints.NotBlank;
42   -import java.time.LocalDate;
43 42 import java.util.List;
44 43 import java.util.Map;
45 44 import java.util.function.Function;
... ...
... ... @@ -318,6 +318,10 @@ public class ContractDistributorStandard extends BaseEntity implements BaseDto {
318 318 */
319 319 private LocalDateTime standardizedAt;
320 320
  321 + /**
  322 + * 合同名称(销售合同、销售订单)
  323 + */
  324 + private String title;
321 325
322 326 /**
323 327 * 是否展示正式合同审核按钮(非持久化字段)
... ...
... ... @@ -10,8 +10,10 @@ import com.lframework.starter.bpm.service.FlowInstanceWrapperService;
10 10 import com.lframework.starter.bpm.vo.flow.task.QueryTodoTaskListVo;
11 11 import com.lframework.starter.common.utils.StringUtil;
12 12 import com.lframework.starter.web.core.components.security.SecurityUtil;
13   -import com.lframework.xingyun.sc.entity.ContractDistributorLine;
14   -import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
  13 +import com.lframework.starter.web.inner.entity.SysDataDicItem;
  14 +import com.lframework.starter.web.inner.service.system.SysDataDicItemService;
  15 +import com.lframework.xingyun.sc.controller.contract.ContractDistributorStandardController;
  16 +import com.lframework.xingyun.sc.entity.*;
15 17 import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
16 18 import com.lframework.starter.web.core.utils.PageResultUtil;
17 19 import com.lframework.starter.web.core.utils.OpLogUtil;
... ... @@ -23,12 +25,11 @@ import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
23 25 import com.lframework.starter.web.core.components.resp.PageResult;
24 26 import com.lframework.starter.common.utils.ObjectUtil;
25 27 import com.lframework.starter.common.utils.Assert;
26   -import com.lframework.xingyun.sc.entity.ContractStdProcessingLine;
27   -import com.lframework.xingyun.sc.entity.PurchaseOrderInfo;
28 28 import com.lframework.xingyun.sc.enums.CustomerDevelopStatus;
29 29 import com.lframework.xingyun.sc.mappers.ContractDistributorStandardMapper;
30 30 import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService;
31 31 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
  32 +import com.lframework.xingyun.sc.service.contract.ContractFrameworkService;
32 33 import com.lframework.xingyun.sc.service.contract.ContractStdProcessingLineService;
33 34 import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService;
34 35 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorLineVo;
... ... @@ -76,7 +77,10 @@ public class ContractDistributorStandardServiceImpl extends
76 77 private ContractStdProcessingLineService contractStdProcessingLineService;
77 78 @Resource
78 79 private PurchaseOrderInfoService purchaseOrderInfoService;
79   -
  80 + @Resource
  81 + private ContractFrameworkService contractFrameworkService;
  82 + @Resource
  83 + private SysDataDicItemService sysDataDicItemService;
80 84
81 85 @Override
82 86 public PageResult<ContractDistributorStandard> query(Integer pageIndex, Integer pageSize, QueryContractDistributorStandardVo vo) {
... ... @@ -129,7 +133,22 @@ public class ContractDistributorStandardServiceImpl extends
129 133 @Transactional(rollbackFor = Exception.class)
130 134 @Override
131 135 public String create(CreateContractDistributorStandardVo vo) {
  136 + List<String> productNameList = contractFrameworkService.getCustomerFrameworkProductNameList(vo.getBuyer(), vo.getSupplier());
  137 + String title = "销售订单";
  138 + List<SysDataDicItem> productDicItemList = sysDataDicItemService.findByDicCode(ContractDistributorStandardController.CONTRACT_PRODUCT_DIC_CODE);
  139 + Map<String, String> productCodeAndNameMap = productDicItemList.stream().collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName));
  140 +
  141 + for (int i = 0; i < vo.getContractDistributorLineList().size(); i++) {
  142 + CreateContractDistributorLineVo createContractDistributorLineVo = vo.getContractDistributorLineList().get(i);
  143 + String productName = productCodeAndNameMap.get(createContractDistributorLineVo.getProductId());
  144 + if (StringUtils.isNotBlank(productName)
  145 + && !productNameList.contains(productName.substring(0, 2))) {
  146 + title = "销售合同";
  147 + break;
  148 + }
  149 + }
132 150
  151 + vo.setTitle(title);
133 152 ContractDistributorStandard data = createContractBase(vo);
134 153
135 154 OpLogUtil.setVariable("id", data.getId());
... ... @@ -149,7 +168,22 @@ public class ContractDistributorStandardServiceImpl extends
149 168 @Transactional(rollbackFor = Exception.class)
150 169 @Override
151 170 public String createStdContract(CreateContractDistributorStandardVo vo) {
  171 + List<String> productNameList = contractFrameworkService.getCustomerFrameworkProductNameList(vo.getBuyer(), vo.getSupplier());
  172 + String title = "销售订单";
  173 + List<SysDataDicItem> productDicItemList = sysDataDicItemService.findByDicCode(ContractDistributorStandardController.CONTRACT_PRODUCT_DIC_CODE);
  174 + Map<String, String> productCodeAndNameMap = productDicItemList.stream().collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName));
152 175
  176 + for (int i = 0; i < vo.getContractStdProcessingLineList().size(); i++) {
  177 + CreateContractStdProcessingLineVo createContractStdProcessingLineVo = vo.getContractStdProcessingLineList().get(i);
  178 + String productName = productCodeAndNameMap.get(createContractStdProcessingLineVo.getProductId());
  179 + if (StringUtils.isNotBlank(productName)
  180 + && !productNameList.contains(productName.substring(0, 2))) {
  181 + title = "销售合同";
  182 + break;
  183 + }
  184 + }
  185 +
  186 + vo.setTitle(title);
153 187 ContractDistributorStandard data = createContractBase(vo);
154 188
155 189 OpLogUtil.setVariable("id", data.getId());
... ... @@ -200,6 +234,7 @@ public class ContractDistributorStandardServiceImpl extends
200 234 data.setTotalQuantity(vo.getTotalQuantity());
201 235 data.setParentId(vo.getParentId());
202 236 data.setType(vo.getType());
  237 + data.setTitle(vo.getTitle());
203 238
204 239 getBaseMapper().insert(data);
205 240 return data;
... ... @@ -209,7 +244,33 @@ public class ContractDistributorStandardServiceImpl extends
209 244 @Transactional(rollbackFor = Exception.class)
210 245 @Override
211 246 public void update(UpdateContractDistributorStandardVo vo) {
  247 + List<String> productNameList = contractFrameworkService.getCustomerFrameworkProductNameList(vo.getBuyer(), vo.getSupplier());
  248 + String title = "销售订单";
  249 + List<SysDataDicItem> productDicItemList = sysDataDicItemService.findByDicCode(ContractDistributorStandardController.CONTRACT_PRODUCT_DIC_CODE);
  250 + Map<String, String> productCodeAndNameMap = productDicItemList.stream().collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName));
  251 + if ("PROCESS_STD_AGMT".equals(vo.getType())) {
  252 + for (int i = 0; i < vo.getContractStdProcessingLineList().size(); i++) {
  253 + UpdateContractStdProcessingLineVo updateContractStdProcessingLineVo = vo.getContractStdProcessingLineList().get(i);
  254 + String productName = productCodeAndNameMap.get(updateContractStdProcessingLineVo.getProductId());
  255 + if (StringUtils.isNotBlank(productName)
  256 + && !productNameList.contains(productName.substring(0, 2))) {
  257 + title = "销售合同";
  258 + break;
  259 + }
  260 + }
  261 + } else {
  262 + for (int i = 0; i < vo.getContractDistributorLineList().size(); i++) {
  263 + UpdateContractDistributorLineVo updateContractDistributorLineVo = vo.getContractDistributorLineList().get(i);
  264 + String productName = productCodeAndNameMap.get(updateContractDistributorLineVo.getProductId());
  265 + if (StringUtils.isNotBlank(productName)
  266 + && !productNameList.contains(productName.substring(0, 2))) {
  267 + title = "销售合同";
  268 + break;
  269 + }
  270 + }
  271 + }
212 272
  273 + vo.setTitle(title);
213 274 ContractDistributorStandard data = getBaseMapper().selectById(vo.getId());
214 275 if (ObjectUtil.isNull(data)) {
215 276 throw new DefaultClientException("合同不存在!");
... ... @@ -247,6 +308,7 @@ public class ContractDistributorStandardServiceImpl extends
247 308 .set(ContractDistributorStandard::getTotalQuantity, vo.getTotalQuantity())
248 309 .set(ContractDistributorStandard::getType, vo.getType())
249 310 .set(ContractDistributorStandard::getParentId, vo.getParentId())
  311 + .set(ContractDistributorStandard::getTitle, vo.getTitle())
250 312 .eq(ContractDistributorStandard::getId, vo.getId());
251 313
252 314 getBaseMapper().update(updateWrapper);
... ...
1 1 package com.lframework.xingyun.sc.impl.contract;
2 2
  3 +import com.baomidou.mybatisplus.core.conditions.Wrapper;
3 4 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
4 5 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 6 import com.github.pagehelper.PageInfo;
... ... @@ -14,23 +15,35 @@ import com.lframework.starter.web.core.utils.OpLogUtil;
14 15 import com.lframework.starter.web.core.utils.PageHelperUtil;
15 16 import com.lframework.starter.web.core.utils.PageResultUtil;
16 17 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
  18 +import com.lframework.xingyun.basedata.entity.ProductVariety;
  19 +import com.lframework.xingyun.basedata.service.product.ProductVarietyService;
17 20 import com.lframework.xingyun.sc.entity.ContractFramework;
18 21 import com.lframework.xingyun.sc.mappers.ContractFrameworkMapper;
19 22 import com.lframework.xingyun.sc.service.contract.ContractFrameworkService;
20 23 import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractFrameworkVo;
21 24 import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractFrameworkVo;
22 25 import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractFrameworkVo;
  26 +import org.apache.commons.collections4.CollectionUtils;
  27 +import org.apache.commons.lang3.StringUtils;
  28 +import org.springframework.beans.factory.annotation.Autowired;
23 29 import org.springframework.cache.annotation.CacheEvict;
24 30 import org.springframework.cache.annotation.Cacheable;
25 31 import org.springframework.stereotype.Service;
26 32 import org.springframework.transaction.annotation.Transactional;
27 33
28 34 import java.io.Serializable;
  35 +import java.time.LocalDate;
  36 +import java.util.ArrayList;
  37 +import java.util.Arrays;
29 38 import java.util.List;
  39 +import java.util.stream.Collectors;
30 40
31 41 @Service
32 42 public class ContractFrameworkServiceImpl extends BaseMpServiceImpl<ContractFrameworkMapper, ContractFramework> implements ContractFrameworkService {
33 43
  44 + @Autowired
  45 + private ProductVarietyService productVarietyService;
  46 +
34 47 @Override
35 48 public PageResult<ContractFramework> query(Integer pageIndex, Integer pageSize, QueryContractFrameworkVo vo) {
36 49
... ... @@ -102,6 +115,40 @@ public class ContractFrameworkServiceImpl extends BaseMpServiceImpl<ContractFram
102 115 return data.getId();
103 116 }
104 117
  118 + @Override
  119 + public List<String> getCustomerFrameworkProductNameList(String customerId, String company) {
  120 + if (StringUtils.isBlank(customerId) || StringUtils.isBlank(customerId)) {
  121 + return new ArrayList<>(0);
  122 + }
  123 +
  124 + Wrapper<ContractFramework> contractFrameworkWrapper = Wrappers.lambdaQuery(ContractFramework.class)
  125 + .eq(ContractFramework::getCustomerId, customerId)
  126 + .ge(ContractFramework::getValidityTime, LocalDate.now())
  127 + .ge(ContractFramework::getCompany, company)
  128 + .eq(ContractFramework::getHasFrameworkAgreement, true);
  129 + List<ContractFramework> contractFrameworkList = list(contractFrameworkWrapper);
  130 + List<String> productNameList = new ArrayList<>();
  131 + if (CollectionUtils.isNotEmpty(contractFrameworkList)) {
  132 + List<String> materialTypeIdList = contractFrameworkList.stream()
  133 + .filter(bo -> StringUtils.isNotBlank(bo.getMaterialTypeId()))
  134 + .flatMap(bo -> Arrays.stream(bo.getMaterialTypeId().split(",")))
  135 + .map(String::trim)
  136 + .filter(StringUtils::isNotBlank)
  137 + .distinct()
  138 + .collect(Collectors.toList());
  139 + List<ProductVariety> productVarietyList = productVarietyService.listByIds(materialTypeIdList);
  140 + CollectionUtils.emptyIfNull(productVarietyList).forEach(productVariety -> {
  141 + if (productVariety == null || StringUtils.isBlank(productVariety.getName())) {
  142 + return;
  143 + }
  144 +
  145 + productNameList.add(productVariety.getName().substring(0, 2));
  146 + });
  147 + }
  148 +
  149 + return productNameList;
  150 + }
  151 +
105 152 @CacheEvict(value = ContractFramework.CACHE_NAME, key = "@cacheVariables.tenantId() + #key")
106 153 @Override
107 154 public void cleanCacheByKey(Serializable key) {
... ...
... ... @@ -120,5 +120,4 @@ public interface ContractDistributorStandardService extends BaseMpService<Contra
120 120 * @return 一年内未签订合同的企业
121 121 */
122 122 List<String> getContractSigned(List<String> buyerList);
123   -
124 123 }
... ...
... ... @@ -39,15 +39,22 @@ public interface ContractFrameworkService extends BaseMpService<ContractFramewor
39 39
40 40 /**
41 41 * 修改
  42 + *
42 43 * @param vo
43 44 */
44 45 void update(UpdateContractFrameworkVo vo);
45 46
46 47 /**
47 48 * 创建
  49 + *
48 50 * @param vo
49 51 * @return
50 52 */
51 53 String create(CreateContractFrameworkVo vo);
52 54
  55 +
  56 + /**
  57 + * 获取指定客户框架合同的物料名称
  58 + */
  59 + List<String> getCustomerFrameworkProductNameList(String customerId, String company);
53 60 }
... ...
... ... @@ -310,4 +310,10 @@ public class CreateContractDistributorStandardVo implements BaseVo, Serializable
310 310 */
311 311 @ApiModelProperty(value = "标准合同是否审核完成(AUDIT:审核中,PASS:审核通过,REFUSE:已驳回,CANCEL:已取消)")
312 312 private String standardApproved;
  313 +
  314 + /**
  315 + * 合同名称(销售合同、销售订单)
  316 + */
  317 + @ApiModelProperty(value = "合同名称(销售合同、销售订单)")
  318 + private String title;
313 319 }
... ...
... ... @@ -349,4 +349,9 @@ public class UpdateContractDistributorStandardVo implements BaseVo, Serializable
349 349 @ApiModelProperty(value = "双方盖章合同名称")
350 350 private String signedContractFileName;
351 351
  352 + /**
  353 + * 合同名称(销售合同、销售订单)
  354 + */
  355 + @ApiModelProperty(value = "合同名称(销售合同、销售订单)")
  356 + private String title;
352 357 }
... ...
... ... @@ -60,6 +60,7 @@
60 60 <result column="signed_contract_file_name" property="signedContractFileName"/>
61 61 <result column="formalized_at" property="formalizedAt"/>
62 62 <result column="standardized_at" property="standardizedAt"/>
  63 + <result column="title" property="title"/>
63 64 </resultMap>
64 65
65 66 <sql id="ContractDistributorStandard_sql">
... ... @@ -119,7 +120,8 @@
119 120 tb.signed_contract_file_id,
120 121 tb.signed_contract_file_name,
121 122 tb.formalized_at,
122   - tb.standardized_at
  123 + tb.standardized_at,
  124 + tb.title
123 125 FROM tbl_contract_distributor_standard AS tb
124 126 </sql>
125 127
... ...