Переглянути джерело

Merge remote-tracking branch 'origin/master'

1018653686@qq.com 1 рік тому
батько
коміт
2d5a405bf9
22 змінених файлів з 278 додано та 191 видалено
  1. 2 0
      hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRunningWaterSelectDto.java
  2. 5 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRunningWater.java
  3. 7 3
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountDeptRunningWaterServiceImpl.java
  4. 3 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java
  5. 17 0
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java
  6. 5 0
      hx-admin/pom.xml
  7. 0 2
      hx-jushuitan/pom.xml
  8. 1 6
      hx-jushuitan/src/main/java/com/fjhx/jushuitan/initializers/JstInitializer.java
  9. 9 0
      hx-mes/src/main/java/com/fjhx/mes/entity/material/vo/MaterialPreparationVo.java
  10. 9 6
      hx-mes/src/main/resources/mapper/material/MaterialPreparationMapper.xml
  11. 2 0
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java
  12. 7 3
      hx-purchase/src/main/java/com/fjhx/purchase/service/refund/impl/RefundServiceImpl.java
  13. 13 9
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java
  14. 5 0
      hx-sale/src/main/java/com/fjhx/sale/entity/purchase/dto/EhsdPurchaseSelectDto.java
  15. 2 22
      hx-sale/src/main/java/com/fjhx/sale/flow/ClaimDelFlow.java
  16. 0 70
      hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java
  17. 6 0
      hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductBomMapper.java
  18. 2 0
      hx-sale/src/main/java/com/fjhx/sale/service/claim/impl/ClaimServiceImpl.java
  19. 138 23
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java
  20. 30 47
      hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java
  21. 9 0
      hx-sale/src/main/resources/mapper/contract/ContractProductBomMapper.xml
  22. 6 0
      pom.xml

+ 2 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRunningWaterSelectDto.java

@@ -89,4 +89,6 @@ public class AccountRunningWaterSelectDto extends BaseSelectDto {
      * 是否汇算
      */
     private Integer isSettleAccounts;
+
+    private Long companyId;
 }

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRunningWater.java

@@ -115,4 +115,9 @@ public class AccountRunningWater extends BasePo {
      */
     private BigDecimal amountCny;
 
+    /**
+     * 归属公司id
+     */
+    private Long companyId;
+
 }

+ 7 - 3
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountDeptRunningWaterServiceImpl.java

@@ -20,6 +20,7 @@ import com.fjhx.account.service.account.AccountDeptRunningWaterService;
 import com.fjhx.common.constant.SourceConstant;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.service.ISysDeptService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -179,8 +180,9 @@ public class AccountDeptRunningWaterServiceImpl extends ServiceImpl<AccountDeptR
                    accountRunningWaterVo.setIncomeAmount(new BigDecimal(0));
                    accountRunningWaterVo.setExpenditureAmount(new BigDecimal(0));
                    accountRunningWaterVo.setBalanceAmount(new BigDecimal(0));
-                   accountRunningWaterVo.setTime(month);
-                   accountRunningWaterVoList.add(accountRunningWaterVo);
+                    accountRunningWaterVo.setTime(month);
+                    accountRunningWaterVo.setCompanyId(SecurityUtils.getCompanyId());
+                    accountRunningWaterVoList.add(accountRunningWaterVo);
                 }
             }else {
                 Map<String, List<AccountRunningWaterVo>> waterMap = accountRunningWaterVoList.stream()
@@ -188,12 +190,14 @@ public class AccountDeptRunningWaterServiceImpl extends ServiceImpl<AccountDeptR
 
                 for (String month : months) {//判断这个月份中是否有这个数据,如果没有则赋值为0
                     List<AccountRunningWaterVo> accountRunningWaterVos1 = waterMap.get(month);
-                    if (ObjectUtil.isEmpty(accountRunningWaterVos1)){
+                    if (ObjectUtil.isEmpty(accountRunningWaterVos1)) {
                         AccountRunningWaterVo accountRunningWaterVo = new AccountRunningWaterVo();
                         accountRunningWaterVo.setIncomeAmount(new BigDecimal(0));
                         accountRunningWaterVo.setExpenditureAmount(new BigDecimal(0));
                         accountRunningWaterVo.setBalanceAmount(new BigDecimal(0));
                         accountRunningWaterVo.setTime(month);
+                        accountRunningWaterVo.setCompanyId(SecurityUtils.getCompanyId());
+
                         accountRunningWaterVoList.add(accountRunningWaterVo);
                     }
                 }

+ 3 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java

@@ -23,6 +23,7 @@ import com.fjhx.file.utils.ObsFileUtil;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -255,6 +256,8 @@ public class AccountPaymentServiceImpl extends ServiceImpl<AccountPaymentMapper,
     private void addAccountRunningWater(AccountPaymentDto accountPaymentDto, AccountPaymentRecords accountPaymentRecords) {
 
         AccountRunningWater accountRunningWater = new AccountRunningWater();
+        accountRunningWater.setCompanyId(SecurityUtils.getCompanyId());
+
         accountRunningWater.setAccountManagementId(accountPaymentRecords.getAccountManagementId());
         //打款的状态都是支出
         accountRunningWater.setStatus("20");

+ 17 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java

@@ -32,6 +32,7 @@ import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
 import com.fjhx.tenant.service.dict.DictTenantDataService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -126,8 +127,17 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
             }
         }
 
+        //权限过滤:生产备料-子公司看自己的,总公司看全部
+        Long companyId = SecurityUtils.getCompanyId();
+        if (!Objects.equals(companyId, 100L)) {
+            wrapper.eq("arw.company_id", companyId);
+        } else {
+            wrapper.eq("arw.company_id", dto.getCompanyId());
+        }
+
         return wrapper;
     }
