浏览代码

Merge remote-tracking branch 'origin/master'

24282 2 年之前
父节点
当前提交
c2a29a658e
共有 40 个文件被更改,包括 523 次插入134 次删除
  1. 1 1
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRunningWater.java
  2. 5 0
      hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRequestFundsVo.java
  3. 3 1
      hx-account/src/main/resources/mapper/account/AccountRequestFundsMapper.xml
  4. 4 0
      hx-customer/src/main/java/com/fjhx/customer/controller/customer/CustomerController.java
  5. 8 0
      hx-item/src/main/java/com/fjhx/item/controller/product/ProductInfoController.java
  6. 8 1
      hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductInfoSelectDto.java
  7. 5 0
      hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java
  8. 8 1
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java
  9. 1 0
      hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml
  10. 5 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java
  11. 9 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java
  12. 55 22
      hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java
  13. 7 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java
  14. 10 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java
  15. 21 21
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java
  16. 20 0
      hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml
  17. 0 8
      hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractController.java
  18. 17 0
      hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractProductController.java
  19. 15 0
      hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductVo.java
  20. 4 0
      hx-sale/src/main/java/com/fjhx/sale/entity/documents/po/Documents.java
  21. 0 8
      hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractMapper.java
  22. 17 0
      hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductMapper.java
  23. 15 0
      hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractProductService.java
  24. 0 8
      hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java
  25. 67 0
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java
  26. 1 10
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java
  27. 56 8
      hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImpl.java
  28. 2 23
      hx-sale/src/main/resources/mapper/contract/ContractMapper.xml
  29. 41 0
      hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml
  30. 14 0
      hx-supply/src/main/java/com/fjhx/supply/controller/supplier/SupplierPriceController.java
  31. 1 1
      hx-supply/src/main/java/com/fjhx/supply/entity/supplier/dto/SupplierInfoSelectDto.java
  32. 10 0
      hx-supply/src/main/java/com/fjhx/supply/entity/supplier/dto/SupplierPriceDto.java
  33. 7 0
      hx-supply/src/main/java/com/fjhx/supply/service/supplier/SupplierPriceService.java
  34. 19 1
      hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierPriceServiceImpl.java
  35. 10 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/deliver/vo/DeliverGoodsDetailsVo.java
  36. 14 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsDetailsServiceImpl.java
  37. 2 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java
  38. 1 1
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckServiceImpl.java
  39. 34 19
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java
  40. 6 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

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

@@ -28,7 +28,7 @@ public class AccountRunningWater extends BasePo {
     private Long accountManagementId;
 
     /**
-     * 账户-管理表ID
+     * 业务ID
      */
     private Long businessId;
 

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/vo/AccountRequestFundsVo.java

@@ -39,6 +39,11 @@ public class AccountRequestFundsVo extends AccountRequestFunds {
     private String accountPaymentStatus;
 
     /**
+     * 付款账户名称
+     */
+    private String accountManagementName;
+
+    /**
      * 打款金额
      */
     private BigDecimal accountPaymentAmount;

+ 3 - 1
hx-account/src/main/resources/mapper/account/AccountRequestFundsMapper.xml

@@ -24,9 +24,11 @@
             arf.create_time,
             arf.update_user,
             arf.update_time,
-            ap.`status` accountPaymentStatus
+            ap.`status` accountPaymentStatus,
+            am.alias accountManagementName
         from account_request_funds arf
                  left join account_payment ap on arf.id = ap.business_id
+                 left join account_management am on arf.account_management_id = am.id
             ${ew.customSqlSegment}
     </select>
 

+ 4 - 0
hx-customer/src/main/java/com/fjhx/customer/controller/customer/CustomerController.java

@@ -88,6 +88,10 @@ public class CustomerController {
             customerService.updateById(dto);
     }
 
+    /**
+     * 最新跟进(客户画像)
+     */
+
 
 
 }

+ 8 - 0
hx-item/src/main/java/com/fjhx/item/controller/product/ProductInfoController.java

@@ -46,6 +46,14 @@ public class ProductInfoController {
     }
 
     /**
+     * 产品库组合产品分页
+     */
+    @PostMapping("/getCombinationPage")
+    public Page<ProductInfoVo> getCombinationPage(@RequestBody ProductInfoSelectDto dto) {
+        return productInfoService.getCombinationPage(dto);
+    }
+
+    /**
      * 产品库明细
      */
     @PostMapping("/detail")

+ 8 - 1
hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductInfoSelectDto.java

@@ -29,7 +29,14 @@ public class ProductInfoSelectDto extends BaseSelectDto {
      */
     private Long productClassifyId;
 
-    /**维多利亚当前周期*/
+    /**
+     * 维多利亚当前周期
+     */
     private Integer lifeCycle;
 
+    /**
+     * 过滤组合
+     */
+    private Integer combination;
+
 }

+ 5 - 0
hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java

@@ -32,6 +32,11 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
     Page<ProductInfoVo> getPageByWdly(ProductInfoSelectDto dto);
 
     /**
+     * 获取产品分组
+     */
+    Page<ProductInfoVo> getCombinationPage(ProductInfoSelectDto dto);
+
+    /**
      * 产品库明细
      */
     ProductInfoVo detail(Long id);

+ 8 - 1
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -30,7 +30,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -68,6 +67,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         );
         //计算并根据生命周期过滤
         wrapper.eq("IF(DATEDIFF(now(),json_unquote( victoriatourist_json -> '$.growUpDay' ))> 0,3,IF(DATEDIFF(now(), json_unquote(victoriatourist_json -> '$.newProductsDay' ))> 0, 2, 1 ))", dto.getLifeCycle());
+        wrapper.eq("json_unquote( victoriatourist_json -> '$.combination' )", dto.getCombination());
         Page<ProductInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
 
         List<ProductInfoVo> records = page.getRecords();
@@ -146,6 +146,13 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
     }
 
     @Override
