瀏覽代碼

Merge remote-tracking branch 'origin/master'

wxf 2 年之前
父節點
當前提交
d0bb77af79
共有 52 個文件被更改,包括 777 次插入103 次删除
  1. 44 0
      hx-common/src/main/java/com/fjhx/common/controller/currency/CurrencyRateController.java
  2. 33 0
      hx-common/src/main/java/com/fjhx/common/entity/currency/po/CurrencyRate.java
  3. 16 0
      hx-common/src/main/java/com/fjhx/common/mapper/currency/CurrencyRateMapper.java
  4. 28 0
      hx-common/src/main/java/com/fjhx/common/service/currency/CurrencyRateService.java
  5. 32 0
      hx-common/src/main/java/com/fjhx/common/service/currency/impl/CurrencyRateServiceImpl.java
  6. 5 0
      hx-common/src/main/resources/mapper/currency/CurrencyRateMapper.xml
  7. 3 0
      hx-iot/src/main/java/com/fjhx/iot/service/tda/impl/TdaDeviceServiceImpl.java
  8. 1 1
      hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java
  9. 41 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/deliver/DeliverGoodsPo.java
  10. 5 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java
  11. 5 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java
  12. 2 1
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java
  13. 9 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/purchase/PurchaseDetailMapper.java
  14. 9 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/WdlyService.java
  15. 26 10
      hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java
  16. 7 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/PurchaseDetailService.java
  17. 10 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java
  18. 19 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java
  19. 20 0
      hx-purchase/src/main/resources/mapper/purchase/PurchaseDetailMapper.xml
  20. 0 8
      hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractController.java
  21. 17 0
      hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractProductController.java
  22. 15 0
      hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductVo.java
  23. 4 0
      hx-sale/src/main/java/com/fjhx/sale/entity/documents/po/Documents.java
  24. 57 2
      hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java
  25. 0 8
      hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractMapper.java
  26. 17 0
      hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductMapper.java
  27. 4 2
      hx-sale/src/main/java/com/fjhx/sale/service/claim/impl/ClaimServiceImpl.java
  28. 15 0
      hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractProductService.java
  29. 0 8
      hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java
  30. 67 0
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java
  31. 1 10
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java
  32. 7 0
      hx-sale/src/main/java/com/fjhx/sale/service/documents/DocumentsService.java
  33. 81 2
      hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImpl.java
  34. 3 0
      hx-sale/src/main/java/com/fjhx/sale/service/pack/PackService.java
  35. 1 0
      hx-sale/src/main/java/com/fjhx/sale/service/pack/impl/PackServiceImpl.java
  36. 8 22
      hx-sale/src/main/resources/mapper/contract/ContractMapper.xml
  37. 41 0
      hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml
  38. 14 0
      hx-supply/src/main/java/com/fjhx/supply/controller/supplier/SupplierPriceController.java
  39. 1 1
      hx-supply/src/main/java/com/fjhx/supply/entity/supplier/dto/SupplierInfoSelectDto.java
  40. 10 0
      hx-supply/src/main/java/com/fjhx/supply/entity/supplier/dto/SupplierPriceDto.java
  41. 1 1
      hx-supply/src/main/java/com/fjhx/supply/entity/supplier/po/SupplierInfo.java
  42. 1 1
      hx-supply/src/main/java/com/fjhx/supply/entity/supplier/vo/SupplierPriceVo.java
  43. 7 0
      hx-supply/src/main/java/com/fjhx/supply/service/supplier/SupplierPriceService.java
  44. 19 1
      hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierPriceServiceImpl.java
  45. 5 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/deliver/vo/DeliverGoodsDetailsVo.java
  46. 1 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/po/OrderInfo.java
  47. 13 3
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WdlyServiceImpl.java
  48. 14 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsDetailsServiceImpl.java
  49. 1 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java
  50. 32 21
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java
  51. 4 0
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java
  52. 1 0
      hx-wms/src/main/resources/mapper/stock/StockMapper.xml

