Procházet zdrojové kódy

增加报价单
外销合同 暂存功能

caozj před 1 rokem
rodič
revize
f2a702f2f0

+ 1 - 0
hx-sale/src/main/java/com/fjhx/sale/enums/SaleQuotationEnum.java

@@ -6,6 +6,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 public enum SaleQuotationEnum {
+    DRAFT("0", "草稿"),
     UNDER_REVIEW("10", "审批中"),
     REJECT("20", "驳回"),
     PASS("30","通过"),

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java

@@ -57,7 +57,7 @@ public interface ContractService extends BaseService<Contract> {
     /**
      * 外销合同表新增
      */
-    void add(ContractDto contractDto);
+    long add(ContractDto contractDto);
 
     /**
      * 外销合同表编辑

+ 81 - 4
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -24,11 +24,14 @@ import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.entity.corporation.po.Corporation;
 import com.fjhx.common.entity.currency.po.CurrencyRate;
 import com.fjhx.common.entity.documentary.bo.DocumentaryData;
+import com.fjhx.common.enums.CodingRuleEnum;
 import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.common.service.currency.CurrencyRateService;
 import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.common.utils.Assert;
+import com.fjhx.common.utils.ExchangeRateUtil;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
@@ -169,6 +172,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Autowired
     private DictTenantDataService dictTenantDataService;
 
+    @Autowired
+    private CodingRuleService codingRuleService;
     /**
      * 分页
      *
@@ -466,6 +471,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         return page;
     }
 
+    /**
+     * 合同明细
+     * @param id
+     * @return
+     */
     @Override
     public ContractVo detail(Long id) {
         Contract contract = this.getById(id);
@@ -497,13 +507,80 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         return result;
     }
 
+    /**
+     * 暂存合同
+     * @param contract
+     * @return
+     */
     @DSTransactional
     @Override
-    public void add(ContractDto contractDto) {
-        setAreaId(contractDto);
-        this.save(contractDto);
+    public long add(ContractDto contract) {
+        if (StringUtils.isEmpty(contract.getCurrency())) {
+            throw new ServiceException("币种不能为空");
+        }
+        //赋值合同号
+        contract.setCode(codingRuleService.createCode(CodingRuleEnum.CONTRACT.getKey(), contract.getBuyCorporationId()));
+        // 保存合同产品
+        List<ContractProduct> contractProductList = contract.getContractProductList();
+        // 赋值待处理数量
+        if (CollectionUtils.isNotEmpty(contractProductList)) {
+            contractProductList.forEach(item -> item.setExpendQuantity(item.getQuantity()));
+        }
+        contract = commStart(contract, 0);
+        return contract.getId();
+    }
+    /**
+     * 开始公共代码抽取
+     *
+     * @param opType 操作类型 0直接发起 1重新发起
+     */
+    public ContractDto commStart(ContractDto contract, Integer opType) {
+        // 赋值城市省份信息
+        CustomizeAreaUtil.setAreaId(contract);
+        contract.setUserName(SecurityUtils.getUsername());
+        contract.setStatus(FlowStatusEnum1.DRAFT.getKey());
+        contract.setBuyCityId(contract.getCityId());
+        contract.setBuyCountryId(contract.getCountryId());
+        contract.setBuyProvinceId(contract.getProvinceId());
+        contract.setRate(ExchangeRateUtil.getCnyToCodeRate(contract.getCurrency()));
+        contractService.saveOrUpdate(contract);
+        // 保存合同产品
+        List<ContractProduct> contractProductList = contract.getContractProductList();
+        if (CollectionUtils.isNotEmpty(contractProductList)) {
+            for (ContractProduct c : contractProductList) {
+                c.setContractId(contract.getId());
+            }
+            contractProductService.saveOrUpdateBatch(contractProductList);
+        }
+        // 保存收费项目
+        List<ContractProject> contractProjectList = contract.getContractProjectList();
+        if (CollectionUtils.isNotEmpty(contractProjectList)) {
+            for (ContractProject c : contractProjectList) {
+                c.setContractId(contract.getId());
+            }
+            contractProjectService.saveOrUpdateBatch(contractProjectList);
+        }
+        // 保存自定义出货
+        List<ContractShipment> contractShipmentList = contract.getContractShipmentList();
+        if (CollectionUtils.isNotEmpty(contractShipmentList)) {
+            for (ContractShipment c : contractShipmentList) {
+                c.setContractId(contract.getId());
+            }
+            contractShipmentService.saveOrUpdateBatch(contractShipmentList);
+        }
+        if (ObjectUtil.isNotEmpty(contract.getId())) {
+            // 交接单附件列表
+            ObsFileUtil.editFile(contract.getFileList(), contract.getId(), 1);
+            // 包装指示附件列表
+            ObsFileUtil.editFile(contract.getPackageFileList(), contract.getId(), 2);
+        } else {
+            // 交接单附件列表
+            ObsFileUtil.saveFile(contract.getFileList(), contract.getId(), 1);
+            // 包装指示附件列表
+            ObsFileUtil.saveFile(contract.getPackageFileList(), contract.getId(), 2);
+        }
+        return contract;
     }
-
     @DSTransactional
     @Override
     public void edit(ContractDto contractDto) {

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/sale/SaleQuotationService.java

@@ -36,7 +36,7 @@ public interface SaleQuotationService extends BaseService<SaleQuotation> {
     /**
      * 报价表新增
      */
-    void add(SaleQuotationDto saleQuotationDto);
+    long add(SaleQuotationDto saleQuotationDto);
 
     /**
      * 报价表编辑

+ 36 - 2
hx-sale/src/main/java/com/fjhx/sale/service/sale/impl/SaleQuotationServiceImpl.java

@@ -3,15 +3,19 @@ package com.fjhx.sale.service.sale.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.account.controller.utils.DateUtils;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.customer.entity.customer.dto.CustomerSelectDto;
@@ -28,6 +32,7 @@ import com.fjhx.sale.entity.sale.dto.SaleQuotationDto;
 import com.fjhx.sale.entity.sale.dto.SaleQuotationSelectDto;
 import com.fjhx.sale.entity.sale.po.SaleQuotation;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
+import com.fjhx.sale.enums.SaleQuotationEnum;
 import com.fjhx.sale.mapper.sale.SaleQuotationMapper;
 import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.sale.service.quotation.QuotationPayService;
@@ -80,9 +85,12 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
 
     @Autowired
     private CorporationService corporationService;
+
     @Autowired
     private ProductInfoService productInfoService;
 
+    @Autowired
+    private CodingRuleService codingRuleService;
     /**
      * 报价表分页
      */
@@ -158,9 +166,35 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
         return result;
     }
 
+    /**
+     * 报价单暂存
+     * @param saleQuotation
+     */
+    @DSTransactional
     @Override
-    public void add(SaleQuotationDto saleQuotationDto) {
-        this.save(saleQuotationDto);
+    public long add(SaleQuotationDto saleQuotation) {
+        //赋值城市省份信息
+        CustomizeAreaUtil.setAreaId(saleQuotation);
+        saleQuotation.setBuyCityId(saleQuotation.getCityId());
+        saleQuotation.setBuyCountryId(saleQuotation.getCountryId());
+        saleQuotation.setBuyProvinceId(saleQuotation.getProvinceId());
+        //添加报价编码
+        saleQuotation.setCode(codingRuleService.createCode(CodingRuleEnum.SALE_QUOTATION.getKey(),saleQuotation.getBuyCorporationId()));
+        //添加报价状态
+        saleQuotation.setStatus(SaleQuotationEnum.DRAFT.getKey());
+        //添加报价单信息
+        this.saveOrUpdate(saleQuotation);
+        List<QuotationProduct> quotationProductList = saleQuotation.getQuotationProductList();
+        if(CollectionUtils.isNotEmpty(quotationProductList)){//保存报价产品信息
+            quotationProductList.forEach(quotationProduct -> quotationProduct.setSaleQuotationId(saleQuotation.getId()));
+            quotationProductService.saveOrUpdateBatch(quotationProductList);
+        }
+        List<QuotationPay> quotationPayList = saleQuotation.getQuotationPayList();
+        if(CollectionUtils.isNotEmpty(quotationPayList)){//保存报价项目信息
+            quotationPayList.forEach(quotationPay -> quotationPay.setSaleQuotationId(saleQuotation.getId()));
+            quotationPayService.saveOrUpdateBatch(quotationPayList);
+        }
+        return saleQuotation.getId();
     }
 
     @Override