+    public Page<ProductInfoVo> getCombinationPage(ProductInfoSelectDto dto) {
+        dto.setCombination(1);
+        Page<ProductInfoVo> page = getPage(dto);
+        return page;
+    }
+
+    @Override
     public ProductInfoVo detail(Long id) {
         ProductInfo ProductInfo = this.getById(id);
         ProductInfoVo result = BeanUtil.toBean(ProductInfo, ProductInfoVo.class);

+ 1 - 0
hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml

@@ -5,6 +5,7 @@
     <select id="getPage" resultType="com.fjhx.item.entity.product.vo.ProductInfoVo">
         SELECT
             pi.id,
+            pi.definition,
             pi.product_classify_id,
             pi.CODE,
             pi.type,

+ 5 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java

@@ -35,4 +35,9 @@ public class PurchaseDetailVo extends PurchaseDetail {
      */
     private BigDecimal sumCount;
 
+    /**
+     * 产品定义
+     */
+    private Integer productDefinition;
+
 }

+ 9 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java

@@ -31,4 +31,13 @@ public interface PurchaseDetailMapper extends BaseMapper<PurchaseDetail> {
      * @return
      */
     List<PurchaseDetailVo> getSumCountInDataResourceId(@Param("dataResourceIds")List<Long> dataResourceIds);
+
+
+    /**
+     * 获取外销合同总采购量审批通过的
+     * @param dataResourceIds
+     * @return
+     */
+    List<PurchaseDetailVo> getSumCountInDataResourceIds(@Param("dataResourceIds")List<Long> dataResourceIds);
+
 }

+ 55 - 22
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java

@@ -2,8 +2,6 @@ package com.fjhx.purchase.service.arrival.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
@@ -115,16 +113,18 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         purchase.setArrivalStatus(arrival.getArrivalStatus());
         purchase.setId(arrival.getPurchaseId());
         purchaseService.updateById(purchase);
+//        Purchase purchase1 = purchaseService.getById(arrival.getPurchaseId());
         //取出到货明细
         List<ArrivalDetail> arrivalDetailList = arrival.getArrivalDetailList();
         if (CollectionUtils.isNotEmpty(arrivalDetailList)) {
-            StockWait stockWait = new StockWait();
-            stockWait.setBusinessId(arrival.getId());//到货明细ID
-            stockWait.setType(1);//入库
-            stockWait.setStatus(0);//待入库
-            stockWait.setBusinessType(StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType());//采购到货
-            stockWaitService.save(stockWait);
-            List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+//            StockWait stockWait = new StockWait();
+//            stockWait.setBusinessId(purchase1.getId());//采购id
+//            stockWait.setBusinessCode(purchase1.getCode());//采购id
+//            stockWait.setType(1);//入库
+//            stockWait.setStatus(0);//待入库
+//            stockWait.setBusinessType(StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType());//采购到货
+//            stockWaitService.save(stockWait);
+//            List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
             for (ArrivalDetail d : arrivalDetailList) {
                 //todo 这一块是做了采购到货状态修改。前端已经完成
                 //查询采购明细
@@ -137,14 +137,14 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
 //
 //                }
                 d.setArrivalId(arrival.getId());
-                StockWaitDetails stockWaitDetails = new StockWaitDetails();
-                stockWaitDetails.setStockWaitId(stockWait.getId());
-                stockWaitDetails.setProductId(d.getBussinessId());
-                stockWaitDetails.setQuantity(d.getCount());
-                stockWaitDetailsList.add(stockWaitDetails);
+//                StockWaitDetails stockWaitDetails = new StockWaitDetails();
+//                stockWaitDetails.setStockWaitId(stockWait.getId());
+//                stockWaitDetails.setProductId(d.getBussinessId());
+//                stockWaitDetails.setQuantity(d.getCount());
+//                stockWaitDetailsList.add(stockWaitDetails);
             }
             arrivalDetailService.saveBatch(arrivalDetailList);
-            stockWaitDetailsService.saveBatch(stockWaitDetailsList);
+//            stockWaitDetailsService.saveBatch(stockWaitDetailsList);
         }
     }
 
