Jelajahi Sumber

销售跟单逻辑更改

caozj 1 tahun lalu
induk
melakukan
b54b61092a

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/controller/contract/EhsdPurchaseDocumentaryController.java → hx-sale/src/main/java/com/fjhx/sale/controller/contract/EhsdDocumentaryController.java

@@ -21,7 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
  */
 @RestController
 @RequestMapping("/contractDocumentary")
-public class EhsdPurchaseDocumentaryController {
+public class EhsdDocumentaryController {
 
     @Autowired
     private ContractDocumentaryService contractDocumentaryService;

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/dto/ContractSelectDto.java

@@ -58,4 +58,9 @@ public class ContractSelectDto extends BaseSelectDto {
      * 跟单类型
      */
     private Integer documentaryType;
+
+    /**
+     * 跟单搜索条件----0:默认 1:无记录 2:有记录
+     */
+    private Integer documentarySearch;
 }

+ 13 - 3
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/ContractDocumentary.java

@@ -20,13 +20,18 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@TableName("ehsd_purchase_documentary")
+@TableName("ehsd_documentary")
 public class ContractDocumentary extends BasePo {
 
     /**
-     * 合同ID
+     * 合同ID/采购ID
      */
-    private Long purchaseId;
+    private Long businessId;
+
+    /**
+     * 业务类型 0:合同  1:采购合同
+     */
+    private Integer businessType;
 
     /**
      * 跟单类型 字典 documentary_type
@@ -44,6 +49,11 @@ public class ContractDocumentary extends BasePo {
     private String documentaryRemark;
 
     /**
+     * 扩展字段 (是否通过、发货日期)
+     */
+    private String content;
+
+    /**
      * 文件列表
      */
     @TableField(exist = false)

+ 7 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/purchase/po/EhsdPurchase.java

@@ -2,6 +2,7 @@ package com.fjhx.sale.entity.purchase.po;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fjhx.sale.entity.contract.po.ContractDocumentary;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
@@ -269,6 +270,12 @@ public class EhsdPurchase extends BasePo {
     private List<EhsdPurchaseProject> purchaseProjectList;
 
     /**
+     * 采购跟单列表
+     */
+    @TableField(exist = false)
+    private List<ContractDocumentary> purchaseDocumentary;
+
+    /**
      * 供应商名称
      */
     @TableField(exist = false)

+ 3 - 3
hx-sale/src/main/java/com/fjhx/sale/flow/ContractUpdateFlow.java

@@ -140,9 +140,9 @@ public class ContractUpdateFlow extends FlowDelegate {
             }
         }
         long contractId = update(contract);
-        if(contract.getStartType()==1){//直接审批通过
-            this.end(flowId,contractId,submitData);
-        }
+//        if(contract.getStartType()==1){//直接审批通过
+//            this.end(flowId,contractId,submitData);
+//        }
         return contractId;
     }
 

+ 3 - 3
hx-sale/src/main/java/com/fjhx/sale/flow/SampleUpdateFlow.java

@@ -138,9 +138,9 @@ public class SampleUpdateFlow extends FlowDelegate {
             }
         }
         long sampleId = update(newSample);
-        if(newSample.getStartType()==1){//直接审批通过
-            this.end(flowId,sampleId,submitData);
-        }
+//        if(newSample.getStartType()==1){//直接审批通过
+//            this.end(flowId,sampleId,submitData);
+//        }
         return sampleId;
     }
 

+ 18 - 9
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -60,10 +60,7 @@ import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.dto.DecisionAidDto;
 import com.fjhx.sale.entity.contract.dto.PayDecisionAidDto;
-import com.fjhx.sale.entity.contract.po.Contract;
-import com.fjhx.sale.entity.contract.po.ContractProduct;
-import com.fjhx.sale.entity.contract.po.ContractProject;
-import com.fjhx.sale.entity.contract.po.ContractShipment;
+import com.fjhx.sale.entity.contract.po.*;
 import com.fjhx.sale.entity.contract.vo.*;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
@@ -71,10 +68,7 @@ import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
 import com.fjhx.sale.mapper.contract.ContractMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
-import com.fjhx.sale.service.contract.ContractProductService;
-import com.fjhx.sale.service.contract.ContractProjectService;
-import com.fjhx.sale.service.contract.ContractService;
-import com.fjhx.sale.service.contract.ContractShipmentService;
+import com.fjhx.sale.service.contract.*;
 import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
 import com.fjhx.sale.service.purchase.EhsdPurchaseService;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
@@ -176,6 +170,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     private ContractService contractService;
 
     @Autowired
+    private ContractDocumentaryService contractDocumentaryService;
+
+    @Autowired
     private PurchaseService purchaseService;
 
     @Autowired
@@ -1881,7 +1878,12 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         wrapper.ne("t1",Contract::getIsShow,1);
         wrapper.eq("t1", Contract::getStatus, FlowStatusEnum1.PASS.getKey());
         wrapper.eq("t1.orderStatus", dto.getOrderStatus());