+ 44 - 0
hx-common/src/main/java/com/fjhx/common/controller/currency/CurrencyRateController.java

@@ -0,0 +1,44 @@
+package com.fjhx.common.controller.currency;
+
+import com.fjhx.common.entity.currency.po.CurrencyRate;
+import com.fjhx.common.service.currency.CurrencyRateService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 币种默认汇率 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-24
+ */
+@RestController
+@RequestMapping("/currencyRate")
+public class CurrencyRateController {
+
+    @Autowired
+    private CurrencyRateService currencyRateService;
+
+    /**
+     * 币种默认汇率列表
+     */
+    @PostMapping("/list")
+    public List<CurrencyRate> list() {
+        return currencyRateService.getList();
+    }
+
+    /**
+     * 币种默认汇率编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody List<CurrencyRate> currencyRateList) {
+        currencyRateService.edit(currencyRateList);
+    }
+
+}

+ 33 - 0
hx-common/src/main/java/com/fjhx/common/entity/currency/po/CurrencyRate.java

@@ -0,0 +1,33 @@
+package com.fjhx.common.entity.currency.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 币种默认汇率
+ * </p>
+ *
+ * @author
+ * @since 2023-04-24
+ */
+@Getter
+@Setter
+@TableName("currency_rate")
+public class CurrencyRate extends BasePo {
+
+    /**
+     * 币种类型
+     */
+    private String type;
+
+    /**
+     * 汇率
+     */
+    private BigDecimal rate;
+
+}

+ 16 - 0
hx-common/src/main/java/com/fjhx/common/mapper/currency/CurrencyRateMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.common.mapper.currency;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.common.entity.currency.po.CurrencyRate;
+
+/**
+ * <p>
+ * 币种默认汇率 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-04-24
+ */
+public interface CurrencyRateMapper extends BaseMapper<CurrencyRate> {
+
+}

+ 28 - 0
hx-common/src/main/java/com/fjhx/common/service/currency/CurrencyRateService.java

@@ -0,0 +1,28 @@
+package com.fjhx.common.service.currency;
+
+import com.fjhx.common.entity.currency.po.CurrencyRate;
+import com.ruoyi.common.core.service.BaseService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 币种默认汇率 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-24
+ */
+public interface CurrencyRateService extends BaseService<CurrencyRate> {
+
+    /**
+     * 币种默认汇率列表
+     */
+    List<CurrencyRate> getList();
+
+    /**
+     * 币种默认汇率编辑
+     */
+    void edit(List<CurrencyRate> currencyRateList);
+
+}

+ 32 - 0
hx-common/src/main/java/com/fjhx/common/service/currency/impl/CurrencyRateServiceImpl.java

@@ -0,0 +1,32 @@
+package com.fjhx.common.service.currency.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.entity.currency.po.CurrencyRate;
+import com.fjhx.common.mapper.currency.CurrencyRateMapper;
+import com.fjhx.common.service.currency.CurrencyRateService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 币种默认汇率 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-24
+ */
+@Service
+public class CurrencyRateServiceImpl extends ServiceImpl<CurrencyRateMapper, CurrencyRate> implements CurrencyRateService {
+
+    @Override
+    public List<CurrencyRate> getList() {
+        return list();
+    }
+
+    @Override
+    public void edit(List<CurrencyRate> currencyRateList) {
+        saveOrUpdateBatch(currencyRateList);
+    }
+
+}

+ 5 - 0
hx-common/src/main/resources/mapper/currency/CurrencyRateMapper.xml

@@ -0,0 +1,5 @@
+<?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.common.mapper.currency.CurrencyRateMapper">
+
+</mapper>

+ 3 - 0
hx-iot/src/main/java/com/fjhx/iot/service/tda/impl/TdaDeviceServiceImpl.java

@@ -80,6 +80,9 @@ public class TdaDeviceServiceImpl extends ServiceImpl<TdaDeviceMapper, TdaDevice
             }
 
             Object obj = redisCache.getCacheObject(RedisConstant.DEVICE_PREFIX + deviceId);