@@ -155,6 +155,7 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
     @Override
     public void addByWdly(Arrival arrival) {
         arrival.setCode(CodeEnum.ARRIVAL.getCode());
+        arrival.setStatus(1);//设置到货
         this.save(arrival);
 
         //修改采购状态
@@ -168,7 +169,7 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         JSONObject json = JSONObject.parseObject(victoriatouristJson);
         Long deliverGoodsId = json.getLong("deliverGoodsId");
 
-        if(ObjectUtil.isEmpty(deliverGoodsId)){
+        if (ObjectUtil.isEmpty(deliverGoodsId)) {
             throw new ServiceException("发货id不能为空");
         }
 
@@ -181,25 +182,29 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         SubscribeDetail byId = subscribeDetailService.getById(subscribeDetailId);
         Subscribe byId1 = subscribeService.getById(byId.getSubscribeId());
         String victoriatouristJson1 = byId1.getVictoriatouristJson();
-        if(ObjectUtil.isNotEmpty(victoriatouristJson1)){
+        if (ObjectUtil.isNotEmpty(victoriatouristJson1)) {
             //去申购单取仓库id
             JSONObject json1 = JSONObject.parseObject(victoriatouristJson1);
             Long receiptWarehouseId = json1.getLong("receiptWarehouseId");
-            json.put("receiptWarehouseId",receiptWarehouseId);
+            json.put("receiptWarehouseId", receiptWarehouseId);
         }
         //赋值物流公司名称
         CompanyInfo logisticsCompanyCode = companyInfoService.getOne(q -> q.eq(CompanyInfo::getCode, json.getString("logisticsCompanyCode")));
-        json.put("logisticsCompanyName",logisticsCompanyCode.getName());
+        json.put("logisticsCompanyName", logisticsCompanyCode.getName());
         //修改发货记录的状态为到货
         wdlyService.updateDeliverGoodsStatus(deliverGoodsId);
 
+        //获取采购信息
+        Purchase purchase = purchaseService.getById(deliverGoodsInfo.getPurchaseId());
+
         //----------
         StockWait stockWait = new StockWait();
         stockWait.setType(1);//入库
         stockWait.setStatus(0);//待入库
         stockWait.setBusinessType(StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType());//采购到货
-        //将业务id设置成到货id
-        stockWait.setBusinessId(arrival.getId());
+        //将业务信息设置成采购id和采购编码
+        stockWait.setBusinessId(purchase.getId());
+        stockWait.setBusinessCode(purchase.getCode());
         stockWait.setVictoriatouristJson(json.toJSONString());
         stockWaitService.save(stockWait);
 
@@ -212,7 +217,7 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
         List<Long> arrivalDids = arrivalDetailList.stream().map(ArrivalDetail::getPurchaseDetailId).collect(Collectors.toList());
         List<PurchaseDetail> purchaseDetailList = purchaseDetailService.listByIds(arrivalDids);
-        if(ObjectUtil.isNotEmpty(purchaseDetailList)) {
+        if (ObjectUtil.isNotEmpty(purchaseDetailList)) {
             Map<Long, PurchaseDetail> purchaseDetailMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetail::getId, Function.identity()));
             for (ArrivalDetail d : arrivalDetailList) {
                 Long id = IdWorker.getId();
@@ -235,6 +240,34 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         DynamicDataSourceContextHolder.push(SourceConstant.WMS);
         stockWaitDetailsService.saveBatch(stockWaitDetailsList);
         DynamicDataSourceContextHolder.poll();
+
+        //修改到货状态
+        Integer flag = 0;
+        List<PurchaseDetail> purchaseDetailsList1 = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getPurchaseId, purchase.getId()));
+        if (ObjectUtil.isNotEmpty(purchaseDetailsList1)) {
+            List<Long> purchaseDetailsIds = purchaseDetailsList1.stream().map(PurchaseDetail::getId).collect(Collectors.toList());
+            List<ArrivalDetail> arrivalDetailsList1 = arrivalDetailService.list(q -> q.in(ArrivalDetail::getPurchaseDetailId, purchaseDetailsIds));
+            if (ObjectUtil.isNotEmpty(arrivalDetailsList1)) {
+                Map<Long, List<ArrivalDetail>> arrivalDetailsMap = arrivalDetailsList1.stream().collect(Collectors.groupingBy(ArrivalDetail::getPurchaseDetailId));
+                for (PurchaseDetail purchaseDetail : purchaseDetailsList1) {
+                    List<ArrivalDetail> arrivalDetails = arrivalDetailsMap.get(purchaseDetail.getId());
+                    BigDecimal count = arrivalDetails.stream()
+                            .map(ArrivalDetail::getCount)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    if (purchaseDetail.getCount().compareTo(count) >= 0) {
+                        flag++;
+                    }
+                }
+                if (purchaseDetailsList1.size() == flag) {
+                    //完全到货
+                    purchase.setArrivalStatus(20);
+                } else {
+                    //部分到货
+                    purchase.setArrivalStatus(10);
+                }
+                purchaseService.updateById(purchase);
+            }
+        }
     }
 
     @Override

+ 7 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java

@@ -51,4 +51,11 @@ public interface PurchaseDetailService extends BaseService<PurchaseDetail> {
      */
     List<PurchaseDetailVo> getSumCountInDataResourceId(List<Long> dataResourceIds);
 
+    /**
+     * 获取外销合同总采购量审批通过的
+     * @return
+     */
+    List<PurchaseDetailVo> getSumCountInDataResourceIds(List<Long> dataResourceIds);
+
+
 }

+ 10 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java

@@ -73,4 +73,14 @@ public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailMapper,
         return baseMapper.getSumCountInDataResourceId(dataResourceIds);
     }
 
+    /**
+     * 获取外销合同总采购量审批通过的
+     * @param dataResourceIds
+     * @return
+     */
+    @Override
+    public List<PurchaseDetailVo> getSumCountInDataResourceIds(List<Long> dataResourceIds) {
+        return baseMapper.getSumCountInDataResourceIds(dataResourceIds);
+    }
+
 }

+ 21 - 21
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -157,27 +157,27 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
                 }
             }
             //赋值到货状态
-            List<Long> pids = list.stream().map(PurchaseVo::getId).collect(Collectors.toList());
-            List<Arrival> arrivalList = arrivalService.list(q -> q.in(Arrival::getPurchaseId, pids));
-            Map<Long, List<Arrival>> arrivalMap = arrivalList.stream().collect(Collectors.groupingBy(Arrival::getPurchaseId));
-            for (PurchaseVo purchaseVo : list) {
-                List<Arrival> list1 = arrivalMap.get(purchaseVo.getId());
-                if(ObjectUtils.isEmpty(list1)){
-                    purchaseVo.setArrivalStatus(0);
-                    continue;
-                }
-                List<Arrival> arrivalCount = list1.stream().filter(q -> q.equals(1)).collect(Collectors.toList());
-                if(arrivalCount.size()==0){
-                    //未到货
-                    purchaseVo.setArrivalStatus(0);
-                }else if(arrivalCount.size()<=list1.size()){
-                    //部分到货
-                    purchaseVo.setArrivalStatus(1);
-                }else{
-                    //完全到货
-                    purchaseVo.setArrivalStatus(2);
-                }
-            }
+//            List<Long> pids = list.stream().map(PurchaseVo::getId).collect(Collectors.toList());
+//            List<Arrival> arrivalList = arrivalService.list(q -> q.in(Arrival::getPurchaseId, pids));
+//            Map<Long, List<Arrival>> arrivalMap = arrivalList.stream().collect(Collectors.groupingBy(Arrival::getPurchaseId));
+//            for (PurchaseVo purchaseVo : list) {
+//                List<Arrival> list1 = arrivalMap.get(purchaseVo.getId());
+//                if(ObjectUtils.isEmpty(list1)){
+//                    purchaseVo.setArrivalStatus(0);
+//                    continue;
+//                }
+//                List<Arrival> arrivalCount = list1.stream().filter(q -> q.equals(1)).collect(Collectors.toList());
+//                if(arrivalCount.size()==0){
+//                    //未到货
+//                    purchaseVo.setArrivalStatus(0);
+//                }else if(arrivalCount.size()<=list1.size()){
+//                    //部分到货
+//                    purchaseVo.setArrivalStatus(1);
+//                }else{
+//                    //完全到货
+//                    purchaseVo.setArrivalStatus(2);
+//                }
+//            }
         }
         return page;
     }

+ 20 - 0
hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml

@@ -36,4 +36,24 @@
         GROUP BY
             data_resource_id
     </select>
