caozj 2 سال پیش
والد
کامیت
e6d80e7f3e

+ 3 - 1
hx-common/src/main/java/com/fjhx/common/enums/FlowStatusEnum.java

@@ -6,13 +6,15 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
- * 流程审批状态枚举
+ * 流程审批状态--数据状态枚举
  */
 public enum FlowStatusEnum {
     DRAFT(0, "草稿"),
     UNDER_REVIEW(10, "审批中"),
     REJECT(20, "驳回"),
     PASS(30,"通过"),
+    CANCELLATION(88,"作废"),
+    TERMINATION(99,"终止"),
     ;
     private int key;
 

+ 4 - 0
hx-ehsd/pom.xml

@@ -38,5 +38,9 @@
             <artifactId>hx-purchase</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-sale</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 38 - 0
hx-ehsd/src/main/java/com/fjhx/ehsd/controller/delivery/DeliveryController.java

@@ -0,0 +1,38 @@
+package com.fjhx.ehsd.controller.delivery;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.contract.dto.ContractProductDto;
+import com.fjhx.sale.entity.contract.dto.ContractProductSelectDto;
+import com.fjhx.sale.entity.contract.vo.ContractProductVo;
+import com.fjhx.sale.service.contract.ContractProductService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 交接单
+ * </p>
+ *
+ * @author  czj
+ * @since 2023-05-05
+ */
+@RestController
+@RequestMapping("/delivery")
+public class DeliveryController {
+
+    @Autowired
+    private ContractProductService contractProductService;
+
+    /**
+     * 交接单--分页
+     */
+    @PostMapping("/page")
+    public Page<ContractProductVo> page(@RequestBody ContractProductSelectDto dto) {
+        return contractProductService.getEHSDPage(dto);
+    }
+
+}

+ 1 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/enums/PurchaseDataResourceEnum.java

@@ -11,6 +11,7 @@ import java.util.Map;
 public enum PurchaseDataResourceEnum {
     DATA_RESOURCE_0(0, "自建"),
     DATA_RESOURCE_1(1, "外销合同采购"),
+    DATA_RESOURCE_2(2, "样品单采购"),
     ;
     private int key;
 

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductVo.java

@@ -90,4 +90,9 @@ public class ContractProductVo extends ContractProduct {
      * 已采购数
      */
     private BigDecimal sumPurchaseCount;
+
+    /**
+     * 订单类型
+     */
+    private String orderType;
 }

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/sample/po/Sample.java

@@ -220,6 +220,11 @@ public class Sample extends BasePo {
     private String submitType;
 
     /**
+     * 版本号
+     */
+    private String versions;
+
+    /**
      * 样品单产品列表
      */
     @TableField(exist = false)

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java

@@ -21,6 +21,7 @@ import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.sale.service.contract.ContractShipmentService;
 import com.fjhx.sale.util.code.CodeEnum;
 import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -58,6 +59,7 @@ public class ContractFlow extends FlowDelegate {
         ContractShipmentService contractShipmentService = SpringUtil.getBean(ContractShipmentService.class);
         Contract contract = submitData.toJavaObject(Contract.class);
         contract.setCode(CodeEnum.CONTRACT.getCode());
+        contract.setUserName(SecurityUtils.getUsername());
         contract.setStatus(FlowStatusEnum.UNDER_REVIEW.getKey());
         contractService.save(contract);
         List<ContractProduct> contractProductList = contract.getContractProductList();

+ 20 - 1
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlow.java

@@ -16,7 +16,9 @@ import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.util.code.CodeEnum;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.entity.sample.po.SampleProduct;
 import com.fjhx.sale.service.contract.ContractProductService;
+import com.fjhx.sale.service.sample.SampleProductService;
 import com.obs.services.internal.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -39,6 +41,9 @@ public class PurchaseFlow extends FlowDelegate {
     private PurchaseService purchaseService;
 
     @Autowired
+    private SampleProductService sampleProductService;
+
+    @Autowired
     private PurchaseDetailService purchaseDetailService;
 
     @Autowired
@@ -90,21 +95,35 @@ public class PurchaseFlow extends FlowDelegate {
         //查询采购产品
         List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId,businessId));
         List<ContractProduct> upContractProduct = new ArrayList<>();
+        List<SampleProduct> upSampleProduct = new ArrayList<>();
         for(PurchaseDetail p:purchaseDetailList){
             if(ObjectUtils.isNotEmpty(p.getDataResourceId())&&
                     p.getDataResource()== PurchaseDataResourceEnum.DATA_RESOURCE_1.getKey()){//如果采购的是外销合同
                 ContractProduct contractProduct = contractProductService.getById(p.getDataResourceId());
                 BigDecimal expendQuantity = contractProduct.getExpendQuantity().subtract(p.getCount());
                 if(expendQuantity.compareTo(BigDecimal.ZERO)< 1){//小于0不让继续执行
-                    throw new ServiceException("采购数量不得大于外销合同数量");
+                    throw new ServiceException("采购数量不得大于合同数量");
                 }
                 contractProduct.setExpendQuantity(expendQuantity);
                 upContractProduct.add(contractProduct);
             }
+            if(ObjectUtils.isNotEmpty(p.getDataResourceId())&&
+                    p.getDataResource()== PurchaseDataResourceEnum.DATA_RESOURCE_2.getKey()){//如果采购的是样品单
+                SampleProduct sampleProduct = sampleProductService.getById(p.getDataResourceId());
+                BigDecimal expendQuantity = sampleProduct.getExpendQuantity().subtract(p.getCount());
+                if(expendQuantity.compareTo(BigDecimal.ZERO)< 1){//小于0不让继续执行
+                    throw new ServiceException("采购数量不得大于合同数量");
+                }
+                sampleProduct.setExpendQuantity(expendQuantity);
+                upSampleProduct.add(sampleProduct);
+            }
         }
         if(CollectionUtils.isNotEmpty(upContractProduct)){//扣减销售合同数量
             contractProductService.updateBatchById(upContractProduct);
         }
+        if(CollectionUtils.isNotEmpty(upSampleProduct)){//扣减样品单数量
+            sampleProductService.updateBatchById(upSampleProduct);
+        }
         //修改采购状态为审批通过
         purchase.setPurchaseStatus(PurchaseStatusEnum.PASS.getKey());
         purchase.setApprovedDate(new Date());

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/flow/SampleFlow.java

@@ -21,6 +21,7 @@ import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.sale.util.code.CodeEnum;
 import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -59,6 +60,7 @@ public class SampleFlow extends FlowDelegate {
         Sample sample = submitData.toJavaObject(Sample.class);
         sample.setCode(CodeEnum.SAMPLE_CODE.getCode());
         sample.setStatus(FlowStatusEnum.UNDER_REVIEW.getKey());
+        sample.setUserName(SecurityUtils.getUsername());
         sampleService.save(sample);
         List<SampleProduct> sampleProductList = sample.getSampleProductList();
         if(CollectionUtils.isNotEmpty(sampleProductList)){//保存样品单产品

+ 9 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductMapper.java

@@ -39,4 +39,13 @@ public interface ContractProductMapper extends BaseMapper<ContractProduct> {
      * @return
      */
     List<ContractProductVo> getNoPackContractProductById(@Param("customerId")String customerId, @Param("contractIds")List<String> contractId);
+
+    /**
+     * ehsd交接单列表
+     * @param page
+     * @param wrapper
+     * @return
+     */
+    Page<ContractProductVo> getEHSDPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractProduct> wrapper);
+
 }

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractProductService.java

@@ -57,4 +57,9 @@ public interface ContractProductService extends BaseService<ContractProduct> {
      */
     List<ContractProductVo> getNoPackContractProductById(String customerId, String contractIds);
 
+    /**
+     * ehsd-交接单分页
+     */
+    Page<ContractProductVo> getEHSDPage(ContractProductSelectDto dto);
+
 }

+ 38 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -1,19 +1,26 @@
 package com.fjhx.sale.service.contract.impl;
 
+import cn.hutool.http.HttpRequest;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.fjhx.common.enums.FlowStatusEnum;
 import com.fjhx.item.service.product.ProductClassifyService;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
+import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.mapper.contract.ContractProductMapper;
 import com.fjhx.sale.service.contract.ContractProductService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.SqlField;
+import com.ruoyi.framework.web.service.TokenService;
+import jdk.nashorn.internal.parser.Token;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.authority.AuthorityUtils;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
@@ -22,6 +29,8 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.sale.entity.contract.dto.ContractProductDto;
 import cn.hutool.core.bean.BeanUtil;
 
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
@@ -57,6 +66,7 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     public Page<ContractProductVo> getPage(ContractProductSelectDto dto) {
         IWrapper<ContractProduct> wrapper = getWrapper();
         wrapper.orderByDesc("t1", ContractProduct::getCreateTime);
+        wrapper.between("t2", Contract::getStatus, FlowStatusEnum.DRAFT.getKey(),FlowStatusEnum.CANCELLATION.getKey()-1);
         wrapper.gt("t1",ContractProduct::getExpendQuantity,BigDecimal.ZERO);
         if(StringUtils.isNotEmpty(dto.getKeyword())){
             wrapper.keyword(dto.getKeyword(),new SqlField("t2.`code`"),new SqlField("t2.`user_name`"));
@@ -103,6 +113,34 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
         });
         return list;
     }
+
+    @Override
+    public Page<ContractProductVo> getEHSDPage(ContractProductSelectDto dto) {
+        IWrapper<ContractProduct> wrapper = getWrapper();
+        wrapper.orderByDesc("t1.ct");
+        if(StringUtils.isNotEmpty(dto.getKeyword())){
+            wrapper.keyword(dto.getKeyword(),new SqlField("t1.`code`"),new SqlField("t1.`userName`"));
+        }
+        Page<ContractProductVo> page = this.baseMapper.getEHSDPage(dto.getPage(), wrapper);
+        List<ContractProductVo> list = page.getRecords();
+        if(CollectionUtils.isNotEmpty(list)){
+            // 赋值产品属性
+            productInfoService.attributeAssign(list, ContractProductVo::getProductId, (item, product) -> {
+                item.setProductCode(product.getCode());
+                item.setProductUnit(product.getUnit());
+                item.setProductType(product.getType());
+                item.setProductName(product.getName());
+                item.setProductSpec(product.getSpec());
+                item.setProductCategoryId(product.getProductClassifyId());
+            });
+            // 赋值产品分类名称
+            productClassifyService.attributeAssign(list, ContractProductVo::getProductCategoryId, (item, productClassify) -> {
+                item.setProductCategory(productClassify.getName());
+            });
+        }
+        return page;
+    }
+
     /**
      * 根据合同产品IDS查询合同产品
      * @param ids

+ 3 - 1
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -16,6 +16,8 @@ import com.fjhx.account.service.account.AccountManagementService;
 import com.fjhx.area.utils.AreaUtil;
 import com.fjhx.common.entity.corporation.po.Corporation;
 import com.fjhx.common.entity.documentary.bo.DocumentaryData;
+import com.fjhx.common.enums.FlowStatusEnum;
+import com.fjhx.common.service.contract.ContractTemplateService;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
@@ -100,7 +102,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     public Page<ContractVo> getPage(ContractSelectDto dto) {
         IWrapper<Contract> wrapper = getWrapper();
         wrapper.orderByDesc("t1",Contract::getCreateTime);
-        wrapper.between("t1",Contract::getStatus,0,87);
+        wrapper.between("t1",Contract::getStatus, FlowStatusEnum.PASS.getKey(),FlowStatusEnum.CANCELLATION.getKey()-1);
         if(StringUtils.isNotEmpty(dto.getStatus())){
             wrapper.eq("t1",Contract::getStatus,dto.getStatus());
         }

+ 2 - 1
hx-sale/src/main/java/com/fjhx/sale/service/sample/impl/SampleServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.FlowStatusEnum;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.sale.entity.sample.po.Sample;
@@ -51,7 +52,7 @@ public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> impleme
     public Page<SampleVo> getPage(SampleSelectDto dto) {
         IWrapper<Sample> wrapper = getWrapper();
         wrapper.orderByDesc("s", Sample::getCreateTime);
-        wrapper.between("s",Sample::getStatus,0,87);
+        wrapper.between("s",Sample::getStatus, FlowStatusEnum.DRAFT.getKey(),FlowStatusEnum.CANCELLATION.getKey()-1);
         if(StringUtils.isNotEmpty(dto.getStatus())){
             wrapper.eq("s",Sample::getStatus,dto.getStatus());
         }

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

@@ -9,13 +9,56 @@
             t2.`code` AS contractCode,
             t2.user_name AS userName,
             t2.version AS contractVersion,
-            t1.expend_quantity expendQuantity,
+            t1.expend_quantity AS expendQuantity,
             (SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
         FROM
             contract_product t1
         LEFT JOIN contract t2 ON t1.contract_id = t2.id
             ${ew.customSqlSegment}
     </select>
+    <select id="getEHSDPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
+        SELECT
+            *
+        FROM
+            (
+                SELECT
+                    t1.create_time AS ct,
+                    "外销合同" AS orderType,
+                    t1.id,
+                    t1.contract_id,
+                    t1.product_id,
+                    t2.`code` AS `contractCode`,
+                    t2.user_name AS userName,
+                    t2.version AS contractVersion,
+                    t1.expend_quantity AS expendQuantity,
+                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
+                    FROM
+                    contract_product t1
+                    LEFT JOIN contract t2 ON t1.contract_id = t2.id
+                    WHERE
+                    t2.`status` &gt;= 30
+                    AND t2.`status` &lt; 88 AND t1.expend_quantity > 0
+        UNION ALL
+                SELECT
+                    t1.create_time AS ct,
+                    "样品单" AS orderType,
+                    t1.id,
+                    t1.sample_id,
+                    t1.product_id,
+                    t2.`code` AS `contractCode`,
+                    t2.user_name AS userName,
+                    t2.versions AS contractVersion,
+                    t1.expend_quantity AS expendQuantity,
+                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
+                FROM
+                    sample_product t1
+                    LEFT JOIN sample t2 ON t1.sample_id = t2.id
+                    WHERE
+                    t2.`status` &gt;= 30
+                    AND t2.`status` &lt; 88 AND t1.expend_quantity > 0
+        ) t1
+            ${ew.customSqlSegment}
+    </select>
     <select id="getListByIds" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
         SELECT
             t1.id,