-        wrapper.eq(ObjectUtil.isNotEmpty(dto.getDocumentaryType()),"t1.documentaryCount",0);
+        if(ObjectUtil.isNotEmpty(dto.getDocumentarySearch()==1)&&ObjectUtil.isNotEmpty(dto.getDocumentaryType())){//无记录
+            wrapper.eq("t1.documentaryCount",0);
+        }
+        if(ObjectUtil.isNotEmpty(dto.getDocumentarySearch()==2)&&ObjectUtil.isNotEmpty(dto.getDocumentaryType())){//无记录
+            wrapper.gt("t1.documentaryCount",0);
+        }
         Page<ContractVo> page = baseMapper.getExportCopyList(dto.getPage(), wrapper,dto.getDocumentaryType());
         List<ContractVo> list = page.getRecords();
         if(CollectionUtils.isNotEmpty(list)){
@@ -1898,6 +1900,10 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             Map<Long,List<ContractProduct>> contractProductMap = contractProductList.stream().collect(Collectors.groupingBy(ContractProduct::getContractId));
             //采购合同
             List<EhsdPurchase> ehsdPurchaseList = ehsdPurchaseService.list(Wrappers.<EhsdPurchase>query().lambda().in(EhsdPurchase::getDataResourceId,ids));
+            List<Long> purchaseIds = ehsdPurchaseList.stream().map(EhsdPurchase::getId).collect(Collectors.toList());
+            //查询采购跟单列表
+            List<ContractDocumentary> contractDocumentaryList = contractDocumentaryService.list(Wrappers.<ContractDocumentary>query().lambda().in(ContractDocumentary::getBusinessId,purchaseIds));
+            Map<Long,List<ContractDocumentary>> contractDocumentaryMap = contractDocumentaryList.stream().collect(Collectors.groupingBy(ContractDocumentary::getBusinessId));
             //赋值采购合同供应商
             supplierInfoService.attributeAssign(ehsdPurchaseList, EhsdPurchase::getSellCorporationId, (item, supplierInfo) -> {
                 item.setSupplyName(supplierInfo.getName());
@@ -1929,6 +1935,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 // 赋值采购单信息
                 if (MapUtils.isNotEmpty(ehsdPurchaseMap)) {
                     List<EhsdPurchase> purchases = ehsdPurchaseMap.get(p.getId());
+                    for(EhsdPurchase e : purchases){
+                        e.setPurchaseDocumentary(contractDocumentaryMap.getOrDefault(e.getId(),null));
+                    }
                     p.setPurchaseList(purchases);
                 }
 

+ 1 - 1
hx-sale/src/main/resources/mapper/contract/ContractDocumentaryMapper.xml

@@ -4,7 +4,7 @@
     <select id="getPage" resultType="com.fjhx.sale.entity.contract.po.ContractDocumentary">
         select
             *
-        from ehsd_purchase_documentary cd
+        from ehsd_documentary cd
             ${ew.customSqlSegment}
     </select>
 

+ 8 - 7
hx-sale/src/main/resources/mapper/contract/ContractMapper.xml

@@ -408,24 +408,25 @@
         SELECT * FROM (SELECT
             t1.*,
             CASE
-            WHEN t1.purchaseCount = 0 THEN 10
-            WHEN t1.packCount = 0 THEN 20
-            WHEN t1.packCount > 0 AND t1.sumClaimMoney &lt; t1.amountCNY THEN 30
-            WHEN t1.packCount = 0 AND t1.sumClaimMoney >= t1.amountCNY THEN 40
-            WHEN t1.packCount > 0 AND t1.sumClaimMoney >= t1.amountCNY THEN 50
+
+            WHEN t1.purchaseAmountCNY &lt; t1.amountCNY AND t1.sumClaimMoney &lt; t1.amountCNY THEN 10
+            WHEN t1.purchaseAmountCNY &lt; t1.amountCNY AND t1.sumClaimMoney > t1.amountCNY THEN 20
+            WHEN t1.purchaseAmountCNY > t1.amountCNY AND t1.sumClaimMoney &lt; t1.amountCNY THEN 30
+            WHEN t1.purchaseAmountCNY > t1.amountCNY AND t1.sumClaimMoney > t1.amountCNY THEN 40
             ELSE 88
-            END                                   AS orderStatus
+            END AS orderStatus
         FROM
             (
                 SELECT
                     t1.*,
                     IFNULL( t1.amount * t1.rate, 0 ) AS amountCNY,
                     <if test="documentaryType neq null ">
-                        (SELECT count(1) FROM ehsd_purchase p LEFT JOIN ehsd_purchase_documentary pd ON p.id = pd.purchase_id WHERE p.data_resource_id = t1.id AND pd.documentary_type = #{documentaryType}) AS documentaryCount,
+                        (SELECT count(1) FROM ehsd_purchase p LEFT JOIN ehsd_purchase_documentary pd ON p.id = pd.business_id WHERE p.data_resource_id = t1.id AND pd.documentary_type = #{documentaryType}) AS documentaryCount,
                     </if>
                     IFNULL(t1.advance_ratio,0)*IFNULL(t1.amount,0)/100 AS earnest,
                     ( SELECT create_time FROM claim_contract WHERE contract_id = t1.id ORDER BY create_time ASC LIMIT 1) AS claimTime,
                     ( SELECT count( 1 ) FROM ehsd_purchase WHERE `status` = 30 AND data_resource_id = t1.id ) AS purchaseCount,
+                    ( SELECT IFNULL(SUM(amount*rate),0) FROM ehsd_purchase WHERE `status` = 30 AND data_resource_id = t1.id) AS purchaseAmountCNY,
                     ( SELECT count( 1 ) FROM pack_detail WHERE FIND_IN_SET( contract_ids, t1.id ) AND shipment_status = 1 ) AS packCount,
                     (
                         SELECT