+    <select id="getSumCountInDataResourceIds" resultType="com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo">
+        SELECT
+            sum( t1.count ) AS sumCount,
+            t1.data_resource_id
+        FROM
+            purchase_detail t1
+        LEFT JOIN purchase t2 ON t1.purchase_id = t2.id
+        <where>
+            t1.data_resource = 1
+            AND t2.`purchase_status` &gt;= 30
+            AND t2.purchase_status &lt; 88
+            <if test="dataResourceIds neq null and dataResourceIds.size() > 0">
+                <foreach collection="dataResourceIds" item="dataResourceId" open="AND t1.data_resource_id IN (" separator="," close=")">
+                    #{dataResourceId}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+            data_resource_id
+    </select>
 </mapper>

+ 0 - 8
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractController.java

@@ -78,14 +78,6 @@ public class ContractController {
     }
 
     /**
-     * 根据合同ID和客户ID查询未包装的产品
-     */
-    @GetMapping("/getNoPackContractProductById")
-    public List<ContractVo> getNoPackContractProductById(@RequestParam("customerId")String customerId,@RequestParam("contractId")String contractId) {
-        return contractService.getNoPackContractProductById(customerId, contractId);
-    }
-
-    /**
      * 根据合同id集合查询合同列表
      */
     @PostMapping("/getByIds")

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractProductController.java

@@ -1,5 +1,6 @@
 package com.fjhx.sale.controller.contract;
 
+import com.fjhx.sale.entity.contract.vo.ContractVo;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
@@ -9,6 +10,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.fjhx.sale.service.contract.ContractProductService;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -32,6 +35,20 @@ public class ContractProductController {
     public Page<ContractProductVo> page(@RequestBody ContractProductSelectDto dto) {
         return contractProductService.getPage(dto);
     }
+    /**
+     * 根据合同ID和客户ID查询未包装的产品
+     */
+    @GetMapping("/getNoPackContractProductById")
+    public List<ContractProductVo> getNoPackContractProductById(@RequestParam("customerId")String customerId, @RequestParam("contractIds")String contractIds) {
+        return contractProductService.getNoPackContractProductById(customerId, contractIds);
+    }
+    /**
+     * 外销合同-产品ID集合查询产品
+     */
+    @PostMapping("/getListDetail")
+    public List<ContractProductVo> getListDetail(@RequestBody List<Long> ids) {
+        return contractProductService.getListDetail(ids);
+    }
 
     /**
      * 外销合同-产品明细

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

@@ -75,4 +75,19 @@ public class ContractProductVo extends ContractProduct {
      * 所属分类id
      */
     private Long productCategoryId;
+
+    /**
+     * 合同产品数量
+     */
+    private BigDecimal cpQuantity;
+
+    /**
+     * 已包装数量
+     */
+    private BigDecimal sumPackQuantity;
+
+    /**
+     * 已采购数
+     */
+    private BigDecimal sumPurchaseCount;
 }

+ 4 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/documents/po/Documents.java

@@ -34,4 +34,8 @@ public class Documents extends BasePo {
      */
     private String countryId;
 
+    /**
+     * 包装出货主合同表ID
+     */
+    private Long packShipmentId;
 }

+ 0 - 8
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractMapper.java

@@ -32,12 +32,4 @@ public interface ContractMapper extends BaseMapper<Contract> {
      */
     List<ContractVo> getNoPackContractByCustomerId(@Param("customerId")String customerId);
 
-
-    /**
-     * 根据合同ID和客户ID查询未包装的产品
-     * @param customerId
-     * @param contractId
-     * @return
-     */
-    List<ContractVo> getNoPackContractProductById(@Param("customerId")String customerId,@Param("contractId")String contractId);
 }

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

@@ -4,9 +4,12 @@ import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
+import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -23,4 +26,18 @@ public interface ContractProductMapper extends BaseMapper<ContractProduct> {
      */
     Page<ContractProductVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractProduct> wrapper);
 
+    /**
+     * 根据合同产品ID集合查询合同产品
+     * @param ids
+     * @return
+     */
+    List<ContractProductVo> getListByIds(@Param("ew") IWrapper<ContractProduct> wrapper);
+
+    /**
+     * 根据合同ID和客户ID查询未包装的产品
+     * @param customerId
+     * @param contractId
+     * @return
+     */
+    List<ContractProductVo> getNoPackContractProductById(@Param("customerId")String customerId, @Param("contractIds")List<String> contractId);
 }

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