+
     @Override
     public Page<AccountRunningWaterVo> getPage(AccountRunningWaterSelectDto dto) {
         QueryWrapper<Object> wrapper = getPageWrapper(dto);
@@ -435,6 +445,8 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
         //如果手续费不为0生成手续费
         if (ObjectUtil.isNotEmpty(dto.getCommissionAmount()) && dto.getCommissionAmount().compareTo(BigDecimal.ZERO) != 0) {
             AccountRunningWater commissionAccountRunningWater = new AccountRunningWater();
+            commissionAccountRunningWater.setCompanyId(SecurityUtils.getCompanyId());
+
             commissionAccountRunningWater.setStatus("20");
             commissionAccountRunningWater.setType("50");//内部转账
             commissionAccountRunningWater.setRemarks(dto.getRemarks());
@@ -452,6 +464,8 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
 
         //生成收入流水
         AccountRunningWater inAccountRunningWater = new AccountRunningWater();
+        inAccountRunningWater.setCompanyId(SecurityUtils.getCompanyId());
+
         inAccountRunningWater.setStatus("10");
         inAccountRunningWater.setType("50");//内部转账
         inAccountRunningWater.setRemarks(dto.getRemarks());
@@ -548,6 +562,9 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
 
         //只修改以下字段
         AccountRunningWater newAccountRunningWater = new AccountRunningWater();
+
+        newAccountRunningWater.setCompanyId(SecurityUtils.getCompanyId());
+
         newAccountRunningWater.setId(oldAccountRunningWater.getId());
         newAccountRunningWater.setRate(rate);
         newAccountRunningWater.setAmountCny(amountCny);

+ 5 - 0
hx-admin/pom.xml

@@ -70,6 +70,11 @@
         </dependency>
 
         <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-iot</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>

+ 0 - 2
hx-jushuitan/pom.xml

@@ -22,8 +22,6 @@
             <groupId>com.jst</groupId>
             <artifactId>jst-api</artifactId>
             <version>1.0.0</version>
-            <scope>system</scope>
-            <systemPath>${project.basedir}/src/main/resources/lib/jst-api-1.0.0.jar</systemPath>
         </dependency>
     </dependencies>
 

+ 1 - 6
hx-jushuitan/src/main/java/com/fjhx/jushuitan/initializers/JstInitializer.java

@@ -1,15 +1,10 @@
 package com.fjhx.jushuitan.initializers;
 
-import com.fjhx.jushuitan.constants.JstConstant;
 import com.fjhx.jushuitan.service.api.JstApiService;
-import com.jushuitan.api.*;
-import com.jushuitan.api.exception.ApiException;
-import com.jushuitan.api.util.AuthUtil;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
-import java.io.IOException;
 
 @Component
 public class JstInitializer {
@@ -18,7 +13,7 @@ public class JstInitializer {
 
     @PostConstruct
     public void dataInitializer() {
-        jstApiService.startOrder();
+//        jstApiService.startOrder();
     }
 
 

+ 9 - 0
hx-mes/src/main/java/com/fjhx/mes/entity/material/vo/MaterialPreparationVo.java

@@ -25,4 +25,13 @@ public class MaterialPreparationVo extends MaterialPreparation {
 
     private String companyName;
 
+    /**
+     * 生产订单号
+     */
+    private String orderCode;
+    /**
+     * 交期
+     */
+    private String deliveryPeriod;
+
 }

+ 9 - 6
hx-mes/src/main/resources/mapper/material/MaterialPreparationMapper.xml

@@ -9,7 +9,7 @@
     </select>
 
     <sql id="pageOrList">
-        select mp.id,
+        SELECT mp.id,
                mp.contract_id,
                mp.contract_detail_id,
                mp.production_order_id,
@@ -18,16 +18,19 @@
                mp.quantity,
                mp.preparation_deadline,
                mp.production_time,
-               mp.status,
+               mp.`status`,
                mp.create_user,
                mp.create_time,
                mp.update_user,
                mp.update_time,
                mp.company_id,
-               pi.`name`      as materialName,
-               pi.custom_code as materialCode
-        from material_preparation mp
-                 left join product_info pi on mp.material_id = pi.id
+               po.`code`      AS orderCode,
+               po.delivery_period,
+               pi.`name`      AS materialName,
+               pi.custom_code AS materialCode
+        FROM material_preparation mp
+                 LEFT JOIN production_order po ON mp.production_order_id = po.id
+                 LEFT JOIN product_info pi ON mp.material_id = pi.id
             ${ew.customSqlSegment}
     </sql>
 

+ 2 - 0
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

@@ -76,6 +76,8 @@ public class SubscribeFlow extends FlowDelegate {
             subscribeDetailService.saveBatch(subscribeDetails);
         }
 
+        submitData.put("code", subscribe.getCode());
+
         return subscribe.getId();
     }
 

+ 7 - 3
hx-purchase/src/main/java/com/fjhx/purchase/service/refund/impl/RefundServiceImpl.java

@@ -20,6 +20,7 @@ import com.fjhx.purchase.service.refund.RefundService;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
@@ -146,16 +147,19 @@ public class RefundServiceImpl extends ServiceImpl<RefundMapper, Refund> impleme
         BigDecimal newAmount = refundDto.getReceiptAmount();
         List<AccountRunningWater> accountRunningWaters = accountRunningWaterService.list(Wrappers.<AccountRunningWater>query().lambda().select(AccountRunningWater::getAmount).eq(AccountRunningWater::getBusinessId,refund.getId()));
         BigDecimal sumAmount = accountRunningWaters.stream().map(AccountRunningWater::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-        if(ObjectUtils.isNotEmpty(sumAmount)){
-            if((sumAmount.add(newAmount)).compareTo(refund.getAmount())>-1){//已退款
+        if (ObjectUtils.isNotEmpty(sumAmount)) {
+            if ((sumAmount.add(newAmount)).compareTo(refund.getAmount()) > -1) {//已退款
                 refund.setRefundStatus(RefundEnum.RE_20.getKey());
-            }else{//部分退款
+            } else {//部分退款
                 refund.setRefundStatus(RefundEnum.RE_10.getKey());
             }
         }
         this.updateById(refund);
         //添加一条资金流水
         AccountRunningWater accountRunningWater = new AccountRunningWater();
+
+        accountRunningWater.setCompanyId(SecurityUtils.getCompanyId());
+
         accountRunningWater.setAccountManagementId(refundDto.getReceiptAccountManagementId());
         accountRunningWater.setStatus("10");// 收入
         accountRunningWater.setBusinessId(refund.getId());

+ 13 - 9
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -9,6 +9,7 @@ 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.common.constant.SourceConstant;
+import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
@@ -114,18 +115,21 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
 		}
 
 		//按类型倒序 先显示合同数据 再显示申购数据
-        wrapper.orderByDesc("t2", SubscribeDetail::getDataType);
-        wrapper.orderByDesc("t2", SubscribeDetail::getCreateTime);
+		wrapper.orderByDesc("t2", SubscribeDetail::getDataType);
+		wrapper.orderByDesc("t2", SubscribeDetail::getCreateTime);
 
-        Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
-        List<SubscribeDetailVo> records = page.getRecords();
+		//过滤作废的数据
+		wrapper.ne("t2", SubscribeDetail::getStatus, FlowStatusEnum1.CANCELLATION.getKey());
 
-        if (records.size() == 0) {
-            return page;
-        }
+		Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+		List<SubscribeDetailVo> records = page.getRecords();
+
+		if (records.size() == 0) {
+			return page;
+		}
 
-        //获取生产公司信息
-        List<Long> companyIds = records.stream().map(SubscribeDetail::getCompanyId).collect(Collectors.toList());
+		//获取生产公司信息
+		List<Long> companyIds = records.stream().map(SubscribeDetail::getCompanyId).collect(Collectors.toList());
         Map<Long, String> companyNameMap = DeptUstil.getDeptNameMap(companyIds);
 
         // 赋值产品信息

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/purchase/dto/EhsdPurchaseSelectDto.java

@@ -32,4 +32,9 @@ public class EhsdPurchaseSelectDto extends BaseSelectDto {
      * 采购状态
      */
     private Integer status;
+
+    /**
+     * 归属公司
+     */
+    private Long companyId;
 }

+ 2 - 22
hx-sale/src/main/java/com/fjhx/sale/flow/ClaimDelFlow.java

@@ -1,46 +1,24 @@
 package com.fjhx.sale.flow;
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.account.entity.account.po.AccountRunningWater;
 import com.fjhx.account.service.account.AccountRunningWaterService;
-import com.fjhx.area.utils.CustomizeAreaUtil;
-import com.fjhx.common.constant.SourceConstant;
-import com.fjhx.common.enums.CodingRuleEnum;
-import com.fjhx.common.enums.FlowStatusEnum1;
-import com.fjhx.common.service.coding.CodingRuleService;
-import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.enums.FlowStatusEnum;
 import com.fjhx.sale.entity.claim.po.Claim;
 import com.fjhx.sale.entity.claim.po.ClaimContract;
-import com.fjhx.sale.entity.contract.dto.ContractDto;
-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.service.claim.ClaimContractService;
 import com.fjhx.sale.service.claim.ClaimService;
-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.ruoyi.common.annotation.LogicIgnore;
-import com.ruoyi.common.core.domain.BasePo;
-import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -101,6 +79,8 @@ public class ClaimDelFlow extends FlowDelegate {
         claimContractService.remove(Wrappers.<ClaimContract>query().lambda().in(ClaimContract::getClaimId, claimIds));
         //更新流水数据为认领状态---已认领金额还原
         AccountRunningWater water = new AccountRunningWater();
+        water.setCompanyId(SecurityUtils.getCompanyId());
+
         water.setId(businessId);
         water.setIsClaim(0);//未认领状态
         water.setClaimAmount(BigDecimal.ZERO);

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

@@ -7,21 +7,13 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fjhx.area.utils.CustomizeAreaUtil;
-import com.fjhx.common.entity.InOutBo;
 import com.fjhx.common.enums.CodingRuleEnum;
 import com.fjhx.common.enums.FlowStatusEnum1;
-import com.fjhx.common.enums.InOutType;
 import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.enums.FlowStatusEnum;
-import com.fjhx.item.enums.ProductAvailableRecordType;
-import com.fjhx.item.service.product.ProductInfoService;
-import com.fjhx.item.service.product.ProductStockInfoService;
-import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
-import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
-import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractProductDto;
 import com.fjhx.sale.entity.contract.po.Contract;
@@ -41,12 +33,9 @@ import com.ruoyi.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 外销合同流程
@@ -67,14 +56,6 @@ public class ContractFlow extends FlowDelegate {
     private ContractProjectService contractProjectService;
     @Autowired
     private ContractProductBomService contractProductBomService;
-    @Autowired
-    private SubscribeDetailService subscribeDetailService;
-    @Autowired
-    private SubscribeDetailMapper subscribeDetailMapper;
-    @Autowired
-    private ProductStockInfoService productStockInfoService;
-    @Autowired
-    private ProductInfoService productInfoService;
 
     @Override
     public String getFlowKey() {
@@ -236,7 +217,6 @@ public class ContractFlow extends FlowDelegate {
     public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
         super.cancellation(flowId, businessId, flowStatus);
 
-        Contract contract = contractService.getById(businessId);
 
         contractService.update(q -> q
                 .eq(Contract::getId, businessId)
@@ -245,57 +225,7 @@ public class ContractFlow extends FlowDelegate {
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
 
-        contractCancelEditAvailableQuantity(contract);
-
-    }
 
-    /**
-     * 合同作废修改可用库存
-     */
-    private void contractCancelEditAvailableQuantity(Contract contract) {
-        Long businessId = contract.getId();
-        //可用库存=可用库存-((待采购量-已采购量)-合同量)
-        List<SubscribeDetail> subscribeDetailList = subscribeDetailService.list(q -> q.eq(SubscribeDetail::getContractId, businessId));
-
-        //获取物料id
-        List<Long> materialIds = subscribeDetailList.stream().map(SubscribeDetail::getProductId).collect(Collectors.toList());
-
-        List<ContractProductBom> contractProductBomList = contractProductBomService.list(q -> q
-                .eq(ContractProductBom::getContractId, businessId)
-                .in(ContractProductBom::getMaterialId, materialIds)
-        );
-        Map<Long, List<ContractProductBom>> contractProductBomMap = contractProductBomList.stream().collect(Collectors.groupingBy(ContractProductBom::getMaterialId));
-        //获取已采购数量
-        List<Long> sdIds = subscribeDetailList.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
-        List<SubscribeDetail> purchaseCountByIds = subscribeDetailMapper.getPurchaseCountByIds(sdIds);
-        Map<Long, BigDecimal> purchaseCountMap = purchaseCountByIds.stream().collect(Collectors.toMap(SubscribeDetail::getId, SubscribeDetail::getCount));
-
-        List<InOutBo> inOutBoList = new ArrayList<>();
-
-        for (SubscribeDetail subscribeDetail : subscribeDetailList) {
-            Long materialId = subscribeDetail.getProductId();
-            //作废待采购
-            subscribeDetail.setStatus(88);
-            BigDecimal purchaseCount = purchaseCountMap.getOrDefault(subscribeDetail.getId(), BigDecimal.ZERO);
-            //(待采购量-已采购量)
-            BigDecimal subtract = subscribeDetail.getCount().subtract(purchaseCount);
-            //获取合同量
-            List<ContractProductBom> contractProductBomList1 = contractProductBomMap.get(materialId);
-            BigDecimal reduce = contractProductBomList1.stream().map(ContractProductBom::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
-            //((待采购量-已采购量)-合同量)
-            InOutBo inOutBo = new InOutBo();
-            inOutBo.setProductId(materialId);
-            inOutBo.setQuantity(subtract.subtract(reduce));
-            inOutBoList.add(inOutBo);
-        }
-
-        //修改可用库存可用库存=可用库存-((待采购量-已采购量)-合同量)
-        productInfoService.editAvailableQuantity(
-                inOutBoList,
-                InOutType.OUT,
-                businessId,
-                ProductAvailableRecordType.SALE_CANCEL, contract.getCompanyId()
-        );
     }
 
 }

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductBomMapper.java

@@ -2,6 +2,9 @@ package com.fjhx.sale.mapper.contract;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fjhx.sale.entity.contract.po.ContractProductBom;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
 
 
 /**
@@ -12,6 +15,9 @@ import com.fjhx.sale.entity.contract.po.ContractProductBom;
  * @author
  * @since 2024-01-17
  */
+@Mapper
 public interface ContractProductBomMapper extends BaseMapper<ContractProductBom> {
 
+    List<ContractProductBom> getContractProductBomQuantitySum(Long contractId);
+
 }

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/service/claim/impl/ClaimServiceImpl.java

@@ -134,6 +134,8 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
         claimContractService.remove(Wrappers.<ClaimContract>query().lambda().in(ClaimContract::getClaimId, claimIds));
         //更新流水数据为认领状态---已认领金额还原
         AccountRunningWater water = new AccountRunningWater();
+        water.setCompanyId(SecurityUtils.getCompanyId());
+
         water.setId(id);
         water.setIsClaim(0);//未认领状态
         water.setClaimAmount(BigDecimal.ZERO);

+ 138 - 23
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -23,10 +23,12 @@ import com.fjhx.account.service.tax.TaxRefundDetailsService;
 import com.fjhx.area.service.SetCustomizeAreaId;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.entity.InOutBo;
 import com.fjhx.common.entity.contract.po.ContractTemplate;
 import com.fjhx.common.entity.corporation.po.Corporation;
 import com.fjhx.common.entity.documentary.bo.DocumentaryData;
 import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.common.enums.InOutType;
 import com.fjhx.common.enums.PushBusinessTypeEnum;
 import com.fjhx.common.service.contract.ContractTemplateService;
 import com.fjhx.common.service.corporation.CorporationService;
@@ -39,22 +41,24 @@ import com.fjhx.file.entity.FileInfo;
 import com.fjhx.file.entity.FileInfoVo;
 import com.fjhx.file.service.FileInfoService;
 import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.flow.entity.flow.po.FlowExample;
+import com.fjhx.flow.enums.FlowStatusEnum;
 import com.fjhx.flow.service.flow.FlowExampleService;
 import com.fjhx.item.entity.product.bo.ProductAnalysisBo;
 import com.fjhx.item.entity.product.dto.ProductInfoDto;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
 import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.enums.ProductAvailableRecordType;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
 import com.fjhx.purchase.entity.pay.po.Pay;
-import com.fjhx.purchase.entity.purchase.po.Purchase;
-import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
+import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.pay.PayDetailService;
-import com.fjhx.purchase.service.purchase.PurchaseDetailService;
-import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.service.quality.QualityDetailService;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.sale.entity.claim.po.ClaimContract;
 import com.fjhx.sale.entity.contract.bo.ContractCurrencyRate;
 import com.fjhx.sale.entity.contract.bo.ContractDocumentaryBo;
@@ -69,6 +73,7 @@ import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
 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.mapper.contract.ContractProductBomMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.*;
 import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
@@ -156,9 +161,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     private EhsdPurchaseService ehsdPurchaseService;
 
     @Autowired
-    private PurchaseDetailService purchaseDetailService;
-
-    @Autowired
     private ClaimContractService claimContractService;
 
     @Autowired
@@ -174,9 +176,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     private ContractDocumentaryService contractDocumentaryService;
 
     @Autowired
-    private PurchaseService purchaseService;
-
-    @Autowired
     private ArrivalDetailService arrivalDetailService;
 
     @Autowired
@@ -208,6 +207,13 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Autowired
     private ContractProductBomService contractProductBomService;
 
+    @Autowired
+    private SubscribeDetailService subscribeDetailService;
+    @Autowired
+    private SubscribeDetailMapper subscribeDetailMapper;
+    @Autowired
+    private ContractProductBomMapper contractProductBomMapper;
+
     /**
      * 合同和样品单 下拉分页
      */
@@ -380,6 +386,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
         //是否结清过滤
         wrapper.eq("t1", Contract::getIsSettled, dto.getIsSettled());
+
+        //过滤作废的数据
+        wrapper.ne("t1", Contract::getStatus, FlowStatusEnum1.CANCELLATION.getKey());
     }
 
     /**
@@ -1257,6 +1266,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         this.updateById(contractDto);
     }
 
+    @DSTransactional
     @Override
     public void cancellation(ContractDto contractDto) {
         contractService.update(q -> q
@@ -1265,6 +1275,112 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 .set(BasePo::getUpdateTime, new Date())
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
+
+        Contract contract = getById(contractDto.getId());
+        Assert.notEmpty(contract, "查询不到合同信息");
+
+        contractCancelEditAvailableQuantity(contract);
+    }
+
+    /**
+     * 合同作废修改可用库存 //可用库存=可用库存-((待采购量-已采购量)-合同量)
+     */
+    private void contractCancelEditAvailableQuantity(Contract contract) {
+        Long businessId = contract.getId();
+
+        //获取待采购量Map
+        List<SubscribeDetail> subscribeDetailList = subscribeDetailService.list(q -> q.eq(SubscribeDetail::getContractId, businessId));
+        Map<Long, List<SubscribeDetail>> subscribeDetailMap = subscribeDetailList.stream().collect(Collectors.groupingBy(SubscribeDetail::getProductId));
+
+        //获取已采购数量Map
+        List<Long> sdIds = subscribeDetailList.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
+        List<SubscribeDetail> purchaseCountByIds = new ArrayList<>();
+        if (ObjectUtil.isNotEmpty(sdIds)) {
+            purchaseCountByIds = subscribeDetailMapper.getPurchaseCountByIds(sdIds);
+
+            //存在已采购数据禁止作废
+            List<EhsdPurchase> ehsdPurchaseList = ehsdPurchaseService.list(q -> q.eq(EhsdPurchase::getDataResourceId, businessId).eq(EhsdPurchase::getStatus, 30));
+            if (ObjectUtil.isNotEmpty(ehsdPurchaseList)) {
+                String codes = ehsdPurchaseList.stream().map(EhsdPurchase::getCode).collect(Collectors.joining(","));
+                throw new ServiceException("该订单存在审批通过的采购合同,请先作废采购合同,采购合同号:" + codes);
+            }
+        }
+        Map<Long, BigDecimal> purchaseCountMap = purchaseCountByIds.stream().collect(Collectors.toMap(SubscribeDetail::getId, SubscribeDetail::getCount));
+
+        List<InOutBo> inOutBoList = new ArrayList<>();
+
+        //获取产品BOM列表
+        List<ContractProductBom> contractProductBomList = contractProductBomMapper.getContractProductBomQuantitySum(businessId);
+        for (ContractProductBom contractProductBom : contractProductBomList) {
+            Long materialId = contractProductBom.getMaterialId();
+            //获取待采购量
+            List<SubscribeDetail> subscribeDetailList1 = subscribeDetailMap.getOrDefault(materialId, new ArrayList<>());
+            BigDecimal subscribeDetailCount = subscribeDetailList1.stream().map(SubscribeDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            //获取已采购量
+            BigDecimal purchaseCount = BigDecimal.ZERO;
+            for (SubscribeDetail subscribeDetail : subscribeDetailList1) {
+                purchaseCount.add(purchaseCountMap.getOrDefault(subscribeDetail.getProductId(), BigDecimal.ZERO));
+            }
+            //获取合同量
+            //可用库存=可用库存-((待采购量-已采购量)-合同量)
+            BigDecimal subtract = subscribeDetailCount.subtract(purchaseCount);
+            BigDecimal subtract1 = subtract.subtract(contractProductBom.getQuantity());
+
+            InOutBo inOutBo = new InOutBo();
+            inOutBo.setProductId(materialId);
+            inOutBo.setQuantity(subtract1);
+            inOutBoList.add(inOutBo);
+        }
+
+        //修改申购明细状态
+        if (ObjectUtil.isNotEmpty(sdIds)) {
+            subscribeDetailService.update(q -> q
+                    .in(SubscribeDetail::getId, sdIds)
+                    .set(SubscribeDetail::getStatus, 88)
+            );
+        }
+
+        //作废审批中的采购合同
+        ehsdPurchaseService.update(q -> q
+                .eq(EhsdPurchase::getId, businessId)
+                .eq(EhsdPurchase::getStatus, 10)
+                .set(EhsdPurchase::getStatus, FlowStatusEnum1.CANCELLATION.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+        List<EhsdPurchase> purchaseList = ehsdPurchaseService.list(q -> q
+                .eq(EhsdPurchase::getDataResourceId, businessId)
+                .eq(EhsdPurchase::getStatus, 10)
+        );
+        List<Long> flowIds = purchaseList.stream().map(EhsdPurchase::getFlowId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(flowIds)) {
+            //修改流程审批状态
+            flowExampleService.update(q -> q
+                    .in(FlowExample::getId, flowIds)
+                    .in(FlowExample::getStatus, 0, 1)
+                    .set(FlowExample::getStatus, FlowStatusEnum.CANCELLATION.getKey())
+                    .set(BasePo::getUpdateTime, new Date())
+                    .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+            );
+        }
+
+
+        //修改可用库存可用库存=可用库存-((待采购量-已采购量)-合同量)
+        productInfoService.editAvailableQuantity(
+                inOutBoList,
+                InOutType.OUT,
+                businessId,
+                ProductAvailableRecordType.SALE_CANCEL, contract.getCompanyId()
+        );
+
+        //修改合同审批状态
+        flowExampleService.update(q -> q
+                .eq(FlowExample::getId, contract.getFlowId())
+                .in(FlowExample::getStatus, 0, 1)
+                .set(FlowExample::getStatus, FlowStatusEnum.CANCELLATION.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
     }
 
     @Override
@@ -1277,7 +1393,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         );
     }
 
-
     @Override
     public void delete(Long id) {
         this.removeById(id);
@@ -1674,8 +1789,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         }
 
         // 采购合同
-        List<Purchase> purchaseList = purchaseService.listByIds(purchaseIdList);
-        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(q -> q.in(PurchaseDetail::getPurchaseId, purchaseIdList));
+        List<EhsdPurchase> purchaseList = ehsdPurchaseService.listByIds(purchaseIdList);
+        List<EhsdPurchaseProduct> purchaseDetailList = ehsdPurchaseProductService.list(q -> q.in(EhsdPurchaseProduct::getPurchaseId, purchaseIdList));
 
         // 赋值关联销售合同
         setContractInfo(vo, purchaseList);
@@ -1768,27 +1883,27 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     /**
      * 赋值采购合同数据
      */
-    private void setPurchaseInfo(PayDecisionAidVo vo, List<Purchase> purchaseList, List<PurchaseDetail> purchaseDetailList) {
+    private void setPurchaseInfo(PayDecisionAidVo vo, List<EhsdPurchase> purchaseList, List<EhsdPurchaseProduct> purchaseDetailList) {
 
-        Map<Long, List<PurchaseDetail>> purchaseDetailMap = purchaseDetailList.stream()
-                .collect(Collectors.groupingBy(PurchaseDetail::getPurchaseId));
+        Map<Long, List<EhsdPurchaseProduct>> purchaseDetailMap = purchaseDetailList.stream()
+                .collect(Collectors.groupingBy(EhsdPurchaseProduct::getPurchaseId));
 
         List<PayDecisionAidVo.PurchaseInfo> list = new ArrayList<>();
 
-        for (Purchase purchase : purchaseList) {
-            List<PurchaseDetail> itemList = purchaseDetailMap.get(purchase.getId());
+        for (EhsdPurchase purchase : purchaseList) {
+            List<EhsdPurchaseProduct> itemList = purchaseDetailMap.get(purchase.getId());
 
             if (itemList.size() == 0) {
                 continue;
             }
 
-            for (PurchaseDetail purchaseDetail : itemList) {
+            for (EhsdPurchaseProduct purchaseDetail : itemList) {
                 PayDecisionAidVo.PurchaseInfo purchaseInfo = new PayDecisionAidVo.PurchaseInfo();
                 purchaseInfo.setPurchaseId(purchase.getId());
                 purchaseInfo.setPurchaseCode(purchase.getCode());
                 purchaseInfo.setPurchaseDetailsId(purchaseDetail.getId());
-                purchaseInfo.setProductId(purchaseDetail.getBussinessId());
-                purchaseInfo.setPurchaseQuantity(purchaseDetail.getCount());
+                purchaseInfo.setProductId(purchaseDetail.getProductId());
+                purchaseInfo.setPurchaseQuantity(purchaseDetail.getQuantity());
                 list.add(purchaseInfo);
             }
         }
@@ -1805,11 +1920,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     /**
      * 赋值销售合同数据
      */
-    private void setContractInfo(PayDecisionAidVo vo, List<Purchase> purchaseList) {
+    private void setContractInfo(PayDecisionAidVo vo, List<EhsdPurchase> purchaseList) {
 
         List<Long> contractIdList = purchaseList.stream()
                 .filter(item -> Objects.equals(item.getDataResource(), 1))
-                .map(Purchase::getDataResourceId)
+                .map(EhsdPurchase::getDataResourceId)
                 .filter(Objects::nonNull)
                 .distinct()
                 .collect(Collectors.toList());

+ 30 - 47
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java

@@ -22,6 +22,7 @@ import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.flow.entity.flow.po.FlowExample;
+import com.fjhx.flow.enums.FlowStatusEnum;
 import com.fjhx.flow.service.flow.FlowExampleService;
 import com.fjhx.item.enums.ProductAvailableRecordType;
 import com.fjhx.item.service.product.ProductInfoService;
@@ -62,13 +63,18 @@ import com.fjhx.sale.mapper.purchase.EhsdPurchaseMapper;
 import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.sale.service.pack.PackDetailProductService;
 import com.fjhx.sale.service.pack.PackDetailService;
-import com.fjhx.sale.service.purchase.*;
+import com.fjhx.sale.service.purchase.EhsdPurchaseProductMountingsService;
+import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
+import com.fjhx.sale.service.purchase.EhsdPurchaseProjectService;
+import com.fjhx.sale.service.purchase.EhsdPurchaseService;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.entity.supplier.po.SupplierPrice;
 import com.fjhx.supply.entity.supplier.vo.SupplierPriceVo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.fjhx.supply.service.supplier.SupplierPriceService;
 import com.fjhx.tenant.utils.DeptUstil;
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -119,8 +125,6 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
     @Autowired
     private EhsdPurchaseProjectService ehsdPurchaseProjectService;
     @Autowired
-    private EhsdPurchaseArrivalService ehsdPurchaseArrivalService;
-    @Autowired
     private EhsdPurchaseService ehsdPurchaseService;
     @Autowired
     private ProductInfoService productInfoService;
@@ -142,6 +146,8 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
     private EhsdPurchaseProductService purchaseProductService;
     @Autowired
     private SubscribeDetailMapper subscribeDetailMapper;
+    @Autowired
+    private StockWaitService stockWaitService;
 
     /**
      * 分页
@@ -167,17 +173,19 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
             wrapper.ne(EhsdPurchase::getStatus, FlowStatusEnum1.UPDATE.getKey());
         }
 
-        //不显示 在审批中 但是 有历史合同id的数据
-//        wrapper.not(q -> q
-//                .eq(EhsdPurchase::getStatus, FlowStatusEnum1.UNDER_REVIEW.getKey())
-//                .isNotNull("t1.old_purchase_id")
-//        );
-
-        //权限过滤:采购自己看自己
-        wrapper.eq("t1", EhsdPurchase::getCompanyId, SecurityUtils.getCompanyId());
+        //权限过滤:采购-子公司看自己的,总公司看全部
+        Long companyId = SecurityUtils.getCompanyId();
+        if (!Objects.equals(companyId, 100L)) {
+            wrapper.eq("t1", EhsdPurchase::getCompanyId, companyId);
+        } else {
+            wrapper.eq("t1", EhsdPurchase::getCompanyId, dto.getCompanyId());
+        }
 
         wrapper.orderByDesc("t1", EhsdPurchase::getCreateTime);
 
+        //过滤作废的数据
+        wrapper.ne("t1", EhsdPurchase::getStatus, FlowStatusEnum1.CANCELLATION.getKey());
+
         Page<EhsdPurchaseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<EhsdPurchaseVo> records = page.getRecords();
         if (ObjectUtils.isEmpty(records)) {
@@ -291,42 +299,6 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
                 BigDecimal add = ObjectUtils.isEmpty(ehsdPurchaseProductList1) ? BigDecimal.ZERO : ehsdPurchaseProductList1.stream().map(EhsdPurchaseProduct::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
                 ehsdPurchaseProductVo.setExpendQuantity(count.subtract(add));
             }
-
-
-//            //申购来源
-//            List<EhsdPurchaseProductVo> subscribeSource = ehsdPurchaseProductVos.stream().filter(item -> Objects.equals(item.getDataResource(), 0)).collect(Collectors.toList());
-//            if (ObjectUtils.isNotEmpty(subscribeSource)) {
-//                List<Long> subscribeDetailSourceIds = subscribeSource.stream().map(EhsdPurchaseProductVo::getSubscribeDetailId).distinct().collect(Collectors.toList());
-//                Map<Long, SubscribeDetail> contractProductMap = subscribeDetailService.mapKEntity(SubscribeDetail::getId, q -> q.in(SubscribeDetail::getId, subscribeDetailSourceIds));
-//                for (EhsdPurchaseProductVo ehsdPurchaseProductVo : subscribeSource) {
-//                    SubscribeDetail subscribeDetail = contractProductMap.get(ehsdPurchaseProductVo.getSubscribeDetailId());
-//                    BigDecimal count = subscribeDetail.getCount();
-//                    //获取已采购数量
-//                    List<EhsdPurchaseProduct> ehsdPurchaseProductList1 = ehsdPurchaseProductService.list(q -> q.eq(EhsdPurchaseProduct::getDataResource, 0).eq(EhsdPurchaseProduct::getSubscribeDetailId, subscribeDetail.getId()));
-//                    BigDecimal add = ObjectUtils.isEmpty(ehsdPurchaseProductList1) ? BigDecimal.ZERO : ehsdPurchaseProductList1.stream().map(EhsdPurchaseProduct::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
-//                    ehsdPurchaseProductVo.setExpendQuantity(count.subtract(add));
-//                }
-//            }
-//            //合同来源
-//            List<EhsdPurchaseProductVo> contractSource = ehsdPurchaseProductVos.stream().filter(item -> Objects.equals(item.getDataResource(), 1)).collect(Collectors.toList());
-//            if (ObjectUtils.isNotEmpty(contractSource)) {
-//                List<Long> contractSourceIds = contractSource.stream().map(EhsdPurchaseProductVo::getDataResourceId).distinct().collect(Collectors.toList());
-//                Map<Long, ContractProduct> contractProductMap = contractProductService.mapKEntity(ContractProduct::getId, q -> q.in(ContractProduct::getId, contractSourceIds));
-//                for (EhsdPurchaseProductVo ehsdPurchaseProductVo : contractSource) {
-//                    ContractProduct stringObjectMap = contractProductMap.get(ehsdPurchaseProductVo.getDataResourceId());
-//                    ehsdPurchaseProductVo.setExpendQuantity(stringObjectMap.getExpendQuantity());
-//                }
-//            }
-//            //样品单来源
-//            List<EhsdPurchaseProductVo> sampleSource = ehsdPurchaseProductVos.stream().filter(item -> Objects.equals(item.getDataResource(), 2)).collect(Collectors.toList());
-//            if (ObjectUtils.isNotEmpty(sampleSource)) {
-//                List<Long> sampleSourceIds = sampleSource.stream().map(EhsdPurchaseProductVo::getDataResourceId).distinct().collect(Collectors.toList());
-//                Map<Long, SampleProduct> sampleProductMap = sampleProductService.mapKEntity(SampleProduct::getId, q -> q.in(SampleProduct::getId, sampleSourceIds));
-//                for (EhsdPurchaseProductVo ehsdPurchaseProductVo : sampleSource) {
-//                    SampleProduct stringObjectMap = sampleProductMap.get(ehsdPurchaseProductVo.getDataResourceId());
-//                    ehsdPurchaseProductVo.setExpendQuantity(stringObjectMap.getExpendQuantity());
-//                }
-//            }
         }
 
         //赋值产品信息
@@ -505,6 +477,17 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
             }
         }
         productInfoService.editAvailableQuantity(inOutBoList, InOutType.OUT, id, ProductAvailableRecordType.PURCHASE_CANCEL, purchase.getCompanyId());
+        //同时删除待入库数据
+        stockWaitService.remove(q -> q.eq(StockWait::getPurchaseId, purchase.getId()));
+        //修改流程审批状态
+        flowExampleService.update(q -> q
+                .eq(FlowExample::getId, purchase.getFlowId())
+                .in(FlowExample::getStatus, 0, 1)
+                .set(FlowExample::getStatus, FlowStatusEnum.CANCELLATION.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+
 
         //修改申购明细状态
         updateSubscribeStatus(id);

+ 9 - 0
hx-sale/src/main/resources/mapper/contract/ContractProductBomMapper.xml

@@ -1,4 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.sale.mapper.contract.ContractProductBomMapper">
+    <select id="getContractProductBomQuantitySum" resultType="com.fjhx.sale.entity.contract.po.ContractProductBom">
+        SELECT sum(cpb.quantity * cp.quantity) AS quantity,
+               cpb.*
+        FROM contract_product_bom cpb
+                 LEFT JOIN contract_product cp ON cpb.contract_product_id = cp.id
+        WHERE cpb.contract_id = #{contractId}
+        GROUP BY contract_id,
+                 material_id
+    </select>
 </mapper>

+ 6 - 0
pom.xml

@@ -24,6 +24,7 @@
         <module>hx-sale</module>
         <module>hx-form</module>
         <module>hx-jushuitan</module>
+        <module>hx-iot</module>
     </modules>
 
     <properties>
@@ -107,6 +108,11 @@
                 <artifactId>hx-jushuitan</artifactId>
                 <version>${hx.version}</version>
             </dependency>
+            <dependency>
+                <groupId>com.fjhx</groupId>
+                <artifactId>hx-iot</artifactId>
+                <version>${hx.version}</version>
+            </dependency>
 
         </dependencies>
     </dependencyManagement>