Browse Source

1、合同发起变更后,状态改为 “变更中”

if 旧合同状态 == "变更中":

    隐藏新变更发起的合同;只显示旧合同
if 旧合同状态 == "审批通过":

    显示新变更发起的合同,隐藏旧合同。
caozj 1 year ago
parent
commit
a6ea9556bb

+ 2 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/pay/PayService.java

@@ -30,6 +30,8 @@ public interface PayService extends BaseService<Pay> {
      */
     PayVo detail(Long id);
 
+
+
     /**
      * 采购付款新增
      */

+ 6 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/pay/impl/PayServiceImpl.java

@@ -146,6 +146,11 @@ public class PayServiceImpl extends ServiceImpl<PayMapper, Pay> implements PaySe
         return page;
     }
 
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
     @Override
     public PayVo detail(Long id) {
         Pay pay = this.getById(id);
@@ -212,6 +217,7 @@ public class PayServiceImpl extends ServiceImpl<PayMapper, Pay> implements PaySe
         return result;
     }
 
+
     @Override
     public void add(PayDto payDto) {
         this.save(payDto);

+ 9 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/purchase/EhsdPurchaseController.java

@@ -1,6 +1,7 @@
 package com.fjhx.sale.controller.purchase;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.pay.vo.PayVo;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseDto;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseSelectDto;
@@ -45,6 +46,14 @@ public class EhsdPurchaseController {
     }
 
     /**
+     * ehsd采购表明细
+     */
+    @PostMapping("/payDetail")
+    public PayVo payDetail(@RequestBody BaseSelectDto dto) {
+        return ehsdPurchaseService.payDetail(dto.getId());
+    }
+
+    /**
      * ehsd采购表新增
      */
     @PostMapping("/add")

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/Contract.java

@@ -321,6 +321,12 @@ public class Contract extends BasePo {
     private Integer version;
 
     /**
+     * 是否显示
+     */
+    @Version
+    private Integer isShow;
+
+    /**
      * 交接单附件列表
      */
     @TableField(exist = false)

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

@@ -1,6 +1,7 @@
 package com.fjhx.sale.entity.sample.po;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
 import com.fjhx.file.entity.ObsFile;
 import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -266,6 +267,12 @@ public class Sample extends BasePo {
     private String sellPostalCode;
 
     /**
+     * 是否显示
+     */
+    @Version
+    private Integer isShow;
+
+    /**
      * 交接单附件列表
      */
     @TableField(exist = false)

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

@@ -112,6 +112,7 @@ public class ContractUpdateFlow extends FlowDelegate {
             code = code.substring(0, code.lastIndexOf("("));
         }
         contract.setCode(code + "(" + index + ")");
+        contract.setIsShow(1);//隐藏当前数据
         /**
          * 计算新合同的剩余数量
          */
@@ -194,6 +195,7 @@ public class ContractUpdateFlow extends FlowDelegate {
         newContract.setApprovedDate(new Date());
         newContract.setUpId(temNewId);
         newContract.setOldContractId(businessId);
+        newContract.setIsShow(0);//显示新合同
         contractService.updateContract(newContract);
         //修改合同产品相关数据
         if(CollectionUtils.isNotEmpty(newContractShipmentIds)){
@@ -215,6 +217,7 @@ public class ContractUpdateFlow extends FlowDelegate {
         oldContract.setStatus(FlowStatusEnum1.UPDATE.getKey());
         oldContract.setIsChange("1");
         oldContract.setUpId(temOldId);
+        oldContract.setIsShow(1);//隐藏旧合同
         contractService.updateContract(oldContract);
         //修改合同产品相关数据
         if(CollectionUtils.isNotEmpty(oldContractProductIds)){

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

@@ -101,6 +101,7 @@ public class SampleUpdateFlow extends FlowDelegate {
             code = code.substring(0, code.lastIndexOf("("));
         }
         newSample.setCode(code + "(" + index + ")");
+        newSample.setIsShow(1);//隐藏样品单
         /**
          * 计算新样品单的剩余数量
          */
@@ -179,6 +180,7 @@ public class SampleUpdateFlow extends FlowDelegate {
         newSample.setApprovedDate(new Date());
         newSample.setUpId(temNewId);
         newSample.setOldSampleId(businessId);
+        newSample.setIsShow(0);//显示新样品单
         sampleService.updateSample(newSample);
         //修改样品单产品相关数据
         if(CollectionUtils.isNotEmpty(newSampleProductIds)){
@@ -199,6 +201,7 @@ public class SampleUpdateFlow extends FlowDelegate {
         oldSample.setStatus(FlowStatusEnum1.UPDATE.getKey());
         oldSample.setIsChange("1");
         oldSample.setUpId(temOldId);
+        oldSample.setIsShow(1);//隐藏旧的样品单
         sampleService.updateSample(oldSample);
         //修改样品单产品相关数据
         if(CollectionUtils.isNotEmpty(oldSampleProductIds)){

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

@@ -69,6 +69,7 @@ import com.fjhx.sale.entity.contract.vo.*;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
+import com.fjhx.sale.entity.sample.po.Sample;
 import com.fjhx.sale.mapper.contract.ContractMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.ContractProductService;
@@ -240,7 +241,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
         IWrapper<Contract> wrapper = getWrapper();
         wrapper.in("t1", Contract::getBuyCorporationId, authIdList);
-
+        wrapper.ne("t1", Contract::getIsShow,1);
         return pageCommon(dto, wrapper);
     }
 

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/service/purchase/EhsdPurchaseService.java

@@ -1,6 +1,7 @@
 package com.fjhx.sale.service.purchase;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.pay.vo.PayVo;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseDto;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseSelectDto;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
@@ -31,6 +32,11 @@ public interface EhsdPurchaseService extends BaseService<EhsdPurchase> {
     EhsdPurchaseVo detail(Long id);
 
     /**
+     * 尔泓采购付款明细
+     */
+    PayVo payDetail(Long id);
+
+    /**
      * ehsd采购表新增
      */
     void add(EhsdPurchaseDto ehsdPurchaseDto);

+ 86 - 2
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java

@@ -1,8 +1,10 @@
 package com.fjhx.sale.service.purchase.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -14,14 +16,20 @@ import com.fjhx.common.entity.documentary.bo.DocumentaryData;
 import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
+import com.fjhx.flow.entity.flow.po.FlowExample;
 import com.fjhx.flow.service.flow.FlowExampleService;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.purchase.entity.invoice.po.InvoiceDetails;
 import com.fjhx.purchase.entity.invoice.vo.InvoiceDetailsVo;
+import com.fjhx.purchase.entity.pay.po.Pay;
+import com.fjhx.purchase.entity.pay.po.PayDetail;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
+import com.fjhx.purchase.entity.pay.vo.PayVo;
 import com.fjhx.purchase.entity.purchase.bo.PurchaseDocumentaryBo;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
 import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
 import com.fjhx.purchase.service.pay.PayDetailService;
+import com.fjhx.purchase.service.pay.PayService;
 import com.fjhx.sale.entity.pack.po.PackDetail;
 import com.fjhx.sale.entity.pack.po.PackDetailProduct;
 import com.fjhx.sale.entity.pack.vo.PackDetailProductVo;
@@ -52,6 +60,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -76,6 +85,10 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
     @Autowired
     private SupplierInfoService supplierInfoService;
     @Autowired
+    private PayService payService;
+    @Autowired
+    private PayDetailService payDetailService;
+    @Autowired
     private CorporationService corporationService;
     @Autowired
     private FlowExampleService flowExampleService;
@@ -84,13 +97,13 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
     @Autowired
     private EhsdPurchaseArrivalService ehsdPurchaseArrivalService;
     @Autowired
+    private EhsdPurchaseService ehsdPurchaseService;
+    @Autowired
     private ProductInfoService productInfoService;
     @Autowired
     private EhsdPurchaseProductMountingsService ehsdPurchaseProductMountingsService;
     @Autowired
     private InvoiceDetailsService invoiceDetailsService;
-    @Autowired
-    private PayDetailService payDetailService;
 
     /**
      * 分页
@@ -229,6 +242,77 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
         return result;
     }
 
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    @Override
+    public PayVo payDetail(Long id) {
+        Pay pay = payService.getById(id);
+        if (pay == null) {
+            throw new ServiceException("没有找到采购付款记录");
+        }
+
+        PayVo result = BeanUtil.toBean(pay, PayVo.class);
+
+        // 赋值供应商名称
+        SupplierInfo supplierInfo = supplierInfoService.getById(pay.getSupplyId());
+        result.setSupplyName(supplierInfo.getName());
+
+        // 赋值采购付款明细
+        List<PayDetail> payDetailList = payDetailService.list(q -> q.eq(PayDetail::getPayId, id));
+        List<PayDetailVo> payDetailVoList = BeanUtil.copyToList(payDetailList, PayDetailVo.class);
+        result.setPayDetailVoList(payDetailVoList);
+
+        if (payDetailVoList.size() == 0) {
+            return result;
+        }
+
+        // 赋值采购付款明细采购合同编号、采购合同金额
+        ehsdPurchaseService.attributeAssign(payDetailVoList, PayDetail::getPurchaseId, (item, purchase) -> {
+            item.setPurchaseCode(purchase.getCode());
+            item.setPurchaseAmount(purchase.getAmount());
+        });
+
+        // 赋值采购付款明细已收发票金额
+        List<Long> purchaseIdList = payDetailVoList.stream()
+                .map(PayDetail::getPurchaseId)
+                .filter(Objects::nonNull)
+                .distinct()
+                .collect(Collectors.toList());
+
+        if (purchaseIdList.size() == 0) {
+            return result;
+        }
+
+        //赋值已付款金额
+        Map<Long, List<PayDetail>> payDetailMap = payDetailService.mapKGroup(PayDetail::getPurchaseId, q -> q.in(PayDetail::getPurchaseId, purchaseIdList));
+        for (PayDetailVo payDetail : payDetailVoList) {
+            List<PayDetail> payDetail1 = payDetailMap.get(payDetail.getPurchaseId());
+            BigDecimal sumMoney = payDetail1.stream().map(PayDetail::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+            payDetail.setSumMoney(sumMoney);
+        }
+
+        List<InvoiceDetails> list = invoiceDetailsService.list(q -> q.in(InvoiceDetails::getPurchaseId, purchaseIdList));
+        Map<Long, BigDecimal> invoiceAmountMap = list.stream().collect(Collectors.toMap(
+                InvoiceDetails::getPurchaseId,
+                InvoiceDetails::getMoney,
+                BigDecimal::add
+        ));
+        payDetailVoList.forEach(item -> item.setInvoiceAmount(invoiceAmountMap.getOrDefault(item.getPurchaseId(), BigDecimal.ZERO)));
+
+        //赋值流程ID
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        FlowExample flowExample = flowExampleService.getOne(Wrappers.<FlowExample>query().lambda().eq(FlowExample::getBusinessId, id));
+        // 赋值流程id
+        if(ObjectUtil.isNotEmpty(flowExample)) {
+            result.setFlowExampleId(flowExample.getId());
+        }
+
+        return result;
+    }
+
     @Override
     public void add(EhsdPurchaseDto ehsdPurchaseDto) {
         this.save(ehsdPurchaseDto);

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

@@ -124,6 +124,7 @@ public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> impleme
     public Page<SampleVo> getPage(SampleSelectDto dto) {
         IWrapper<Sample> wrapper = getWrapper();
         wrapper.orderByDesc("t1", Sample::getCreateTime);
+        wrapper.ne("t1",Sample::getIsShow,1);
         wrapper.between("t1", Sample::getStatus, FlowStatusEnum1.DRAFT.getKey(), FlowStatusEnum1.CANCELLATION.getKey() - 1);
         if (StringUtils.isNotEmpty(dto.getStatus())) {
             wrapper.eq("t1", Sample::getStatus, dto.getStatus());