@@ -1,12 +1,15 @@
 package com.fjhx.sale.service.contract;
 
 import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.entity.contract.dto.ContractProductSelectDto;
 import com.fjhx.sale.entity.contract.dto.ContractProductDto;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -24,6 +27,11 @@ public interface ContractProductService extends BaseService<ContractProduct> {
     Page<ContractProductVo> getPage(ContractProductSelectDto dto);
 
     /**
+     * 外销合同-根据多个明细ID集合查询合同产品
+     */
+    List<ContractProductVo> getListDetail(List<Long> ids);
+
+    /**
      * 外销合同-产品明细
      */
     ContractProductVo detail(Long id);
@@ -43,4 +51,11 @@ public interface ContractProductService extends BaseService<ContractProduct> {
      */
     void delete(Long id);
 
+    /**
+     * 根据合同ID和客户ID查询未包装的产品
+     * @param customerId
+     * @return
+     */
+    List<ContractProductVo> getNoPackContractProductById(String customerId, String contractIds);
+
 }

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

@@ -54,14 +54,6 @@ public interface ContractService extends BaseService<Contract> {
     List<ContractVo> getNoPackContractByCustomerId(String customerId);
 
     /**
-     * 根据合同ID和客户ID查询未包装的产品
-     * @param customerId
-     * @return
-     */
-    List<ContractVo> getNoPackContractProductById(String customerId, String contractId);
-
-
-    /**
      * 根据合同ID集合查询合同
      */
     List<Contract> getByIds(List<Long> ids);

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

@@ -7,6 +7,7 @@ import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
 import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
@@ -16,8 +17,10 @@ import com.fjhx.sale.entity.contract.vo.ContractVo;
 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.StringUtils;
 import com.ruoyi.common.utils.wrapper.SqlField;
+import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -28,6 +31,7 @@ import com.fjhx.sale.entity.contract.dto.ContractProductDto;
 import cn.hutool.core.bean.BeanUtil;
 
 import java.math.BigDecimal;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -49,6 +53,9 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
 
     @Autowired
     private ProductClassifyService productClassifyService;
+
+    @Autowired
+    private PurchaseDetailService purchaseDetailService;
     /**
      * 分页
      * @param dto
@@ -81,6 +88,66 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
         }
         return page;
     }
+    /**
+     * 根据合同ID和客户ID查询未包装的产品
+     * @param customerId
+     * @return
+     */
+    @Override
+    public List<ContractProductVo> getNoPackContractProductById(String customerId,String contractIds) {
+        List<ContractProductVo> list = baseMapper.getNoPackContractProductById(customerId, Arrays.asList(contractIds.split(",")));
+        // 赋值产品属性
+        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 list;
+    }
+    /**
+     * 根据合同产品IDS查询合同产品
+     * @param ids
+     * @return
+     */
+    @Override
+    public List<ContractProductVo> getListDetail(List<Long> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            throw new ServiceException("参数异常");
+        }
+        IWrapper<ContractProduct> wrapper = getWrapper();
+        wrapper.in("t1",ContractProduct::getId,ids);
+        List<ContractProductVo> list = baseMapper.getListByIds(wrapper);
+        if(CollectionUtils.isNotEmpty(list)){
+            List<PurchaseDetailVo> vo = purchaseDetailService.getSumCountInDataResourceIds(ids);
+            Map<Long,BigDecimal> voMap = vo.stream().collect(Collectors.toMap(PurchaseDetailVo::getDataResourceId,PurchaseDetailVo::getSumCount));
+            for(ContractProductVo c:list){
+                if(MapUtils.isNotEmpty(voMap)){
+                    c.setSumPurchaseCount(voMap.getOrDefault(c.getId(),BigDecimal.ZERO));
+                }
+            }
+            // 赋值产品属性
+            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 list;
+    }
 
     @Override
     public ContractProductVo detail(Long id) {

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

@@ -24,6 +24,7 @@ import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.vo.ContractDocumentaryVo;
 import com.fjhx.sale.entity.contract.vo.ContractPdfInfoVo;
+import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.fjhx.sale.mapper.contract.ContractMapper;
 import com.fjhx.sale.service.contract.ContractProductService;
@@ -152,16 +153,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     }
 
     /**
-     * 根据合同ID和客户ID查询未包装的产品
-     * @param customerId
-     * @return
-     */
-    @Override
-    public List<ContractVo> getNoPackContractProductById(String customerId,String contractId) {
-        return baseMapper.getNoPackContractProductById(customerId,contractId);
-    }
-
-    /**
      * 根据合同id集合查询合同列表
      *
      * @param ids

+ 56 - 8
hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImpl.java

@@ -7,16 +7,23 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.entity.corporation.po.Corporation;
 import com.fjhx.common.service.corporation.CorporationService;
+import com.fjhx.customer.entity.customer.po.Customer;
+import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.sale.entity.contract.po.Contract;
+import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.fjhx.sale.entity.documents.po.Documents;
 import com.fjhx.sale.entity.documents.po.DocumentsProduct;
 import com.fjhx.sale.entity.documents.po.DocumentsTransport;
+import com.fjhx.sale.entity.pack.po.PackDetail;
+import com.fjhx.sale.entity.pack.po.PackShipment;
 import com.fjhx.sale.mapper.documents.DocumentsMapper;
 import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.sale.service.documents.DocumentsProductService;
 import com.fjhx.sale.service.documents.DocumentsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.sale.service.documents.DocumentsTransportService;
+import com.fjhx.sale.service.pack.PackDetailService;
+import com.fjhx.sale.service.pack.PackShipmentService;
 import com.obs.services.internal.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -27,9 +34,9 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.sale.entity.documents.dto.DocumentsDto;
 import cn.hutool.core.bean.BeanUtil;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -50,11 +57,22 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
     private ContractService contractService;
 
     @Autowired
+    private PackDetailService packDetailService;
+
+    @Autowired
     private DocumentsTransportService documentsTransportService;
 
     @Autowired
     private CorporationService corporationService;
 
+    @Autowired
+    private PackShipmentService packShipmentService;
+
+    @Autowired
+    private CustomerService customerService;
+
+    private static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy", Locale.ENGLISH);
+
     /**
      * 单证表分页
      */
@@ -137,14 +155,44 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
         if(ObjectUtil.isNotEmpty(documents)){
             throw new ServiceException("单证不存在");
         }
-        //查询单证货物
-        List<DocumentsProduct> documentsProducts = documentsProductService.list(Wrappers.<DocumentsProduct>query().lambda().eq(DocumentsProduct::getDocumentsId,documents.getId()));
         //查询合同
         Contract contract = contractService.getById(documents.getContractId());
+        if(ObjectUtil.isEmpty(contract)){
+            throw new ServiceException("该单证合同不存在");
+        }
+        ContractVo contractVo = BeanUtil.toBean(contract, ContractVo.class);
+        //查询买方
+        Customer customer = customerService.getById(contractVo.getBuyCorporationId());
+        //查询卖方
+        Corporation corporation = corporationService.getById(contractVo.getSellCorporationId());
+        //查询单证货物
+        List<DocumentsProduct> documentsProducts = documentsProductService.list(Wrappers.<DocumentsProduct>query().lambda().eq(DocumentsProduct::getDocumentsId,documents.getId()));
+        //查询包装出货主合同
+        PackShipment packShipment = packShipmentService.getById(documents.getPackShipmentId());
+        //装箱单
+        List<PackDetail> packDetailList = new ArrayList<>();
+        //总毛重
+        BigDecimal sumRoughWeight = BigDecimal.ZERO;
+        //总净重
+        BigDecimal sumNetWeight = BigDecimal.ZERO;
+        //总体积
+        BigDecimal sumBomVolume = BigDecimal.ZERO;
+        if(ObjectUtil.isNotEmpty(packShipment)){//查询装箱单
+            packDetailList = packDetailService.list(Wrappers.<PackDetail>query().lambda().in(PackDetail::getId, Arrays.asList(packShipment.getPackDetailIds())));
+            sumRoughWeight = packDetailList.stream().map(PackDetail::getRoughWeight).reduce(BigDecimal.ZERO,BigDecimal::add);
+            sumNetWeight = packDetailList.stream().map(PackDetail::getNetWeight).reduce(BigDecimal.ZERO,BigDecimal::add);
+            sumBomVolume = packDetailList.stream().map(PackDetail::getBomVolume).reduce(BigDecimal.ZERO,BigDecimal::add);
+        }
+        map.put("contract",contract);//合同信息
+        map.put("date",sdf.format(contract.getCreateTime()));//日期
         map.put("documents",documents);//单证信息
-        map.put("documents",documentsProducts);//单证信息货物
-
-
+        map.put("documentsProducts",documentsProducts);//单证信息货物
+        map.put("packDetailList",packDetailList);//单证信息货物
+        map.put("sumRoughWeight",sumRoughWeight);//总毛重
+        map.put("sumNetWeight",sumNetWeight);//总净重
+        map.put("sumBomVolume",sumBomVolume);//总体积
+        map.put("customer",customer);//买方信息
+        map.put("corporation",corporation);//卖方信息
 
         return null;
     }

+ 2 - 23
hx-sale/src/main/resources/mapper/contract/ContractMapper.xml

@@ -28,30 +28,9 @@
             ) t1
         WHERE t1.sumPackQuantity &lt; t1.cpQuantity
         AND t1.`status` &gt;=30
