From 64c137c7d5bcdba2ff6be176f58e40e71d500aa5 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 19 九月 2025 18:46:55 +0800
Subject: [PATCH] 拉卡拉支付

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java      |   98 +++++++++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java         |   58 ++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java               |   12 +
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java                 |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java                   |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/wxPay/config/WxConfig.java                        |    2 
 ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml                       |   17 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java |   10 -
 ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java                          |  108 +++++++-------
 ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml                             |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java                         |   20 +-
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java            |    2 
 ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml               |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java                        |   32 ++++
 14 files changed, 293 insertions(+), 80 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
index 6135d0b..be6b761 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
@@ -1,21 +1,32 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.lkl.laop.sdk.request.V3LabsTransPreorderRequest;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.dto.AddProcurementDto;
+import com.ruoyi.system.model.TCrmClinic;
+import com.ruoyi.system.model.TCrmSupplier;
+import com.ruoyi.system.model.TErpGoods;
 import com.ruoyi.system.query.TErpGoodsQuery;
 import com.ruoyi.system.query.TErpProcurementQuery;
+import com.ruoyi.system.service.TCrmClinicService;
 import com.ruoyi.system.service.TErpProcurementService;
 import com.ruoyi.system.service.TErpSupplierWarehousingService;
 import com.ruoyi.system.vo.TErpGoodsVO;
 import com.ruoyi.system.vo.TErpProcurementDetailVo;
 import com.ruoyi.system.vo.TErpProcurementVo;
+import com.ruoyi.web.core.config.LakalaConfig;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
 
 /**
  * <p>
@@ -33,11 +44,14 @@
 
     private final TErpProcurementService erpProcurementService;
     private final TokenService tokenService;
+    private final TCrmClinicService crmClinicService;
+
 
     @Autowired
-    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService) {
+    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService,TCrmClinicService crmClinicService) {
         this.erpProcurementService = erpProcurementService;
         this.tokenService = tokenService;
+        this.crmClinicService = crmClinicService;
     }
 
 
@@ -61,5 +75,47 @@
         return R.ok(erpProcurementService.detail(id,user,goodsName));
     }
 
+
+    /**
+     * 获取erp问题上报管理列表
+     */
+    @ApiOperation(value = "采购获取商品分页列表")
+    @PostMapping(value = "/pageGoodsPageList")
+    public R<PageInfo<TErpGoods>> pageList(@RequestBody TErpGoodsQuery query) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        return R.ok(erpProcurementService.pageGoodsPageList(query,user));
+    }
+
+
+    /**
+     * 获取erp问题上报管理列表
+     */
+    @ApiOperation(value = "采购获取库存不足列表")
+    @PostMapping(value = "/inventoryNotEnoughList")
+    public R<List<TErpGoodsVO>> inventoryNotEnoughList() {
+        SysUser user = tokenService.getLoginUser().getUser();
+        return R.ok(erpProcurementService.inventoryNotEnoughList(user));
+    }
+
+
+
+    @ApiOperation(value = "添加采购")
+    @PostMapping(value = "/addProcurement")
+    public R<String> addProcurement(@RequestBody @Valid List<AddProcurementDto> dtos) {
+        SysUser user = tokenService.getLoginUser().getUser();
+        Integer roleType = user.getRoleType();
+        String clinicSupplierId=null;
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            clinicSupplierId = crmClinic.getId();
+        }
+        return R.ok(erpProcurementService.addProcurement(clinicSupplierId,user,dtos));
+    }
+
+
+
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java
index 14793b8..3b3a210 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpSupplierWarehousingController.java
@@ -65,10 +65,6 @@
     @ApiOperation(value = "供应商获取库存分页列表")
     @PostMapping(value = "/pageList")
     public R<PageInfo<TErpGoodsVO>> pageList(@RequestBody TErpGoodsQuery query) {
-        V3LabsTransPreorderRequest request = new V3LabsTransPreorderRequest();
-        request.setLklAppId(LakalaConfig.appId);
-        request.setMerchantNo(LakalaConfig.MerchantNo);
-        request.setTermNo(LakalaConfig.TermNo);
 
         SysUser user = tokenService.getLoginUser().getUser();
         Integer roleType = user.getRoleType();
@@ -161,11 +157,11 @@
     }
     @ApiOperation(value = "有效期预警商品选择")
     @GetMapping(value = "/pageInventoryGoodsList")