+            if (obj == null) {
+                continue;
+            }
 
             switch (deviceType) {
                 case "ebc":

+ 1 - 1
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java

@@ -117,7 +117,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
     @Override
     @DSTransactional
     public void addBatch(List<WorkOrder> workOrder) {
-        if(CollectionUtils.isNotEmpty(workOrder)){
+        if(CollectionUtils.isEmpty(workOrder)){
             throw new ServiceException("提交不能为空");
         }
         List<ContractProduct> upContractProduct = new ArrayList<>();

+ 41 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/deliver/DeliverGoodsPo.java

@@ -0,0 +1,41 @@
+package com.fjhx.purchase.entity.deliver;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 发货
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-13
+ */
+@Getter
+@Setter
+@TableName("deliver_goods")
+public class DeliverGoodsPo extends BasePo {
+
+    /**
+     * 物流公司编号
+     */
+    private String logisticsCompanyCode;
+
+    /**
+     * 物流单号
+     */
+    private String code;
+
+    /**
+     * 采购单号
+     */
+    private Long purchaseId;
+
+    /**
+     * 状态 0未到货 1到货
+     */
+    private Integer status;
+
+}

+ 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;
+
 }

+ 5 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java

@@ -30,4 +30,9 @@ public class SubscribeDetailSelectDto extends BaseSelectDto {
      * id集合
      */
     private List<Long> ids;
+
+    /**
+     * 收货仓库id过滤
+     */
+    private Long receiptWarehouseId;
 }

+ 2 - 1
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/vo/SubscribeDetailVo.java

@@ -4,6 +4,7 @@ import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -44,7 +45,7 @@ public class SubscribeDetailVo extends SubscribeDetail {
     /**
      * 采购数量
      */
-    private String purchaseCount;
+    private BigDecimal purchaseCount;
 
     /**
      * 维多利亚扩展json

+ 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);
+
 }

+ 9 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/WdlyService.java

@@ -1,8 +1,17 @@
 package com.fjhx.purchase.service;
 
+import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
+
 public interface WdlyService {
     /**
      * 修改发货记录为到货
      */
     void updateDeliverGoodsStatus(Long id);
+
+    /**
+     * 获取发货信息
+     *
+     * @return
+     */
+    DeliverGoodsPo getDeliverGoodsInfo(Long id);
 }

+ 26 - 10
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java

@@ -19,6 +19,7 @@ import com.fjhx.purchase.entity.arrival.dto.ArrivalSelectDto;
 import com.fjhx.purchase.entity.arrival.po.Arrival;
 import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
 import com.fjhx.purchase.entity.arrival.vo.ArrivalVo;
+import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
@@ -37,6 +38,7 @@ import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
+import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -113,11 +115,13 @@ 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.setBusinessId(purchase1.getId());//采购id
+            stockWait.setBusinessCode(purchase1.getCode());//采购id
             stockWait.setType(1);//入库
             stockWait.setStatus(0);//待入库
             stockWait.setBusinessType(StockWaitType.PURCHASE_ARRIVAL_IN.getDetailType());//采购到货
@@ -152,21 +156,30 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
     @DSTransactional
     @Override
     public void addByWdly(Arrival arrival) {
-
         arrival.setCode(CodeEnum.ARRIVAL.getCode());
+        arrival.setStatus(1);//设置到货
         this.save(arrival);
 
         //修改采购状态
-        Purchase purchase = new Purchase();
-        purchase.setArrivalStatus(arrival.getArrivalStatus());
-        purchase.setId(arrival.getPurchaseId());
-        purchaseService.updateById(purchase);
+//        Purchase purchase = new Purchase();
+//        purchase.setArrivalStatus(arrival.getArrivalStatus());
+//        purchase.setId(arrival.getPurchaseId());
+//        purchaseService.updateById(purchase);
 
         //创建待入库记录
         String victoriatouristJson = arrival.getVictoriatouristJson();
         JSONObject json = JSONObject.parseObject(victoriatouristJson);
+        Long deliverGoodsId = json.getLong("deliverGoodsId");
+
+        if(ObjectUtil.isEmpty(deliverGoodsId)){
+            throw new ServiceException("发货id不能为空");
+        }
+
+        //查询发货信息 获取 采购id
+        DeliverGoodsPo deliverGoodsInfo = wdlyService.getDeliverGoodsInfo(deliverGoodsId);
+
         //去申购单取入库仓库id
-        PurchaseDetail one = purchaseDetailService.getOne(q -> q.eq(PurchaseDetail::getPurchaseId, arrival.getPurchaseId()));
+        PurchaseDetail one = purchaseDetailService.getOne(q -> q.eq(PurchaseDetail::getPurchaseId, deliverGoodsInfo.getPurchaseId()));
         Long subscribeDetailId = one.getSubscribeDetailId();
         SubscribeDetail byId = subscribeDetailService.getById(subscribeDetailId);
         Subscribe byId1 = subscribeService.getById(byId.getSubscribeId());
@@ -181,16 +194,19 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         CompanyInfo logisticsCompanyCode = companyInfoService.getOne(q -> q.eq(CompanyInfo::getCode, json.getString("logisticsCompanyCode")));
         json.put("logisticsCompanyName",logisticsCompanyCode.getName());
         //修改发货记录的状态为到货
-        Long deliverGoodsId = json.getLong("deliverGoodsId");
         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);
 

+ 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);
+    }
+
 }