-        AND t1.`status` &lt;999
+        AND t1.`status` &lt;99
         GROUP BY t1.id
     </select>
 
-    <select id="getNoPackContractProductById" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
-        SELECT
-            *
-        FROM
-            (
-                SELECT
-                    t1.*,
-                    t2.quantity AS cpQuantity,
-                    t2.id AS contractProductId,
-                    ( SELECT IFNULL( SUM( quantity ), 0 ) FROM pack_detail_product WHERE contract_product_id = t2.id ) AS sumPackQuantity
-                FROM
-                    contract t1
-                LEFT JOIN contract_product t2 ON t1.id = t2.contract_id
-                <where>
-                    <if test="customerId neq null and customerId neq '' ">
-                        buy_corporation_id = #{customerId}
-                    </if>
-                </where>
-            ) t1
-        WHERE t1.sumPackQuantity &lt; t1.cpQuantity
-          AND t1.id = #{contractId}
-    </select>
+
 </mapper>

+ 41 - 0
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -16,5 +16,46 @@
         LEFT JOIN contract t2 ON t1.contract_id = t2.id
             ${ew.customSqlSegment}
     </select>
+    <select id="getListByIds" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
+        SELECT
+            t1.id,
+            t1.contract_id,
+            t1.product_id,
+            t2.`code` AS contractCode,
+            t2.user_name AS userName,
+            t2.version AS contractVersion,
+            t1.expend_quantity expendQuantity
+        FROM
+            contract_product t1
+        LEFT JOIN contract t2 ON t1.contract_id = t2.id
+            ${ew.customSqlSegment}
+    </select>
 
+    <select id="getNoPackContractProductById" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
+        SELECT
+        *
+        FROM
+        (
+        SELECT
+        t1.*,
+        t1.`code` AS contractCode,
+        t2.quantity AS cpQuantity,
+        t2.id AS contractProductId,
+        ( SELECT IFNULL( SUM( quantity ), 0 ) FROM pack_detail_product WHERE contract_product_id = t2.id ) AS sumPackQuantity
+        FROM
+        contract t1
+        LEFT JOIN contract_product t2 ON t1.id = t2.contract_id
+        <where>
+            <if test="customerId neq null and customerId neq '' ">
+                buy_corporation_id = #{customerId}
+            </if>
+        </where>
+        ) t1
+        WHERE t1.sumPackQuantity &lt; t1.cpQuantity
+        <if test="contractIds neq null and contractIds.size() > 0">
+            <foreach collection="contractIds" item="contractId" open="AND t1.id IN (" separator="," close=")">
+                #{contractId}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 14 - 0
hx-supply/src/main/java/com/fjhx/supply/controller/supplier/SupplierPriceController.java

@@ -16,6 +16,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+import java.util.Map;
+
 
 /**
  * <p>
@@ -67,4 +70,15 @@ public class SupplierPriceController {
         supplierPriceService.delete(dto.getId());
     }
 
+    /**
+     * 根据供应商id和产品列表获取价格
+     *
+     * @return
+     */
+    @PostMapping("/getSupplierPriceByProductIds")
+    public Map<Long, BigDecimal> getSupplierPriceByProductIds(@RequestBody SupplierPriceDto dto) {
+        return supplierPriceService.getSupplierPriceByProductIds(dto);
+    }
+
+
 }

+ 1 - 1
hx-supply/src/main/java/com/fjhx/supply/entity/supplier/dto/SupplierInfoSelectDto.java

@@ -17,7 +17,7 @@ public class SupplierInfoSelectDto extends BaseSelectDto {
     /**
      * 供应商类型 1贸易商 2工厂
      */
-    private Integer type;
+    private String type;
 
     /**
      * 维多利亚有无账期过滤

+ 10 - 0
hx-supply/src/main/java/com/fjhx/supply/entity/supplier/dto/SupplierPriceDto.java

@@ -26,4 +26,14 @@ public class SupplierPriceDto extends SupplierPrice {
      */
     private boolean renewWhileItExists;
 
+    /**
+     * 供应商id
+     */
+    private Long supplierInfoId;
+
+    /**
+     * 产品id列表
+     */
+    private List<Long> productIdList;
+
 }

+ 7 - 0
hx-supply/src/main/java/com/fjhx/supply/service/supplier/SupplierPriceService.java

@@ -8,6 +8,9 @@ import com.fjhx.supply.entity.supplier.vo.SupplierPriceAddVo;
 import com.fjhx.supply.entity.supplier.vo.SupplierPriceVo;
 import com.ruoyi.common.core.service.BaseService;
 
+import java.math.BigDecimal;
+import java.util.Map;
+
 
 /**
  * <p>
@@ -41,4 +44,8 @@ public interface SupplierPriceService extends BaseService<SupplierPrice> {
      */
     void delete(Long id);
 
+    /**
+     * 根据供应商id和产品列表获取价格
+     */
+    Map<Long, BigDecimal> getSupplierPriceByProductIds(SupplierPriceDto dto);
 }

