浏览代码

改动过的

huanglizhi 1 年之前
父节点
当前提交
22153cf005

+ 5 - 0
module-erp/pom.xml

@@ -33,5 +33,10 @@
             <artifactId>wechatpay-java</artifactId>
             <version>0.2.12</version>
         </dependency>
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-pay</artifactId>
+            <version>4.6.0</version>
+        </dependency>
     </dependencies>
 </project>

+ 2 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryProductDTO.java

@@ -33,6 +33,8 @@ public class StockInventoryProductDTO implements Serializable {
     @NotNull(message = "SKUID不能为空")
     private Long productId;
 
+    private Long goodsId;
+
     /**
      * 盘点数量
      */

+ 3 - 0
module-erp/src/main/java/com/hys/app/model/erp/vo/OrderVO.java

@@ -23,6 +23,7 @@ import javax.validation.constraints.Min;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
@@ -116,5 +117,7 @@ public class OrderVO extends OrderDO {
 
     @ApiModelProperty(name = "subtract_stock", value = "商家对公打款信息")
     private  MerchantPayInfo merchantPayInfo;
+
+   private BigDecimal totalAmount;
 }
 

+ 2 - 0
module-erp/src/main/java/com/hys/app/model/erp/vo/StockInventoryVO.java

@@ -79,4 +79,6 @@ public class StockInventoryVO implements Serializable {
     @ApiModelProperty(name = "creator_id", value = "盘点人ID", required = true)
     @NotNull(message = "盘点人ID不能为空")
     private Long creatorId;
+
+    private String sn;
 }

+ 16 - 0
module-erp/src/main/java/com/hys/app/pay/wx/WxPayConfigMy.java

@@ -0,0 +1,16 @@
+package com.hys.app.pay.wx;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ConfigurationProperties(prefix = "wxpay")
+@Data
+public class WxPayConfigMy {
+    private String appId;
+    private String mchId;
+    private String mchKey;
+    private String keyPath;
+
+}

+ 27 - 0
module-erp/src/main/java/com/hys/app/pay/wx/WxPayServiceConfig.java

@@ -0,0 +1,27 @@
+package com.hys.app.pay.wx;
+
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class WxPayServiceConfig {
+
+    @Autowired
+    private WxPayConfigMy wxPayConfigMy;
+
+    @Bean
+    public WxPayService wxPayService() {
+        WxPayService wxPayService = new WxPayServiceImpl();
+        WxPayConfig payConfig = new WxPayConfig();
+        payConfig.setAppId(wxPayConfigMy.getAppId());
+        payConfig.setMchId(wxPayConfigMy.getMchId());
+        payConfig.setMchKey(wxPayConfigMy.getMchKey());
+        payConfig.setKeyPath(wxPayConfigMy.getKeyPath());
+        wxPayService.setConfig(payConfig);
+        return wxPayService;
+    }
+}

+ 25 - 0
module-erp/src/main/java/com/hys/app/pay/wx/WxPayServiceMy.java

@@ -0,0 +1,25 @@
+package com.hys.app.pay.wx;
+
+import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
+import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
+import com.github.binarywang.wxpay.service.WxPayService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WxPayServiceMy {
+
+    @Autowired
+    private WxPayService wxPayService;
+
+    public WxPayUnifiedOrderResult createOrder(String orderId, String description, int totalFee, String ip, String notifyUrl) throws Exception {
+        WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
+        request.setOutTradeNo(orderId);
+        request.setBody(description);
+        request.setTotalFee(totalFee);
+        request.setSpbillCreateIp(ip);
+        request.setNotifyUrl(notifyUrl);
+        request.setTradeType("JSAPI"); // 或者 "NATIVE", "APP" 等
+        return wxPayService.unifiedOrder(request);
+    }
+}

+ 12 - 1
module-erp/src/main/java/com/hys/app/service/erp/impl/OrderManagerImpl.java

@@ -2,6 +2,7 @@ package com.hys.app.service.erp.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -38,6 +39,7 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -74,7 +76,16 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
     @Override
     public WebPage<OrderVO> list(OrderQueryParams queryParams) {
         WebPage<OrderDO> page = baseMapper.selectPage(queryParams);
-        return converter.convertPage(page);
+        WebPage<OrderVO> orderVOWebPage = converter.convertPage(page);
+        for (OrderVO datum : orderVOWebPage.getData()) {
+            List<OrderCustomerFee> list = orderCustomerFeeManager.list(new LambdaQueryWrapper<OrderCustomerFee>().eq(OrderCustomerFee::getOrderId, datum.getId()));
+            if (CollectionUtil.isNotEmpty(list)){
+                datum.setTotalAmount(new BigDecimal(datum.getRealPrice()).add(list.stream().map(OrderCustomerFee::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add)));
+            }else {
+                datum.setTotalAmount(new BigDecimal(datum.getRealPrice()));
+            }
+        }
+        return orderVOWebPage;
     }
 
     @Override

+ 27 - 21
module-erp/src/main/java/com/hys/app/service/erp/impl/StockInventoryManagerImpl.java

@@ -171,6 +171,9 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
         stockInventory.setStatus(DamageinventoryEnum.HAS_HANDLE);
         updateById(stockInventory);
         List<StockInventoryProduct> goodsList = this.stockInventoryProductManager.list(id);
+        if (CollUtil.isEmpty(goodsList)){
+            throw new ServiceException("未录入任何商品");
+        }
         List<Long> collect = goodsList.stream().map(StockInventoryProduct::getProductId).collect(Collectors.toList());
         List<ProductStockDO> list = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
                 .eq(ProductStockDO::getWarehouseId, stockInventory.getWarehouseId())
@@ -224,28 +227,32 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
         StockInventoryVO stockInventoryVO = BeanUtil.copyProperties(stockInventory, StockInventoryVO.class);
         //获取库存盘点单商品信息
         List<StockInventoryProduct> goodsList = this.stockInventoryProductManager.list(id);
-        List<Long> collect = goodsList.stream().map(StockInventoryProduct::getProductId).collect(Collectors.toList());
-        List<ProductStockDO> page = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
-                .eq(ProductStockDO::getWarehouseId, stockInventory.getWarehouseId())
-                .in(ProductStockDO::getProductId, collect));
-        List<StockInventoryProductDTO> beanList = BeanUtils.toBean(goodsList, StockInventoryProductDTO.class);
-        for (StockInventoryProductDTO dto : beanList) {
-            ProductStockDO aDo = page.stream().filter(item -> item.getProductId().equals(dto.getProductId())).findFirst().get();
-            ProductVO productVO = BeanUtil.copyProperties(productManager.getById(dto.getProductId()), ProductVO.class);
-            dto.setProductVO(productVO);
-            GoodsVO goodsVO = BeanUtil.copyProperties(goodsManager.getById(productVO.getGoodsId()), GoodsVO.class);
-            dto.setUsableStock(aDo.getUsableStock());
-            dto.setActualStock(aDo.getActualStock());
-            List<ItemSnCodeDO> list2 = itemSnCodeManager.list(new LambdaQueryWrapper<ItemSnCodeDO>().eq(ItemSnCodeDO::getItemId, dto.getId()));
-            if (CollUtil.isNotEmpty(list2)) {
-                List<Long> collected = list2.stream().map(ItemSnCodeDO::getSnCodeId).collect(Collectors.toList());
-                dto.setSnCodeList(goodsSnManager.list(new LambdaQueryWrapper<GoodsSnDO>().in(GoodsSnDO::getId, collected)));
+        if (CollUtil.isNotEmpty(goodsList)) {
+
+            List<Long> collect = goodsList.stream().map(StockInventoryProduct::getProductId).collect(Collectors.toList());
+            List<ProductStockDO> page = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
+                    .eq(ProductStockDO::getWarehouseId, stockInventory.getWarehouseId())
+                    .in(ProductStockDO::getProductId, collect));
+            List<StockInventoryProductDTO> beanList = BeanUtils.toBean(goodsList, StockInventoryProductDTO.class);
+            for (StockInventoryProductDTO dto : beanList) {
+                ProductStockDO aDo = page.stream().filter(item -> item.getProductId().equals(dto.getProductId())).findFirst().get();
+                ProductVO productVO = BeanUtil.copyProperties(productManager.getById(dto.getProductId()), ProductVO.class);
+                dto.setProductVO(productVO);
+                GoodsVO goodsVO = BeanUtil.copyProperties(goodsManager.getById(productVO.getGoodsId()), GoodsVO.class);
+                dto.setUsableStock(aDo.getUsableStock());
+                dto.setActualStock(aDo.getActualStock());
+                List<ItemSnCodeDO> list2 = itemSnCodeManager.list(new LambdaQueryWrapper<ItemSnCodeDO>().eq(ItemSnCodeDO::getItemId, dto.getId()));
+                if (CollUtil.isNotEmpty(list2)) {
+                    List<Long> collected = list2.stream().map(ItemSnCodeDO::getSnCodeId).collect(Collectors.toList());
+                    dto.setSnCodeList(goodsSnManager.list(new LambdaQueryWrapper<GoodsSnDO>().in(GoodsSnDO::getId, collected)));
+                }
+                List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>().eq(AreaStock::getProductStockId, dto.getProductStockId()));
+                dto.setAreaStockList(areaStockList);
+                dto.setGoodsId(productVO.getGoodsId());
+                dto.setGoodsVO(goodsVO);
             }
-            List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>().eq(AreaStock::getProductStockId, dto.getProductStockId()));
-            dto.setAreaStockList(areaStockList);
-            dto.setGoodsVO(goodsVO);
+            stockInventoryVO.setProductList(beanList);
         }
-        stockInventoryVO.setProductList(beanList);
         return stockInventoryVO;
     }
 
@@ -268,7 +275,6 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
     }
 
 
-
     /**
      * 库存盘点单提交审核
      *

+ 6 - 0
server/src/main/resources/application-local.yml

@@ -78,3 +78,9 @@ alipay:
   #签名方式,签名算法,推荐:RSA2
   signType: RSA2
 
+wxpay:
+  appId: your_app_id
+  mchId: your_merchant_id
+  mchKey: your_merchant_key
+  keyPath: /path/to/your/apiclient_cert.p12
+

+ 7 - 1
server/src/main/resources/application-test.yml

@@ -75,4 +75,10 @@ alipay:
   #编码格式 推荐:utf-8
   charset: UTF-8
   #签名方式,签名算法,推荐:RSA2
-  signType: RSA2
+  signType: RSA2
+
+wxpay:
+  appId: your_app_id
+  mchId: your_merchant_id
+  mchKey: your_merchant_key
+  keyPath: /path/to/your/apiclient_cert.p12