+ 19 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -9,12 +9,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
 import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.service.warehouse.WarehouseService;
@@ -25,6 +27,7 @@ import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -48,6 +51,8 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
     private ProductInfoService productInfoService;
     @Autowired
     WarehouseService warehouseService;
+    @Autowired
+    PurchaseDetailService purchaseDetailService;
 
     /**
      * 分页
@@ -82,6 +87,8 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
         if (StringUtils.isNotEmpty(dto.getKeyword())) {
             wrapper.like("t2", Subscribe::getCode, dto.getKeyword());
         }
+        //维多利亚扩展根据到货仓库id过滤
+        wrapper.eq("json_unquote(t2.victoriatourist_json -> '$.receiptWarehouseId')", dto.getReceiptWarehouseId());
         wrapper.orderByDesc("t1", SubscribeDetail::getCreateTime);
         Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<SubscribeDetailVo> list = page.getRecords();
@@ -106,6 +113,9 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
     public Page<SubscribeDetailVo> getPageByWdly(SubscribeDetailSelectDto dto) {
         Page<SubscribeDetailVo> page = getPage(dto);
         List<SubscribeDetailVo> records = page.getRecords();
+        if (ObjectUtil.isEmpty(records)) {
+            return page;
+        }
 
         //获取到货仓库id列表
         List<Long> wids = new ArrayList<>();
@@ -129,6 +139,15 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
                 }
             }
         }
+        //赋值采购数量
+        for (SubscribeDetailVo record : records) {
+            List<PurchaseDetail> list = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getSubscribeDetailId, record.getId()));
+            BigDecimal count = list.stream()
+                    .map(PurchaseDetail::getCount)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            record.setPurchaseCount(count);
+        }
+
         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;
 }

+ 57 - 2
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java

@@ -12,6 +12,7 @@ import com.fjhx.purchase.entity.purchase.enums.PurchaseDetailStatusEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
@@ -29,6 +30,9 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * 采购流程
@@ -51,6 +55,8 @@ public class PurchaseFlowByWdly extends FlowDelegate {
     private SubscribeService subscribeService;
     @Autowired
     private SubscribeDetailService subscribeDetailService;
+    @Autowired
+    private ContractProductService contractProductService;
 
     @Override
     public String getFlowKey() {
@@ -99,7 +105,7 @@ public class PurchaseFlowByWdly extends FlowDelegate {
             JSONObject json1 = JSONObject.parseObject(victoriatouristJson1);
             json1.put("receiptWarehouseId",receiptWarehouseId);
             purchase.setVictoriatouristJson(json1.toJSONString());
-            purchaseService.save(purchase);
+            purchaseService.updateById(purchase);
         }
         DynamicDataSourceContextHolder.poll();
         return purchase.getId();
@@ -113,7 +119,56 @@ public class PurchaseFlowByWdly extends FlowDelegate {
      */
     @Override
     public void end(Long flowId, Long businessId, JSONObject submitData) {
-        purchaseFlow.end(flowId,businessId,submitData);
+        //修改申购明细状态
+        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId,businessId));
+        Map<Long, PurchaseDetail> purchaseDetailMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetail::getSubscribeDetailId, Function.identity()));
+        List<Long> subscribeDetailIds = purchaseDetailList.stream().map(PurchaseDetail::getSubscribeDetailId).collect(Collectors.toList());
+        List<SubscribeDetail> subscribeDetails = subscribeDetailService.listByIds(subscribeDetailIds);
+        for (SubscribeDetail subscribeDetail : subscribeDetails) {
+            PurchaseDetail purchaseDetail = purchaseDetailMap.get(subscribeDetail.getId());
+            if(purchaseDetail.getCount()==subscribeDetail.getCount()){
+                //修改为已采购
+                subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
+            }else{
+                //修改为部分采购
+                subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
+            }
+        }
+        subscribeDetailService.updateBatchById(subscribeDetails);
+//        purchaseFlow.end(flowId,businessId,submitData);
+
+        //通过业务ID查询采购数据
+        Purchase purchase = purchaseService.getById(businessId);
+        if(ObjectUtils.isEmpty(purchase)){
+            throw new ServiceException("采购单不存在");
+        }
+        //查询采购产品
+//        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId,businessId));
+        List<ContractProduct> upContractProduct = new ArrayList<>();
+        for(PurchaseDetail p:purchaseDetailList){
+            if(ObjectUtils.isNotEmpty(p.getDataResourceId())&&
+                    p.getDataResource()== PurchaseDataResourceEnum.DATA_RESOURCE_1.getKey()){//如果采购的是外销合同
+                ContractProduct contractProduct = contractProductService.getById(p.getDataResourceId());
+                BigDecimal expendQuantity = contractProduct.getExpendQuantity().subtract(p.getCount());
+                if(expendQuantity.compareTo(BigDecimal.ZERO)< 1){//小于0不让继续执行
+                    throw new ServiceException("采购数量不得大于外销合同数量");
+                }
+                contractProduct.setExpendQuantity(expendQuantity);
+                upContractProduct.add(contractProduct);
+            }
+        }
+        if(CollectionUtils.isNotEmpty(upContractProduct)){//扣减销售合同数量
+            contractProductService.updateBatchById(upContractProduct);
+        }
+        //修改采购状态为审批通过
+        purchase.setPurchaseStatus(PurchaseStatusEnum.PASS.getKey());
+        purchase.setApprovedDate(new Date());
+        purchaseService.updateById(purchase);
+        //修改采购明细为待采购
+        PurchaseDetail detail = new PurchaseDetail();
+        detail.setStatus(PurchaseDetailStatusEnum.PASS.getKey());
+        purchaseDetailService.update(detail,Wrappers.<PurchaseDetail>query()
+                .lambda().eq(PurchaseDetail::getPurchaseId,purchase.getId()));
     }
 
 }