+ 19 - 1
hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierPriceServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.supply.service.supplier.impl;
 
 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.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
@@ -16,12 +17,14 @@ import com.fjhx.supply.entity.supplier.vo.SupplierPriceAddVo;
 import com.fjhx.supply.entity.supplier.vo.SupplierPriceVo;
 import com.fjhx.supply.mapper.supplier.SupplierPriceMapper;
 import com.fjhx.supply.service.supplier.SupplierPriceService;
+import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -156,4 +159,19 @@ public class SupplierPriceServiceImpl extends ServiceImpl<SupplierPriceMapper, S
         this.removeById(id);
     }
 
-}
+    @Override
+    public Map<Long, BigDecimal> getSupplierPriceByProductIds(SupplierPriceDto dto) {
+        Long supplierId = dto.getSupplierInfoId();
+        if (ObjectUtils.isEmpty(supplierId)) {
+            throw new ServiceException("供应商id不能为空");
+        }
+        List<Long> productIdList = dto.getProductIdList();
+        if (ObjectUtils.isEmpty(supplierId)) {
+            throw new ServiceException("产品id数组不能为空");
+        }
+        List<SupplierPrice> list = list(q -> q.eq(SupplierPrice::getSupplierInfoId, supplierId).in(SupplierPrice::getProductInfoId, productIdList));
+        return list.stream().collect(Collectors.toMap(SupplierPrice::getProductInfoId, SupplierPrice::getPrice));
+    }
+
+
+}

+ 10 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/deliver/vo/DeliverGoodsDetailsVo.java

@@ -17,6 +17,11 @@ import java.math.BigDecimal;
 public class DeliverGoodsDetailsVo extends DeliverGoodsDetails {
 
     /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
      * 产品类型
      */
     private String type;
@@ -42,6 +47,11 @@ public class DeliverGoodsDetailsVo extends DeliverGoodsDetails {
     private BigDecimal count;
 
     /**
+     * 产品类型定义
+     */
+    private Integer definition;
+
+    /**
      * 在途数量
      */
     private BigDecimal transitQuantity;

+ 14 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsDetailsServiceImpl.java

@@ -4,11 +4,13 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.fjhx.supply.entity.supplier.po.SupplierPrice;
 import com.fjhx.victoriatourist.entity.deliver.dto.DeliverGoodsDetailsDto;
 import com.fjhx.victoriatourist.entity.deliver.dto.DeliverGoodsDetailsSelectDto;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoodsDetails;
@@ -40,6 +42,8 @@ public class DeliverGoodsDetailsServiceImpl extends ServiceImpl<DeliverGoodsDeta
     PurchaseDetailService purchaseDetailService;
     @Autowired
     PurchaseService purchaseService;
+    @Autowired
+    ProductInfoService productInfoService;
 
     @Override
     public Page<DeliverGoodsDetailsVo> getPage(DeliverGoodsDetailsSelectDto dto) {
@@ -70,6 +74,16 @@ public class DeliverGoodsDetailsServiceImpl extends ServiceImpl<DeliverGoodsDeta
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             purchaseDetail.setDeliverGoodsQuantity(count);
         }
+        //赋值产品信息
+        productInfoService.attributeAssign(purchaseDetailVoList, PurchaseDetailVo::getBussinessId, (item, product) -> {
+            item.setProductDefinition(product.getDefinition());
+            item.setProductType(product.getType());
+            item.setProductCode(product.getCode());
+            item.setProductName(product.getName());
+            item.setProductSpec(product.getSpec());
+            item.setProductUnit(product.getUnit());
+        });
+
         return purchaseDetailVoList;
     }
 

+ 2 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java

@@ -96,11 +96,13 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
             Long goodid = goodidmap.get(deliverGoodsDetailsVo.getPurchaseDetailId());
             ProductInfo productInfo = productInfoMap.get(goodid);
             if (ObjectUtil.isNotEmpty(productInfo)) {
+                deliverGoodsDetailsVo.setProductId(productInfo.getId());
                 deliverGoodsDetailsVo.setType(productInfo.getType());
                 deliverGoodsDetailsVo.setCode(productInfo.getCode());
                 deliverGoodsDetailsVo.setName(productInfo.getName());
                 deliverGoodsDetailsVo.setSpec(productInfo.getSpec());
                 deliverGoodsDetailsVo.setUnit(productInfo.getUnit());
+                deliverGoodsDetailsVo.setDefinition(productInfo.getDefinition());
             }
             //赋值采购数量
             PurchaseDetail purchaseDetail = purchaseDetailMap.get(deliverGoodsDetailsVo.getPurchaseDetailId());

+ 1 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockCheckServiceImpl.java

@@ -109,7 +109,7 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
 
         stockCheckDto.setId(stockCheckId);
         stockCheckDto.setCode(CodeEnum.CHECK_CODE.getCode());
-        stockCheckDto.setResult(anomalyNum == 0 ? StatusConstant.YES : StatusConstant.NO);
+        stockCheckDto.setResult(anomalyNum > 0 ? StatusConstant.YES : StatusConstant.NO);
         stockCheckDto.setTotalNum(totalNum);
         stockCheckDto.setNormalNum(normalNum);
         stockCheckDto.setAnomalyNum(anomalyNum);

+ 34 - 19
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -113,11 +113,11 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 json.put("unit", productInfo.getUnit());
 
                 BigDecimal frozenQuantity = json.getBigDecimal("frozenQuantity");
-                frozenQuantity = ObjectUtil.isEmpty(frozenQuantity)?BigDecimal.ZERO:frozenQuantity;
-                json.put("frozenQuantity",frozenQuantity);
+                frozenQuantity = ObjectUtil.isEmpty(frozenQuantity) ? BigDecimal.ZERO : frozenQuantity;
+                json.put("frozenQuantity", frozenQuantity);
                 BigDecimal defectiveQuantity = json.getBigDecimal("defectiveQuantity");
-                defectiveQuantity = ObjectUtil.isEmpty(defectiveQuantity)?BigDecimal.ZERO:defectiveQuantity;
-                json.put("defectiveQuantity",defectiveQuantity);
+                defectiveQuantity = ObjectUtil.isEmpty(defectiveQuantity) ? BigDecimal.ZERO : defectiveQuantity;
+                json.put("defectiveQuantity", defectiveQuantity);
                 item.setVictoriatouristJson(json.toJSONString());
             });
         }