-    public R<List<TErpGoodsInventoryVO>> pageInventoryGoodsList(@RequestParam String warehouseId,@RequestParam(required = false)String batchNumber) {
+    public R<List<TErpGoodsInventoryVO>> pageInventoryGoodsList(@RequestParam String warehouseId,@RequestParam(required = false)String batchId) {
         SysUser user = tokenService.getLoginUser().getUser();
         List<TErpGoodsInventoryVO> tErpGoodsInventoryVOS = erpGoodsService.pageInventoryGoodsList(warehouseId, user);
-        if(batchNumber!=null && !"".equals(batchNumber)){
-            tErpGoodsInventoryVOS = tErpGoodsInventoryVOS.stream().filter(e->e.getBatchNumber().equals(batchNumber)).collect(Collectors.toList());
+        if(batchId!=null && !"".equals(batchId)){
+            tErpGoodsInventoryVOS = tErpGoodsInventoryVOS.stream().filter(e->e.getId().equals(batchId)).collect(Collectors.toList());
         }
         return R.ok(tErpGoodsInventoryVOS);
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
index c0ab673..3c38954 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
@@ -10,16 +10,16 @@
 @Component
 public class TaskUtil {
 
-    @Scheduled(cron = "0 0 0 * * ?")
-    public void dayOfProportionBill() {
-        try {
-
-
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
+//    @Scheduled(cron = "0 0 0 * * ?")
+//    public void dayOfProportionBill() {
+//        try {
+//
+//
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java
new file mode 100644
index 0000000..f4330ac
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/AddProcurementDto.java
@@ -0,0 +1,32 @@
+package com.ruoyi.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("添加采购Dto")
+public class AddProcurementDto {
+    @ApiModelProperty("商品id")
+    @NotBlank(message = "商品id不能为空")
+    private String goodsId;
+
+    @ApiModelProperty("售价")
+    private BigDecimal salesAmount;
+
+
+    @ApiModelProperty("采购数量")
+    @NotBlank(message = "采购数量不能为空")
+    private Integer purchaseCount;
+
+
+    private String supplierId;
+
+    private BigDecimal goodsSalesAmount;
+
+    @ApiModelProperty("状态 1草稿")
+    private Integer state;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java
index 77b7890..facc599 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TErpProcurementMapper.java
@@ -4,7 +4,9 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.model.TErpProcurement;
+import com.ruoyi.system.query.TErpGoodsQuery;
 import com.ruoyi.system.query.TErpProcurementQuery;
+import com.ruoyi.system.vo.TErpGoodsVO;
 import com.ruoyi.system.vo.TErpProcurementVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -22,4 +24,8 @@
 
     List<TErpProcurementVo> pageList(@Param("query") TErpProcurementQuery query, @Param("pageInfo") PageInfo<TErpProcurementVo> pageInfo, @Param("user") SysUser user, @Param("sTime") String sTime, @Param("eTime") String eTime, @Param("supplierClinicId") String supplierClinicId);
 
+
+    List<TErpGoodsVO> inventoryNotEnoughList(@Param("user") SysUser user);
+
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
index 0c4adef..1f874a9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TErpProcurementService.java
@@ -3,11 +3,17 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.dto.AddProcurementDto;
+import com.ruoyi.system.model.TErpGoods;
 import com.ruoyi.system.model.TErpProcurement;
 import com.ruoyi.system.query.TErpGoodsQuery;
 import com.ruoyi.system.query.TErpProcurementQuery;
+import com.ruoyi.system.vo.TErpGoodsVO;
 import com.ruoyi.system.vo.TErpProcurementDetailVo;
 import com.ruoyi.system.vo.TErpProcurementVo;
+
+import javax.validation.Valid;
+import java.util.List;
 
 /**
  * <p>
@@ -25,5 +31,11 @@
     TErpProcurementDetailVo detail(String id, SysUser user, String goodsName);
 
 
+    PageInfo<TErpGoods> pageGoodsPageList(TErpGoodsQuery query, SysUser user);
+
+    List<TErpGoodsVO> inventoryNotEnoughList(SysUser user);
+
+
+    String addProcurement(String clinicSupplierId, SysUser user, @Valid List<AddProcurementDto> dtos);
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
index 0472c89..b51fd6c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpGoodsServiceImpl.java
@@ -304,7 +304,7 @@
 
                 TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods();
                 tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
-                tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing.getId());
+                tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId());
                 tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId());
                 tErpSupplierOutboundGoods.setOutboundCount(count);
                 tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count)));
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
index 407809b..99a65ec 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpProcurementServiceImpl.java
@@ -3,17 +3,18 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.BaseModel;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.dto.AddProcurementDto;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.TErpGoodsQuery;
 import com.ruoyi.system.query.TErpProcurementQuery;
+import com.ruoyi.system.service.TErpGoodsService;
 import com.ruoyi.system.service.TErpProcurementService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.system.vo.TErpProcurementDetailNextVo;
-import com.ruoyi.system.vo.TErpProcurementDetailVo;
-import com.ruoyi.system.vo.TErpProcurementVo;
-import com.ruoyi.system.vo.ValidityPeriodWarningVo;
+import com.ruoyi.system.vo.*;
 import lombok.SneakyThrows;
 import org.apache.commons.io.IOUtils;
 import org.apache.http.HttpResponse;
@@ -39,6 +40,7 @@
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -66,6 +68,15 @@
 
     @Resource
     private SysUserMapper sysUserMapper;
+
+    @Resource
+    private TErpGoodsMapper erpGoodsMapper;
+
+    @Resource
+    private TErpGoodsTypeMapper erpGoodsTypeMapper;
+
+    @Resource
+    private TErpGoodsUnitMapper erpGoodsUnitMapper;
 
 
 
@@ -206,4 +217,83 @@
         return tErpProcurementVo;
     }
 
+    @Override
+    public PageInfo<TErpGoods> pageGoodsPageList(TErpGoodsQuery query, SysUser user) {
+        PageInfo<TErpGoods> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        PageInfo<TErpGoods> p =erpGoodsMapper.selectPage(pageInfo,new LambdaQueryWrapper<TErpGoods>().eq(TErpGoods::getGoodsSource,1).isNotNull(TErpGoods::getClinicPurchasePrice).orderByDesc(BaseModel::getCreateTime));
+        List<TErpGoods> list = p.getRecords();
+
+        List<String> typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList());
+        if(!typeIds.isEmpty()){
+            List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds);
+            for (TErpGoods tErpGoodsVO : list) {
+                typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName()));
+                tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName());
+            }
+        }
+        pageInfo.setRecords( list);
+        return pageInfo;
+    }
+
+    @Override
+    public List<TErpGoodsVO> inventoryNotEnoughList(SysUser user) {
+        List<TErpGoodsVO> list =  this.baseMapper.inventoryNotEnoughList(user);
+
+        return null;
+    }
+
+    @Override
+    public String addProcurement(String clinicSupplierId, SysUser user, List<AddProcurementDto> dtos) {
+        List<String> goodsIds = dtos.stream().map(AddProcurementDto::getGoodsId).collect(Collectors.toList());
+        List<TErpGoods> tErpGoods = erpGoodsMapper.selectBatchIds(goodsIds);
+        for (AddProcurementDto dto : dtos) {
+            TErpGoods tErpGoodsVO = tErpGoods.stream().filter(t -> t.getId().equals(dto.getGoodsId())).findFirst().get();
+            dto.setSupplierId(tErpGoodsVO.getSupplierClinicId());
+            dto.setGoodsSalesAmount(tErpGoodsVO.getSalesAmount());
+        }
+        // 供应商分组
+        Map<String, List<AddProcurementDto>> supplierClinicIdListMap = dtos.stream().collect(Collectors.groupingBy(AddProcurementDto::getSupplierId));
+        for (Map.Entry<String, List<AddProcurementDto>> entry : supplierClinicIdListMap.entrySet()) {
+            String supplierClinicId = entry.getKey();
+            TCrmSupplier supplier = crmSupplierMapper.selectById(supplierClinicId);
+            List<AddProcurementDto> value = entry.getValue();
+            TErpProcurement tErpProcurement = new TErpProcurement();
+            tErpProcurement.setClinicId(clinicSupplierId);
+            tErpProcurement.setProcurementCode("C"+DateUtils.dateTimeNow());
+            tErpProcurement.setSupplierId(supplierClinicId);
+
+            tErpProcurement.setTermNo(supplier.getTermNo());
+            tErpProcurement.setMerchantNo(supplier.getRecvMerchantNo());
+            tErpProcurement.setPayMoney(value.stream().map(AddProcurementDto::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+            AddProcurementDto addProcurementDto = value.get(0);
+            if(addProcurementDto.getState()!=null && addProcurementDto.getState()==1){
+                tErpProcurement.setStatus(1);
+            }else {
+                tErpProcurement.setStatus(2);
+            }
+            this.save(tErpProcurement);
+            for (AddProcurementDto dto : value) {
+                TErpProcurementGoods tErpProcurementGoods = new TErpProcurementGoods();
+                tErpProcurementGoods.setProcurementId(tErpProcurement.getId());
+                TErpGoods goods = tErpGoods.stream().filter(e -> e.getId().equals(dto.getGoodsId())).findFirst().get();
+                tErpProcurementGoods.setGoodsId(dto.getGoodsId());
+                tErpProcurementGoods.setGoodsName(goods.getGoodsName());
+                tErpProcurementGoods.setSupplierName(supplier.getSupplierName());
+                tErpProcurementGoods.setQuasiNumber(goods.getQuasiNumber());
+
+                TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId());
+                tErpProcurementGoods.setUnitName(tErpGoodsUnit.getUnitName());
+                tErpProcurementGoods.setPurchasePrice(dto.getGoodsSalesAmount());
+                tErpProcurementGoods.setSalesAmount(dto.getSalesAmount());
+
+                tErpProcurementGoods.setPurchaseCount(dto.getPurchaseCount());
+                tErpProcurementGoods.setSupplierId(supplierClinicId);
+                tErpProcurementGoods.setRecvMerchantNo(supplier.getRecvMerchantNo());
+            }
+
+        }
+
+        return "";
+    }
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java
index a0cec7c..68d7934 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java
@@ -1,57 +1,57 @@
-package com.ruoyi.system.task.utils;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ruoyi.common.constant.CacheConstants;
-import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.uuid.UUID;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.temporal.ChronoUnit;
-import java.util.List;
-
-/**
- * @author zhibing.pu
- * @date 2023/7/11 8:39
- */
-@Component
-public class TaskUtil {
-    @Autowired
-    RedisCache redisCache;
-    // 用于更新违约金账单
-    // 每分钟执行一次的定时任务
-
-    @Scheduled(cron = "0 0 0 * * ?")
-    public void dayOfProportionBill() {
-        try {
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public static void main(String[] args) {
-
-//        LocalDateTime now = LocalDateTime.now().minusMonths(1).withDayOfMonth(31);
-//        System.err.println(now);
-//        LocalDateTime now2 = now.plusMonths(1);
-//        System.err.println(now2);
+//package com.ruoyi.system.task.utils;
 //
-//        LocalDateTime now1 = LocalDateTime.now();
-//        long days = ChronoUnit.DAYS.between(now, now1);
-//        long days2 = ChronoUnit.DAYS.between(now.plusDays(1), now1);
 //
-//        System.err.println(days);
-//        System.err.println(days2);
-//        LocalDateTime endTime = now.with(TemporalAdjusters.lastDayOfMonth()).withSecond(59).withHour(23).withMinute(59);
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.ruoyi.common.constant.CacheConstants;
+//import com.ruoyi.common.core.redis.RedisCache;
+//import com.ruoyi.common.utils.uuid.UUID;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.scheduling.annotation.Scheduled;
+//import org.springframework.stereotype.Component;
 //
-//        System.err.println(endTime);
-
-    }
-
-}
+//import java.math.BigDecimal;
+//import java.time.LocalDate;
+//import java.time.LocalDateTime;
+//import java.time.LocalTime;
+//import java.time.temporal.ChronoUnit;
+//import java.util.List;
+//
+///**
+// * @author zhibing.pu
+// * @date 2023/7/11 8:39
+// */
+//@Component
+//public class TaskUtil {
+//    @Autowired
+//    RedisCache redisCache;
+//    // 用于更新违约金账单
+//    // 每分钟执行一次的定时任务
+//
+//    @Scheduled(cron = "0 0 0 * * ?")
+//    public void dayOfProportionBill() {
+//        try {
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+//
+//    public static void main(String[] args) {
+//
+////        LocalDateTime now = LocalDateTime.now().minusMonths(1).withDayOfMonth(31);
+////        System.err.println(now);
+////        LocalDateTime now2 = now.plusMonths(1);
+////        System.err.println(now2);
+////
+////        LocalDateTime now1 = LocalDateTime.now();
+////        long days = ChronoUnit.DAYS.between(now, now1);
+////        long days2 = ChronoUnit.DAYS.between(now.plusDays(1), now1);
+////
+////        System.err.println(days);
+////        System.err.println(days2);
+////        LocalDateTime endTime = now.with(TemporalAdjusters.lastDayOfMonth()).withSecond(59).withHour(23).withMinute(59);
+////
+////        System.err.println(endTime);
+//
+//    }
+//
+//}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java
index e8f3027..1efdef5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ValidityPeriodWarningVo.java
@@ -33,6 +33,10 @@
     private String batchNumber;
 
 
+    @ApiModelProperty(value = "批次号Id")
+    private String batchId;
+
+
     @ApiModelProperty(value = "有效日期")
     private LocalDateTime expiryDate;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/wxPay/config/WxConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/wxPay/config/WxConfig.java
index 39c05ea..c70a034 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/wxPay/config/WxConfig.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/wxPay/config/WxConfig.java
@@ -13,7 +13,7 @@
  *
  * @author lihen
  */
-@Configuration
+//@Configuration
 public class WxConfig {
 
     private final WeixinPayProperties weixinPayProperties;
diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
index 8a547e1..8cdc313 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TErpGoodsMapper.xml
@@ -186,7 +186,7 @@
         LEFT JOIN t_crm_supplier t4 on t3.supplier_clinic_id = t4.id
         LEFT JOIN t_erp_supplier_outbound_goods t5 on t5.warehousing_batch_id =t1.id
         where t2.disabled = 0 and t2.warehouse_id = #{warehouseId}
-        and #{time} > t1.expiry_date
+        and #{endDate} > t1.expiry_date
         <if test="user.roleType !=null and user.roleType ==4">
             and t3.supplier_clinic_id =#{supplierClinicId} and t3.goods_source=1
         </if>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
index 4b64394..cd6e62c 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TErpProcurementMapper.xml
@@ -22,6 +22,9 @@
     <sql id="Base_Column_List">
         id, clinic_id, procurement_code, pay_money, pay_number, pay_transaction_id, status, create_time, update_time, create_by, update_by, disabled
     </sql>
+    <sql id="Base_Column_List1">
+        t1.id, t1.supplier_clinic_id, t1.goods_source, t1.goods_name, t1.goods_id_code, t1.quasi_number, t1.manufacturer, t1.formulation_spec, t1.packing_spec, t1.type_id, t1.goods_yards, t1.maintenance_interval, t1.low_purchase_quantity, t1.low_unit_id, t1.is_prescription_drug, t1.goods_spec, t1.warning_inventory, t1.sales_amount, t1.packing_unit_id, t1.instructions_use, t1.side_effect, t1.clinic_purchase_price, t1.platform_commission_price, t1.create_time, t1.update_time, t1.create_by,t1.`state`, t1.update_by, t1.disabled,
+    </sql>
 
     <select id="pageList" resultType="com.ruoyi.system.vo.TErpProcurementVo">
         select t1.id,
@@ -57,7 +60,21 @@
             and t1.create_time between #{sTime} and #{eTime}
         </if>
 
+    </select>
+    <select id="inventoryNotEnoughList" resultType="com.ruoyi.system.vo.TErpGoodsVO">
+        select * from (
+        select <include refid="Base_Column_List1"/>
+        COALESCE(sum(t2.goods_count), 0) - COALESCE(sum(t3.outbound_count), 0) as allNum,
+        SUM(t2.unit_amount * (t2.goods_count - COALESCE(t3.outbound_count, 0))) as allTotalPrice,
 
+        COALESCE(sum(t3.outbound_count), 0) as outNum
+        from t_erp_goods t1  left join  t_erp_supplier_warehousing t2  on t1.id = t2.goods_id
+        left join  t_erp_supplier_outbound_goods t3 on t2.id = t3.warehousing_id
+        where t1.disabled = 0 and t2.id is not null and t1.goods_source =1 and t1.clinic_purchase_price is not null
+        GROUP BY t1.id
+        ) o where 1=1
+        and  o.warning_inventory  > (o.allNum-o.outNum)
+        order by o.create_time desc
     </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml
index fe79539..fbe6173 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TErpSupplierWarehousingMapper.xml
@@ -108,7 +108,7 @@
 
 
     <select id="validityPeriodWarning" resultType="com.ruoyi.system.vo.ValidityPeriodWarningVo">
-        select t2.warehouse_id,t2.warehouse_no warehousingNo, t4.goods_name, t4.quasi_number, t1.batch_number, t1.expiry_date, t4.id as goodsId,t5.type_name,t6.unit_name packingUnitName,
+        select t2.warehouse_id,t2.warehouse_no warehousingNo, t4.goods_name, t4.quasi_number, t1.batch_number, t1.id as batchId,t1.expiry_date, t4.id as goodsId,t5.type_name,t6.unit_name packingUnitName,
                case
                   when t3.id is null then t1.warehousing_number
                   else t1.warehousing_number -t3.outbound_count

--
Gitblit v1.7.1