+ 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);
 }

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

@@ -99,6 +99,7 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
     @Override
     @DSTransactional
     public void delete(Long id) {
+        //通过流水ID查找出到账认领的数据
         Claim claim = this.getOne(Wrappers.<Claim>query().lambda().eq(Claim::getBusinessId,id));
         if(ObjectUtils.isNotEmpty(claim.getBusinessId())){
             //更新流水数据为认领状态
@@ -106,9 +107,10 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
             water.setId(claim.getBusinessId());
             water.setIsClaim(0);//未认领状态
             accountRunningWaterService.updateById(water);
+            this.removeById(claim.getId());
+            claimContractService.remove(Wrappers.<ClaimContract>query().lambda().eq(ClaimContract::getClaimId,claim.getId()));
         }
-        this.removeById(Wrappers.<Claim>query().lambda().eq(Claim::getBusinessId,id));
-        claimContractService.remove(Wrappers.<ClaimContract>query().lambda().eq(ClaimContract::getClaimId,claim.getId()));
+
     }
 
 }

+ 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

+ 7 - 0
hx-sale/src/main/java/com/fjhx/sale/service/documents/DocumentsService.java

@@ -7,6 +7,8 @@ import com.fjhx.sale.entity.documents.vo.DocumentsVo;
 import com.fjhx.sale.entity.documents.dto.DocumentsSelectDto;
 import com.fjhx.sale.entity.documents.dto.DocumentsDto;
 