@@ -178,14 +178,19 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             json.put("unit", productInfo.getUnit());
 
             BigDecimal frozenQuantity = json.getBigDecimal("frozenQuantity");
-            frozenQuantity = ObjectUtil.isEmpty(frozenQuantity)?BigDecimal.ZERO:frozenQuantity;
-            json.put("frozenQuantity",frozenQuantity);
+            frozenQuantity = ObjectUtil.isEmpty(frozenQuantity) ? BigDecimal.ZERO : frozenQuantity;
+            json.put("frozenQuantity", frozenQuantity);
             BigDecimal defectiveQuantity = json.getBigDecimal("defectiveQuantity");
-            defectiveQuantity = ObjectUtil.isEmpty(defectiveQuantity)?BigDecimal.ZERO:defectiveQuantity;
-            json.put("defectiveQuantity",defectiveQuantity);
+            defectiveQuantity = ObjectUtil.isEmpty(defectiveQuantity) ? BigDecimal.ZERO : defectiveQuantity;
+            json.put("defectiveQuantity", defectiveQuantity);
             item.setVictoriatouristJson(json.toJSONString());
         });
 
+        //赋值产品分类
+        productClassifyService.attributeAssign(stockVos, StockVo::getProductClassifyId, (item, productClassify) -> {
+            item.setProductClassifyName(productClassify.getName());
+        });
+
         //赋值仓库名称
         warehouseService.attributeAssign(stockVos, StockVo::getWarehouseId, (item, warehouse) -> {
             item.setWarehouseName(warehouse.getName());
@@ -229,11 +234,11 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
 
 
             BigDecimal frozenQuantity = json.getBigDecimal("frozenQuantity");
-            frozenQuantity = ObjectUtil.isEmpty(frozenQuantity)?BigDecimal.ZERO:frozenQuantity;
-            json.put("frozenQuantity",frozenQuantity);
+            frozenQuantity = ObjectUtil.isEmpty(frozenQuantity) ? BigDecimal.ZERO : frozenQuantity;
+            json.put("frozenQuantity", frozenQuantity);
             BigDecimal defectiveQuantity = json.getBigDecimal("defectiveQuantity");
-            defectiveQuantity = ObjectUtil.isEmpty(defectiveQuantity)?BigDecimal.ZERO:defectiveQuantity;
-            json.put("defectiveQuantity",defectiveQuantity);
+            defectiveQuantity = ObjectUtil.isEmpty(defectiveQuantity) ? BigDecimal.ZERO : defectiveQuantity;
+            json.put("defectiveQuantity", defectiveQuantity);
             item.setVictoriatouristJson(json.toJSONString());
         });
 
@@ -312,7 +317,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             Stock newStocks = new Stock();
             newStocks.setWarehouseId(warehouseId);
             newStocks.setProductId(stock.getProductId());
-            if(ObjectUtil.isEmpty(stock.getQuantity())){
+            if (ObjectUtil.isEmpty(stock.getQuantity())) {
                 //判断传操作的库存是否为空 空赋值0
                 stock.setQuantity(BigDecimal.ZERO);
             }
@@ -379,9 +384,14 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         }
         Stock stock1 = getById(stock.getId());
         String victoriatouristJson = stock1.getVictoriatouristJson();
-        JSONObject json = JSONObject.parseObject(victoriatouristJson);
-        json.put("quantity", json.getBigDecimal("quantity").add(stock.getQuantity()));
-        json.put("defectiveQuantity", json.getBigDecimal("defectiveQuantity").subtract(stock.getQuantity()));
+        JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
+        BigDecimal quantity = stock1.getQuantity();
+        BigDecimal defectiveQuantity = ObjectUtil.isNotEmpty(json.getBigDecimal("defectiveQuantity")) ? json.getBigDecimal("defectiveQuantity") : BigDecimal.ZERO;
+        if (defectiveQuantity.compareTo(BigDecimal.ZERO) == 0) {
+            throw new ServiceException("库存不足,无法转换");
+        }
+        stock1.setQuantity(quantity.add(stock.getQuantity()));
+        json.put("defectiveQuantity", defectiveQuantity.subtract(stock.getQuantity()));
         stock1.setVictoriatouristJson(json.toJSONString());
         updateById(stock1);
     }
@@ -413,9 +423,14 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         }
         Stock stock1 = getById(stock.getId());
         String victoriatouristJson = stock1.getVictoriatouristJson();
-        JSONObject json = JSONObject.parseObject(victoriatouristJson);
-        json.put("quantity", json.getBigDecimal("quantity").subtract(stock.getQuantity()));
-        json.put("defectiveQuantity", json.getBigDecimal("defectiveQuantity").add(stock.getQuantity()));
+        JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
+        BigDecimal quantity = stock1.getQuantity();
+        BigDecimal defectiveQuantity = ObjectUtil.isNotEmpty(json.getBigDecimal("defectiveQuantity")) ? json.getBigDecimal("defectiveQuantity") : BigDecimal.ZERO;
+        if (quantity.compareTo(BigDecimal.ZERO) == 0) {
+            throw new ServiceException("库存不足,无法转换");
+        }
+        stock1.setQuantity(quantity.subtract(stock.getQuantity()));
+        json.put("defectiveQuantity", defectiveQuantity.add(stock.getQuantity()));
         stock1.setVictoriatouristJson(json.toJSONString());
         updateById(stock1);
     }

+ 6 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -250,6 +250,10 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         } else {
             stockWait.setStatus(1);//部分入库
         }
+        String victoriatouristJson = stockWait.getVictoriatouristJson();
+        JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson)?JSONObject.parseObject(victoriatouristJson):new JSONObject();
+        json.put("receiptWarehouseId",stockWaitDto.getWarehouseId());
+        stockWait.setVictoriatouristJson(json.toJSONString());
         updateById(stockWait);
 
         //创建出入库记录
@@ -264,6 +268,8 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 3, stockList, stockWaitDto.getWarehouseId());
         //保存出入库明细
         stockJournalDetailsService.saveBatch(stockJournalDetailsList);
+
+        //创建待质检记录
     }
 
     @Override