+import java.util.Map;
+
 
 /**
  * <p>
@@ -43,4 +45,9 @@ public interface DocumentsService extends BaseService<Documents> {
      */
     void delete(Long id);
 
+    /**
+     * 生成PDF
+     * @return
+     */
+    Map<String,Object> generatePdf(Long id);
 }

+ 81 - 2
hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImpl.java

@@ -7,14 +7,24 @@ 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;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -24,8 +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.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -43,10 +54,25 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
     private DocumentsProductService documentsProductService;
 
     @Autowired
+    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);
+
     /**
      * 单证表分页
      */
@@ -117,4 +143,57 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
         documentsTransportService.remove(Wrappers.<DocumentsTransport>lambdaQuery().eq(DocumentsTransport::getDocumentsId,id));
     }
 
+    /**
+     * 生成PDF---商业发票
+     * @return
+     */
+    @Override
+    public Map<String, Object> generatePdf(Long id) {
+        Map<String,Object> map = new HashMap<>();
+        //查询单证
+        Documents documents = this.getById(id);
+        if(ObjectUtil.isNotEmpty(documents)){
+            throw new ServiceException("单证不存在");
+        }
+        //查询合同
+        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("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;
+    }
 }

+ 3 - 0
hx-sale/src/main/java/com/fjhx/sale/service/pack/PackService.java

@@ -7,6 +7,8 @@ import com.fjhx.sale.entity.pack.vo.PackVo;
 import com.fjhx.sale.entity.pack.dto.PackSelectDto;
 import com.fjhx.sale.entity.pack.dto.PackDto;
 
+import java.util.Map;
+
 
 /**
  * <p>
@@ -43,4 +45,5 @@ public interface PackService extends BaseService<Pack> {
      */
     void delete(Long id);
 
+
 }

+ 1 - 0
hx-sale/src/main/java/com/fjhx/sale/service/pack/impl/PackServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 
 /**

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

@@ -20,31 +20,17 @@
                 FROM
                     contract t1
                 LEFT JOIN contract_product t2 ON t1.id = t2.contract_id
-                WHERE
-                    buy_corporation_id = #{customerId}
+        <where>
+            <if test="customerId neq null and customerId neq '' ">
+                buy_corporation_id = #{customerId}
+            </if>
+        </where>
             ) t1
         WHERE t1.sumPackQuantity &lt; t1.cpQuantity
-        AND t1.`status` &gt;=30 &lt;999
+        AND t1.`status` &gt;=30
+        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
-                    buy_corporation_id = #{customerId}
-            ) 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;
+
 }

+ 1 - 1
hx-supply/src/main/java/com/fjhx/supply/entity/supplier/po/SupplierInfo.java

@@ -26,7 +26,7 @@ public class SupplierInfo extends BasePo {
     /**
      * 供应商类型 1贸易商 2工厂
      */
-    private Integer type;
+    private String type;
 
     /**
      * 供应商名称

+ 1 - 1
hx-supply/src/main/java/com/fjhx/supply/entity/supplier/vo/SupplierPriceVo.java

@@ -58,7 +58,7 @@ public class SupplierPriceVo extends SupplierPrice {
     /**
      * 供应商类型 1贸易商 2工厂
      */
-    private Integer supplierType;
+    private String supplierType;
 
     /**
      * 供应商名称

+ 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));
+    }
+
+
+}

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

@@ -42,6 +42,11 @@ public class DeliverGoodsDetailsVo extends DeliverGoodsDetails {
     private BigDecimal count;
 
     /**
+     * 产品类型定义
+     */
+    private Integer definition;
+
+    /**
      * 在途数量
      */
     private BigDecimal transitQuantity;

+ 1 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/po/OrderInfo.java

@@ -23,7 +23,7 @@ public class OrderInfo extends BasePo {
     /**
      * 订单类型(1线上 2线下 3京东订单 4补偿 5补发 6线下退换货 7采购退货)
      */
-    private Integer type;
+    private String type;
 
     /**
      * 客户id

+ 13 - 3
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WdlyServiceImpl.java

@@ -1,20 +1,30 @@
 package com.fjhx.victoriatourist.service;
 
-import cn.hutool.extra.spring.SpringUtil;
+import cn.hutool.core.bean.BeanUtil;
+import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
 import com.fjhx.purchase.service.WdlyService;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
 import com.fjhx.victoriatourist.service.deliver.DeliverGoodsService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
 public class WdlyServiceImpl implements WdlyService {
+    @Autowired
+    DeliverGoodsService deliverGoodsService;
+
     /**更新发货记录的状态为到货*/
     @Override
     public void updateDeliverGoodsStatus(Long id) {
-        DeliverGoodsService deliverGoodsService = SpringUtil.getBean(DeliverGoodsService.class);
-
         DeliverGoods byId = deliverGoodsService.getById(id);
         byId.setStatus(1);
         deliverGoodsService.updateById(byId);
     }
+
+    @Override
+    public DeliverGoodsPo getDeliverGoodsInfo(Long id) {
+        DeliverGoods byId = deliverGoodsService.getById(id);
+        DeliverGoodsPo deliverGoodsPo = BeanUtil.copyProperties(byId, DeliverGoodsPo.class);
+        return deliverGoodsPo;
+    }
 }

+ 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;
     }
 

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

@@ -101,6 +101,7 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
                 deliverGoodsDetailsVo.setName(productInfo.getName());
                 deliverGoodsDetailsVo.setSpec(productInfo.getSpec());
                 deliverGoodsDetailsVo.setUnit(productInfo.getUnit());
+                deliverGoodsDetailsVo.setDefinition(productInfo.getDefinition());
             }
             //赋值采购数量
             PurchaseDetail purchaseDetail = purchaseDetailMap.get(deliverGoodsDetailsVo.getPurchaseDetailId());

+ 32 - 21
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,11 +178,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());
         });
 
@@ -197,12 +197,13 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     @Override
     public Page<StockVo> pageByProductSpu(StockSelectDto dto) {
         IWrapper<Stock> wrapper = getWrapper();
-        wrapper.orderByDesc("s", Stock::getId);
         wrapper.eq(Stock::getWarehouseId, dto.getId());
         wrapper.like(Stock::getQuantity, dto.getKeyword());
         wrapper.eq("pi.definition", dto.getDefinition());
-        wrapper.isNotNull("pi.product_spu_id");
+        wrapper.isNotNull("ps.id");
         wrapper.groupBy("pi.product_spu_id");
+        wrapper.orderByDesc("s", Stock::getId);
+
 
         Page<StockVo> page = this.baseMapper.pageByProductSpu(dto.getPage(), wrapper);
         List<StockVo> stockVos = page.getRecords();
@@ -228,11 +229,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());
         });
 
@@ -311,7 +312,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);
             }
@@ -378,9 +379,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);
     }
@@ -412,9 +418,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);
     }

+ 4 - 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);
 
         //创建出入库记录

+ 1 - 0
hx-wms/src/main/resources/mapper/stock/StockMapper.xml

@@ -51,6 +51,7 @@
             stock s
                 LEFT JOIN bytesailing_item.product_info pi ON s.product_id = pi.id
                 LEFT JOIN bytesailing_item.product_spu ps ON pi.product_spu_id = ps.id
+            ${ew.customSqlSegment}
     </select>
 
 </mapper>