Selaa lähdekoodia

仓库业务->修改bug

caifc 3 vuotta sitten
vanhempi
commit
846b5da5df
15 muutettua tiedostoa jossa 482 lisäystä ja 178 poistoa
  1. 10 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TWarehouseController.java
  2. 16 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseInStockController.java
  3. 17 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseOutStockController.java
  4. 14 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TWarehouse.java
  5. 7 0
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/mapper/TWarehouseMapper.java
  6. 29 8
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/ITWarehouseService.java
  7. 15 0
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TWarehouseServiceImpl.java
  8. 6 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/CalculationWarehouseService.java
  9. 43 10
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/impl/CalculationWarehouseServiceImpl.java
  10. 46 18
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/impl/WarehouseBillsfilterServiceImpl.java
  11. 2 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehouseDTO.java
  12. 8 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehousebillsDTO.java
  13. 15 4
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java
  14. 229 136
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java
  15. 25 0
      ruoyi-warehouse/src/main/resources/mapper/basicData/TWarehouseMapper.xml

+ 10 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/basicData/TWarehouseController.java

@@ -46,6 +46,16 @@ public class TWarehouseController extends BaseController {
     }
 
     /**
+     * 仓库懒加载列表
+     */
+    @PreAuthorize("@ss.hasPermi('basicdata:warehouse:list')")
+    @GetMapping("/lazyList")
+    public AjaxResult lazyList(TWarehouse tWarehouse) {
+        List<TWarehouse> list = tWarehouseService.lazyList(tWarehouse);
+        return AjaxResult.success(list);
+    }
+
+    /**
      * 查询仓库列表
      */
     @GetMapping("/lists")

+ 16 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseInStockController.java

@@ -381,9 +381,24 @@ public class TWarehouseInStockController extends BaseController {
         return itWarehouseBillsService.revokefeeReview(id);
     }
 
+    /**
+     * 快速入库-暂存
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/quick_staging")
+    @RepeatSubmit
+    public AjaxResult quickStaging(@RequestBody WarehousebillsDTO warehousebillsDTO) {
+        // 判断有箱号 就加箱号判断、无箱号则不加箱号判断
+        warehousebillsDTO.setfBilltype(WarehouseTypeEnum.SJRK.getType());
+        // 判断是提单号是否在一天当中出现第二次或以上
+        itWarehouseBillsService.checkMblNoRepeat(warehousebillsDTO);
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.quickStaging(warehousebillsDTO, loginUser);
+    }
 
     /**
-     * 入库暂存
+     * 快速入库-提交
      */
     @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
     @Log(title = "详情主表", businessType = BusinessType.INSERT)

+ 17 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseOutStockController.java

@@ -394,7 +394,23 @@ public class TWarehouseOutStockController extends BaseController {
     }
 
     /**
-     * 入库暂存
+     * 快速出库-暂存
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/quick_staging")
+    @RepeatSubmit
+    public AjaxResult quickStaging(@RequestBody WarehousebillsDTO warehousebillsDTO) {
+        // 判断有箱号 就加箱号判断、无箱号则不加箱号判断
+        warehousebillsDTO.setfBilltype(WarehouseTypeEnum.SJCK.getType());
+        // 判断是提单号是否在一天当中出现第二次或以上
+        itWarehouseBillsService.checkMblNoRepeat(warehousebillsDTO);
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.quickStaging(warehousebillsDTO, loginUser);
+    }
+
+    /**
+     * 快速出库-提交
      */
     @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
     @Log(title = "详情主表", businessType = BusinessType.INSERT)

+ 14 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TWarehouse.java

@@ -1,5 +1,6 @@
 package com.ruoyi.common.core.domain.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -92,6 +93,19 @@ public class TWarehouse extends BaseEntity
      */
     private List<TWarehouse> children = new ArrayList<TWarehouse>();
 
+    /**
+     * 是否有子孙节点
+     */
+    @TableField(exist = false)
+    private Boolean hasChildren;
+
+    public Boolean getHasChildren() {
+        return hasChildren;
+    }
+
+    public void setHasChildren(Boolean hasChildren) {
+        this.hasChildren = hasChildren;
+    }
 
     public void setfId(Long fId)
     {

+ 7 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/mapper/TWarehouseMapper.java

@@ -161,4 +161,11 @@ public interface TWarehouseMapper {
      * @return
      */
     List<TWarehouse> selectByIds(@Param("ids") List<Long> ids);
+
+    /**
+     *  懒加载树状图
+     * @param tWarehouse
+     * @return
+     */
+    List<TWarehouse> lazyList(TWarehouse tWarehouse);
 }

+ 29 - 8
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/ITWarehouseService.java

@@ -26,6 +26,7 @@ public interface ITWarehouseService {
      * @return 仓库
      */
     public WarehouseInfoVO selectTWarehouseById(Long fId);
+
     public Map<String, Object> selectTWarehouseById1(Long fId);
 
     /**
@@ -37,6 +38,7 @@ public interface ITWarehouseService {
     public List<TWarehouse> selectTWarehouseList(TWarehouse tWarehouse);
 
     public List<TWarehouse> selectTWarehouseLists(TWarehouse tWarehouse);
+
     /**
      * 新增仓库
      *
@@ -44,7 +46,9 @@ public interface ITWarehouseService {
      * @return 结果
      */
     public int insertTWarehouse(TWarehouse tWarehouse);
+
     public AjaxResult insertTWarehouse1(String tWarehouse, String tWarehouseArea, LoginUser loginUser);
+
     /**
      * 修改仓库
      *
@@ -72,31 +76,36 @@ public interface ITWarehouseService {
     public int deleteTWarehouseById(Long fId);
 
     /**
-     *  检验编号唯一
+     * 检验编号唯一
+     *
      * @return
      */
     public String checkUFNoUnique(TWarehouse tWarehouse);
 
     /**
-     *  检验编号名称
+     * 检验编号名称
+     *
      * @return
      */
     public String checkUFNnameUnique(TWarehouse tWarehouse);
 
     /**
-     *  检验编号地址
+     * 检验编号地址
+     *
      * @return
      */
     public String checkUFAaddrUnique(TWarehouse tWarehouse);
 
     /**
-     *  检验编号唯一
+     * 检验编号唯一
+     *
      * @return
      */
     public String checkUFTWarehouseAreaNoUnique(TWarehouseArea tWarehouseAreas);
 
     /**
-     *  检验编号名称
+     * 检验编号名称
+     *
      * @return
      */
     public String checkUTWarehouseAreaFNnameUnique(TWarehouseArea tWarehouseAreas);
@@ -126,7 +135,8 @@ public interface ITWarehouseService {
     public List<TWarehouse> buildDeptTree(List<TWarehouse> depts);
 
     /**
-     *  检验是否可添加库区
+     * 检验是否可添加库区
+     *
      * @return
      */
     public String checkUFAreUnique(TWarehouse tWarehouse);
@@ -148,19 +158,30 @@ public interface ITWarehouseService {
      * @return 结果 true 存在 false 不存在
      */
     public boolean checkDeptExistWarehouse(Long deptId);
+
     public boolean checkDeptExistWarehouseItems(Long deptId);
 
     /**
-     *  新增仓库
+     * 新增仓库
+     *
      * @param tWarehouse
      * @return
      */
     AjaxResult warehouseSubmit(WarehouseSubmitDTO tWarehouse);
 
     /**
-     *  修改仓库
+     * 修改仓库
+     *
      * @param tWarehouse
      * @return
      */
     AjaxResult edit(WarehouseSubmitDTO tWarehouse);
+
+    /**
+     * 仓库懒加载列表
+     *
+     * @param tWarehouse
+     * @return
+     */
+    List<TWarehouse> lazyList(TWarehouse tWarehouse);
 }

+ 15 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/service/impl/TWarehouseServiceImpl.java

@@ -407,6 +407,21 @@ public class TWarehouseServiceImpl implements ITWarehouseService {
         return AjaxResult.success();
     }
 
+    /**
+     * 仓库懒加载列表
+     *
+     * @param tWarehouse
+     * @return
+     */
+    @Override
+    public List<TWarehouse> lazyList(TWarehouse tWarehouse) {
+        if (StringUtils.isNull(tWarehouse.getParentId()) && StringUtils.isEmpty(tWarehouse.getfName()) &&
+                StringUtils.isNull(tWarehouse.getfStatus())) {
+            tWarehouse.setParentId(0L);
+        }
+        return tWarehouseMapper.lazyList(tWarehouse);
+    }
+
     @Override
     public String checkUFNoUnique(TWarehouse tWarehouse) {
         TWarehouse tWarehouse1 = tWarehouseMapper.checkFNoUnique(tWarehouse.getfNo());

+ 6 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/CalculationWarehouseService.java

@@ -16,5 +16,11 @@ public interface CalculationWarehouseService {
      */
     Long calculationBillStatus(TWarehouseBills warehouseBills);
 
+    /**
+     * 仓库计算明细件数、毛重、净重总和
+     *
+     * @param warehouseBills 仓库数据
+     */
+    void calculationWarehouseQuantity(TWarehouseBills warehouseBills);
 
 }

+ 43 - 10
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/impl/CalculationWarehouseServiceImpl.java

@@ -10,6 +10,7 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Objects;
 
@@ -46,20 +47,52 @@ public class CalculationWarehouseServiceImpl implements CalculationWarehouseServ
             count = warehousebillsitems.stream().filter(item ->
                     !Objects.equals(item.getfBillstatus(), 6L)
             ).count();
-            // 货权转移存在不为已货转的数据则判定货转中
-            if (count > 0) {
-                return 2L;
-            }
         } else {
             count = warehousebillsitems.stream().filter(item ->
-                            !Objects.equals(item.getfBillstatus(), 40L))
+                            Objects.equals(item.getfBillstatus(), 40L))
                     .count();
-            // 如果明细中不存在已经操作库存总帐的则判定xx中
-            if (count > 0) {
-                return 2L;
-            }
+        }
+        // 如果明细中不存在已经操作库存总帐的则判定xx中
+        if (Objects.equals(warehousebillsitems.size(), count)) {
+            return 4L;
         }
         // 最终判定 已经xxx
-        return 4L;
+        return 2L;
     }
+
+    /**
+     * 仓库计算明细件数、毛重、净重总和
+     *
+     * @param warehouseBills 仓库数据
+     */
+    @Override
+    public void calculationWarehouseQuantity(TWarehouseBills warehouseBills) {
+        TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems();
+        warehousebillsitems.setfPid(warehouseBills.getfId());
+        List<TWarehousebillsitems> warehousebillsitemsList = warehousebillsitemsMapper.selectTWarehousebillsitemsList(warehousebillsitems);
+        // 存在明细数据
+        if (CollectionUtils.isNotEmpty(warehousebillsitemsList)) {
+            Long qty = 0L;
+            BigDecimal netweight = BigDecimal.ZERO;
+            BigDecimal grossweight = BigDecimal.ZERO;
+            Long planQty = 0L;
+            BigDecimal planNetweight = BigDecimal.ZERO;
+            BigDecimal planGrossweight = BigDecimal.ZERO;
+            for (TWarehousebillsitems li : warehousebillsitemsList) {
+                qty += li.getfQty();
+                planQty += li.getfPlanqty();
+                netweight = netweight.add(li.getfNetweight());
+                planNetweight = planNetweight.add(li.getfPlannetweight());
+                planGrossweight = planGrossweight.add(li.getfPlangrossweight());
+
+            }
+            warehouseBills.setfPlanqty(planQty);
+            warehouseBills.setfPlannetweight(planNetweight);
+            warehouseBills.setfPlangrossweight(planGrossweight);
+            warehouseBills.setfQty(qty);
+            warehouseBills.setfNetweight(netweight);
+            warehouseBills.setfGrossweight(grossweight);
+        }
+    }
+
 }

+ 46 - 18
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/impl/WarehouseBillsfilterServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ruoyi.common.exception.WarehouseException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.warehouseBusiness.component.WarehouseBillsfilterService;
+import com.ruoyi.warehouseBusiness.domain.TWarehousebillsfees;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
 import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
 import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
@@ -30,9 +31,12 @@ public class WarehouseBillsfilterServiceImpl implements WarehouseBillsfilterServ
         // 校验仓储信息
         filterWarehouseBills(warehousebillsDTO);
         // 校验明细
-        List<TWarehousebillsitems> itemList = warehousebillsDTO.getWarehousebillsitemsList();
-        if (CollectionUtils.isNotEmpty(itemList)) {
-            filterItem(itemList);
+        if (CollectionUtils.isNotEmpty(warehousebillsDTO.getWarehousebillsitemsList())) {
+            filterItem(warehousebillsDTO.getWarehousebillsitemsList());
+        }
+        // 校验费用明细
+        if (CollectionUtils.isNotEmpty(warehousebillsDTO.getWarehousebillsfeesList())) {
+            filterFees(warehousebillsDTO.getWarehousebillsfeesList());
         }
     }
 
@@ -57,6 +61,9 @@ public class WarehouseBillsfilterServiceImpl implements WarehouseBillsfilterServ
         if (StringUtils.isNull(warehousebillsDTO.getfTrademodeid())) {
             throw new WarehouseException("请维护贸易方式");
         }
+        if (StringUtils.isEmpty(warehousebillsDTO.getfMblno())) {
+            throw new WarehouseException("请维护提单号");
+        }
         // 入库校验
         if (warehousebillsDTO.getfBilltype().equals(WarehouseTypeEnum.SJRK.getType())) {
             if (StringUtils.isEmpty(warehousebillsDTO.getfChargetype())) {
@@ -65,27 +72,13 @@ public class WarehouseBillsfilterServiceImpl implements WarehouseBillsfilterServ
             if (StringUtils.isNull(warehousebillsDTO.getfGoodsid())) {
                 throw new WarehouseException("请维护商品信息");
             }
-            if (StringUtils.isNull(warehousebillsDTO.getfPlanqty()) ||
-                    Objects.equals(warehousebillsDTO.getfPlanqty(), 0L)) {
-                throw new WarehouseException("请维护计划件数");
-            }
-            if (StringUtils.isNull(warehousebillsDTO.getfPlangrossweight()) ||
-                    warehousebillsDTO.getfPlangrossweight().compareTo(BigDecimal.ZERO) == 0) {
-                throw new WarehouseException("请维护计划毛重");
-            }
-            if (StringUtils.isNull(warehousebillsDTO.getfPlannetweight()) ||
-                    warehousebillsDTO.getfPlannetweight().compareTo(BigDecimal.ZERO) == 0) {
-                throw new WarehouseException("请维护计划净重");
-            }
             if (StringUtils.isEmpty(warehousebillsDTO.getfBusinessType())) {
                 throw new WarehouseException("请维护作业类型");
             }
         }
         // 出库校验
         if (warehousebillsDTO.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType())) {
-            if (StringUtils.isEmpty(warehousebillsDTO.getfMblno())) {
-                throw new WarehouseException("请维护提单号");
-            }
+
             if (StringUtils.isEmpty(warehousebillsDTO.getfFeetunit())) {
                 throw new WarehouseException("请维护计费单位");
             }
@@ -122,4 +115,39 @@ public class WarehouseBillsfilterServiceImpl implements WarehouseBillsfilterServ
         }
     }
 
+    /**
+     * 校验仓储费用信息
+     *
+     * @param warehousebillsfeesList 费用信息
+     */
+    private void filterFees(List<TWarehousebillsfees> warehousebillsfeesList) {
+        int line = 1;
+        for (TWarehousebillsfees li : warehousebillsfeesList) {
+            if (StringUtils.isNull(li.getfCorpid())) {
+                throw new WarehouseException("序号" + line + "未选择客户信息");
+            }
+            if (StringUtils.isNull(li.getfFeeid())) {
+                throw new WarehouseException("序号" + line + "未选择费用信息");
+            }
+            if (StringUtils.isNull(li.getfFeeunitid())) {
+                throw new WarehouseException("序号" + line + "未选择计价单位");
+            }
+            if (StringUtils.isNull(li.getfBusinessType())) {
+                throw new WarehouseException("序号" + line + "未选择作业类型");
+            }
+            if (StringUtils.isNull(li.getfDc())) {
+                throw new WarehouseException("序号" + line + "未选择收费、付费");
+            }
+            if (StringUtils.isNull(li.getfQty()) || li.getfQty().compareTo(BigDecimal.ZERO) < 0) {
+                throw new WarehouseException("序号" + line + "请填写数量");
+            }
+            if (StringUtils.isNull(li.getfUnitprice()) || li.getfUnitprice().compareTo(BigDecimal.ZERO) < 0) {
+                throw new WarehouseException("序号" + line + "请填写单价");
+            }
+            if (StringUtils.isNull(li.getfAmount()) || li.getfAmount().compareTo(BigDecimal.ZERO) < 0) {
+                throw new WarehouseException("序号" + line + "请填写金额");
+            }
+        }
+    }
+
 }

+ 2 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehouseDTO.java

@@ -14,6 +14,8 @@ import java.util.List;
 public class WarehouseDTO implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    // 父id
+    private Long parentId;
 
     // 查询类型(按照年、按照月、按照周)
     private String queryType;

+ 8 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehousebillsDTO.java

@@ -1,6 +1,7 @@
 package com.ruoyi.warehouseBusiness.domain.dto;
 
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
+import com.ruoyi.warehouseBusiness.domain.TWarehousebillsfees;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
 import lombok.Data;
 
@@ -25,7 +26,14 @@ public class WarehousebillsDTO extends TWarehouseBills {
     // 仓储主表id
     private Long warehouseId;
 
+    private Long bsDate;
+
+    private Long bsTime;
+
     // 仓储明细数据
     List<TWarehousebillsitems> warehousebillsitemsList;
 
+    // 仓储费用数据
+    List<TWarehousebillsfees> warehousebillsfeesList;
+
 }

+ 15 - 4
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java

@@ -165,7 +165,8 @@ public interface ITWarehouseBillsService {
     public AjaxResult revokeTWarehousebillsById(Long fId, LoginUser loginUser, String billsType);
 
     /**
-     *  撤回 入库、 调拨
+     * 撤回 入库、 调拨
+     *
      * @param warehouseBills
      * @param warehousebillsitems
      * @param tEnclosure
@@ -703,7 +704,7 @@ public interface ITWarehouseBillsService {
     AjaxResult corpOrWarehouseByMblno(WarehousebillsDTO warehousebillsDTO);
 
     /**
-     * 快速出、入库
+     * 快速出、入库-提交
      *
      * @param warehousebillsDTO 出库信息
      * @param loginUser         登陆人
@@ -725,6 +726,7 @@ public interface ITWarehouseBillsService {
      * @return 库存总帐明细
      */
     AjaxResult selectWhgenlegDetail(Long id);
+
     /**
      * 撤销费用请核
      *
@@ -735,6 +737,15 @@ public interface ITWarehouseBillsService {
      * @return
      */
     public AjaxResult cancellationFees(String tWarehousebills, String tWarehousebillsCntr, String tWarehousebillsCntritems,
-                                         String tWarehousebillsfeesCr, String tWarehousebillsfeesDr, LoginUser loginUser,
-                                         String billsType);
+                                       String tWarehousebillsfeesCr, String tWarehousebillsfeesDr, LoginUser loginUser,
+                                       String billsType);
+
+    /**
+     * 快速入库-暂存
+     *
+     * @param warehousebillsDTO
+     * @param loginUser
+     * @return
+     */
+    AjaxResult quickStaging(WarehousebillsDTO warehousebillsDTO, LoginUser loginUser);
 }

+ 229 - 136
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -489,7 +489,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
      * @param warehousebillsitems 仓库明细表
      * @return 结果
      */
-    public Long instalTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems, SysUser user) {
+    public Long instalTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems) {
         TWhgenleg tWhgenleg = new TWhgenleg();
         if (WarehouseTypeEnum.SJRK.getType().equals(warehouseBills.getfBilltype())) {
             tWhgenleg.setfOriginalbilldate(warehousebillsitems.getfBsdate());
@@ -568,7 +568,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         // 入库箱号
         tWhgenleg.setfCntrno(warehousebillsitems.getfCntrno());
         // 创建人
-        tWhgenleg.setCreateBy(user.getUserName());
+        tWhgenleg.setCreateBy(SecurityUtils.getUsername());
         // 创建人
         tWhgenleg.setCreateTime(new Date());
         // 状态
@@ -709,7 +709,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
                     if (!warehouseStatus) {
                         // 添加状态log
-                        insertTWarehousebillsLog(wbItem, 10L, loginUser);
+                        insertTWarehousebillsLog(wbItem, 10L);
                     }
                 }
             }
@@ -3027,7 +3027,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 warehousebillsitems.setfStevedore(tWarehousebillsitems.getfStevedore());
                 warehousebillsitems.setRemark(tWarehousebillsitems.getRemark());
                 warehousebillsitems.setfWarehouselocid(tWarehousebillsitems.getfWarehouselocid());
-                instalTWhgenleg(warehouseBills, warehousebillsitems, loginUser.getUser());
+                instalTWhgenleg(warehouseBills, warehousebillsitems);
             }
             tWarehousebillsitems.setfIsInventory(0L);
             tWarehousebillsitems.setfSerialNumber(warehousebillsitems.getfSerialNumber());
@@ -3037,7 +3037,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 tWarehousebillsitems.setUpdateBy(SecurityUtils.getUsername());
                 tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
                 // 添加状态log
-                insertTWarehousebillsLog(tWarehousebillsitems, 40L, loginUser);
+                insertTWarehousebillsLog(tWarehousebillsitems, 40L);
             }
         } else if ("SJCK".equals(billsType)) {
             // 查询总账是否存在
@@ -3067,7 +3067,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             tWarehousebillsitems.setfSerialNumber(warehousebillsitems.getfSerialNumber());
             tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
             // 添加状态log
-            insertTWarehousebillsLog(tWarehousebillsitems, 40L, loginUser);
+            insertTWarehousebillsLog(tWarehousebillsitems, 40L);
         }
         tEnclosureMapper.deleteByFPid(warehouseBills.getfId());
         //  附件添加
@@ -3347,7 +3347,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     updateTWhgenlegData(item, tWhgenle.getfId(), billsType);
                     item.setfSrcid(tWhgenle.getfId());
                 } else {
-                    Long whgenlegId = instalTWhgenleg(tWarehouseBills, item, loginUser.getUser());
+                    Long whgenlegId = instalTWhgenleg(tWarehouseBills, item);
                     item.setfSrcid(whgenlegId);
                 }
                 item.setfIsInventory(0L);
@@ -3364,7 +3364,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 }
                 num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
                 // 添加状态log
-                insertTWarehousebillsLog(item, 40L, loginUser);
+                insertTWarehousebillsLog(item, 40L);
             }
             if (num <= 0) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -3633,7 +3633,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     // 3、 进行入库操作 查询是否存在库存
                     TWhgenleg tWhgenle1 = queryWhgenlegService.secondStockWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno(), WarehouseTypeEnum.NOT_JUDGE_BOX.getType());
                     if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
-                        instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
+                        instalTWhgenleg(tWarehouseBills, wbItem);
                     } else { // 4、 存在 进行跟新库存
                         updateTWhgenlegData(wbItem, tWhgenle1.getfId(), WarehouseTypeEnum.SJRK.getType());
                     }
@@ -3652,7 +3652,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 // 3、 进行入库操作 查询是否存在库存
                 TWhgenleg tWhgenle1 = queryWhgenlegService.secondStockWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno(), WarehouseTypeEnum.NOT_JUDGE_BOX.getType());
                 if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
-                    instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
+                    instalTWhgenleg(tWarehouseBills, wbItem);
                 } else { // 4、 存在 进行跟新库存
                     updateTWhgenlegData(wbItem, tWhgenle1.getfId(), WarehouseTypeEnum.SJRK.getType());
                 }
@@ -3668,7 +3668,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
                 if (WarehouseTypeEnum.SJCK.getType().equals(billsType)) {
                     // 添加状态log
-                    insertTWarehousebillsLog(wbItem, 40L, loginUser);
+                    insertTWarehousebillsLog(wbItem, 40L);
                 }
             } else {
                 wbItem.setCreateTime(new Date());
@@ -3751,10 +3751,11 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     }
 
     /**
-     *  判断数量、毛重、净重是否超出库存总帐
-     * @param whgenleg  库存总账
-     * @param wbItem    明细
-     * @param line      行号
+     * 判断数量、毛重、净重是否超出库存总帐
+     *
+     * @param whgenleg 库存总账
+     * @param wbItem   明细
+     * @param line     行号
      */
     private void judgeItemQty(TWhgenleg whgenleg, TWarehousebillsitems wbItem, int line) {
         //  库存 <  出库件数
@@ -3864,7 +3865,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 item.setUpdateBy(loginUser.getUser().getUserName());
                 int num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
                 // 添加状态log
-                insertTWarehousebillsLog(item, status, loginUser);
+                insertTWarehousebillsLog(item, status);
                 if (num <= 0) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error("更新库存明细失败");
@@ -6080,16 +6081,15 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
      *
      * @param wbItem
      * @param status
-     * @param loginUser
      */
-    public void insertTWarehousebillsLog(TWarehousebillsitems wbItem, Long status, LoginUser loginUser) {
+    public void insertTWarehousebillsLog(TWarehousebillsitems wbItem, Long status) {
         // 添加状态log
         TWarehousebillsLog tWarehousebillsLog = new TWarehousebillsLog();
         tWarehousebillsLog.setfPid(wbItem.getfPid());
         tWarehousebillsLog.setfItmeid(wbItem.getfId());
         tWarehousebillsLog.setfItmestatus(status);
         tWarehousebillsLog.setCreateTime(new Date());
-        tWarehousebillsLog.setCreateBy(loginUser.getUser().getUserName());
+        tWarehousebillsLog.setCreateBy(SecurityUtils.getUsername());
         tWarehousebillsLogMapper.insertTWarehousebillsLog(tWarehousebillsLog);
     }
 
@@ -6971,7 +6971,92 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     }
 
     /**
-     * 快速入库、出库
+     * 快速入库-暂存
+     *
+     * @param warehousebillsDTO
+     * @param loginUser
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult quickStaging(WarehousebillsDTO warehousebillsDTO, LoginUser loginUser) {
+        // 校验必填项
+        warehouseBillsfilterService.filter(warehousebillsDTO);
+        // 定义计算毛重净重的仓库主表
+        TWarehouseBills warehouseBills = new TWarehouseBills();
+        // 根据客户、提单号、仓库是否存在已入库数据,若已存在则追加在其上面
+        TWarehouseBills warehouseCondition = new TWarehouseBills();
+        warehouseCondition.setfMblno(warehousebillsDTO.getfMblno());
+        warehouseCondition.setfCorpid(warehousebillsDTO.getfCorpid());
+        warehouseCondition.setfBilltype(WarehouseTypeEnum.SJRK.getType());
+        warehouseCondition.setfWarehouseid(warehousebillsDTO.getfWarehouseid());
+        warehouseCondition.setfTrademodeid(warehousebillsDTO.getfTrademodeid());
+        warehouseCondition.setfBillstatus(Long.parseLong(WarehouseTypeEnum.SAVE.getType()));
+        List<TWarehouseBills> warehouseBillsList = tWarehouseBillsMapper.selectTWarehousebillsList(warehouseCondition);
+        // 如果是入库、存在一条入库数据
+        if (warehousebillsDTO.getfBilltype().equals(WarehouseTypeEnum.SJRK.getType()) &&
+                CollectionUtils.isNotEmpty(warehouseBillsList) && warehouseBillsList.size() == 1) {
+            TWarehouseBills bills = warehouseBillsList.stream().findFirst()
+                    .orElseThrow(() -> new WarehouseException("查询仓库信息失败"));
+            // 赋值新对象
+            BeanUtils.copyProperties(bills, warehouseBills);
+            warehousebillsDTO.setfId(bills.getfId());
+        } else {
+            // 生成编号
+            String billNo = billnoSerialServiceImpl.getBillNo(warehousebillsDTO.getfBilltype(), warehousebillsDTO.getfBsdate());
+            warehousebillsDTO.setfBillno(billNo);
+            // 如果是入库则需要赋值客户存货编号
+            if (WarehouseTypeEnum.SJRK.getType().equals(warehousebillsDTO.getType())) {
+                Date time = new Date();
+                String bscorpno = billnoSerialServiceImpl.getCorpNo(warehousebillsDTO.getfCorpid(), time);
+                warehousebillsDTO.setfBscorpno(bscorpno);
+            }
+            warehousebillsDTO.setfDateChanged(DateUtils.getTimestamp(new Date()).toString() + (int) (Math.random() * 900) + 100);
+            warehousebillsDTO.setCreateTime(new Date());
+            warehousebillsDTO.setfBillingway(2L);
+            warehousebillsDTO.setCreateBy(loginUser.getUsername());
+            warehousebillsDTO.setfBsdeptid(loginUser.getUser().getDeptId());
+            warehousebillsDTO.setfChargedate(warehousebillsDTO.getfBsdate());
+            warehousebillsDTO.setfBillstatus(Long.parseLong(WarehouseTypeEnum.SAVE.getType()));
+            warehousebillsDTO.setfItemsStatus(Long.parseLong(WarehouseTypeEnum.DETAILED_STATUS_PROCESSED.getType()));
+            tWarehouseBillsMapper.insertTWarehousebills(warehousebillsDTO);
+            // 赋值新对象
+            BeanUtils.copyProperties(warehousebillsDTO, warehouseBills);
+        }
+        // 遍历进行入库、出库确认
+        List<TWarehousebillsitems> itemList = warehousebillsDTO.getWarehousebillsitemsList();
+        int line = 1;
+        for (TWarehousebillsitems li : itemList) {
+            // 如果业务时间超出当前时间则不允许
+            if (li.getfBsdate().after(new Date())) {
+                throw new WarehouseException("第" + line + "行业务日期不得超出当前日期");
+            }
+            li.setfPid(warehouseBills.getfId());
+            li.setfBillstatus(10L);
+            li.setfBillno(warehouseBills.getfBillno());
+            li.setfBilltype(warehouseBills.getfBilltype());
+            if (warehouseBills.getfBilltype().equals(WarehouseTypeEnum.SJRK.getType())) {
+                quickStorage(warehouseBills, li, WarehouseTypeEnum.SAVE.getType(), line);
+            } else if (warehouseBills.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType())) {
+                quickDelivery(warehouseBills, li, WarehouseTypeEnum.SAVE.getType(), line);
+                line++;
+            }
+        }
+        // 计算明细数据件数、毛重、净重总和数量
+        calculationWarehouseService.calculationWarehouseQuantity(warehouseBills);
+        warehouseBills.setfItemsStatus(calculationWarehouseService.calculationBillStatus(warehouseBills));
+        tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
+        // 遍历费用信息
+        if (CollectionUtils.isNotEmpty(warehousebillsDTO.getWarehousebillsfeesList())) {
+            quickFee(warehouseBills, warehousebillsDTO.getWarehousebillsfeesList());
+        }
+        warehousebillsDTO.setBsDate(warehousebillsDTO.getfBsdate().getTime());
+        warehousebillsDTO.setBsTime(warehousebillsDTO.getfBstime().getTime());
+        return AjaxResult.success(warehousebillsDTO);
+    }
+
+    /**
+     * 快速出、入库-提交
      *
      * @param warehousebillsDTO 出库信息
      * @param loginUser         登陆人
@@ -6985,36 +7070,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         }
         // 校验必填项
         warehouseBillsfilterService.filter(warehousebillsDTO);
-        // 生成编号
-        String billNo = billnoSerialServiceImpl.getBillNo(warehousebillsDTO.getfBilltype(), warehousebillsDTO.getfBsdate());
-        warehousebillsDTO.setfBillno(billNo);
-        // 如果是入库则需要赋值客户存货编号
-        if (WarehouseTypeEnum.SJRK.getType().equals(warehousebillsDTO.getType())) {
-            Date time = new Date();
-            String bscorpno = billnoSerialServiceImpl.getCorpNo(warehousebillsDTO.getfCorpid(), time);
-            warehousebillsDTO.setfBscorpno(bscorpno);
-        }
-        warehousebillsDTO.setfDateChanged(DateUtils.getTimestamp(new Date()).toString() + (int) (Math.random() * 900) + 100);
-        warehousebillsDTO.setCreateTime(new Date());
-        warehousebillsDTO.setfBillingway(2L);
-        warehousebillsDTO.setCreateBy(loginUser.getUsername());
-        warehousebillsDTO.setfBsdeptid(loginUser.getUser().getDeptId());
-        warehousebillsDTO.setfChargedate(warehousebillsDTO.getfBsdate());
-        warehousebillsDTO.setfBillstatus(Long.parseLong(WarehouseTypeEnum.SAVE.getType()));
-        warehousebillsDTO.setfItemsStatus(Long.parseLong(WarehouseTypeEnum.DETAILED_STATUS_PROCESSED.getType()));
-        tWarehouseBillsMapper.insertTWarehousebills(warehousebillsDTO);
         // 遍历进行入库、出库确认
         List<TWarehousebillsitems> itemList = warehousebillsDTO.getWarehousebillsitemsList();
         int line = 1;
-        Long qty = 0L;
-        BigDecimal volumn = BigDecimal.ZERO;
-        BigDecimal netweight = BigDecimal.ZERO;
-        BigDecimal grossweight = BigDecimal.ZERO;
         for (TWarehousebillsitems li : itemList) {
-            qty += li.getfQty();
-            volumn = volumn.add(li.getfVolumn());
-            netweight = netweight.add(li.getfNetweight());
-            grossweight = grossweight.add(li.getfGrossweight());
             // 如果业务时间超出当前时间则不允许
             if (li.getfBsdate().after(new Date())) {
                 throw new WarehouseException("业务日期不得超出当前日期");
@@ -7023,47 +7082,43 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             li.setfBillstatus(40L);
             li.setfBillno(warehousebillsDTO.getfBillno());
             li.setfBilltype(warehousebillsDTO.getfBilltype());
-            li.setCreateTime(new Date());
-            li.setCreateBy(loginUser.getUsername());
             if (warehousebillsDTO.getfBilltype().equals(WarehouseTypeEnum.SJRK.getType())) {
-                quickStorage(warehousebillsDTO, li, loginUser, line);
+                quickStorage(warehousebillsDTO, li, WarehouseTypeEnum.SUBMIT.getType(), line);
             } else if (warehousebillsDTO.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType())) {
-                quickDelivery(warehousebillsDTO, li, loginUser, line);
+                quickDelivery(warehousebillsDTO, li, WarehouseTypeEnum.SUBMIT.getType(), line);
                 line++;
             }
         }
-        warehousebillsDTO.setfPlanqty(qty);
-        warehousebillsDTO.setfPlanvolumn(volumn);
-        warehousebillsDTO.setfPlannetweight(netweight);
-        warehousebillsDTO.setfPlangrossweight(grossweight);
-        warehousebillsDTO.setfQty(qty);
-        warehousebillsDTO.setfVolumn(volumn);
-        warehousebillsDTO.setfNetweight(netweight);
-        warehousebillsDTO.setfGrossweight(grossweight);
+        // 计算明细数据件数、毛重、净重总和数量
+        calculationWarehouseService.calculationWarehouseQuantity(warehousebillsDTO);
+        warehousebillsDTO.setfItemsStatus(calculationWarehouseService.calculationBillStatus(warehousebillsDTO));
         tWarehouseBillsMapper.updateTWarehousebills(warehousebillsDTO);
-
+        // 遍历费用信息
+        if (CollectionUtils.isNotEmpty(warehousebillsDTO.getWarehousebillsfeesList())) {
+            quickFee(warehousebillsDTO, warehousebillsDTO.getWarehousebillsfeesList());
+        }
         return AjaxResult.success();
     }
 
     /**
      * 快速入库
      *
-     * @param warehousebillsDTO 主表信息
-     * @param item              明细信息
-     * @param loginUser         用户信息
-     * @param line              序号
+     * @param warehouseBills 主表信息
+     * @param item           明细信息
+     * @param operateType    操作类型
+     * @param line           序号
      */
-    private void quickStorage(WarehousebillsDTO warehousebillsDTO, TWarehousebillsitems item, LoginUser loginUser, int line) {
+    private void quickStorage(TWarehouseBills warehouseBills, TWarehousebillsitems item, String operateType, int line) {
         // 查询库容量  是否可入库
-        if (calculation(warehousebillsDTO.getfWarehouseid(), item.getfGrossweight()) <= 0) {
+        if (calculation(warehouseBills.getfWarehouseid(), item.getfGrossweight()) <= 0) {
             throw new WarehouseException("仓储明细第" + line + "行入库毛重大于库容");
         }
-        if (StringUtils.isNotEmpty(warehousebillsDTO.getfCustomno())) {
-            item.setfCustomno(warehousebillsDTO.getfCustomno());
+        if (StringUtils.isNotEmpty(warehouseBills.getfCustomno())) {
+            item.setfCustomno(warehouseBills.getfCustomno());
         }
         item.setfOriginalbilldate(item.getfBsdate());
-        item.setfBillingway(warehousebillsDTO.getfBillingway());
-        if ("1".equals(warehousebillsDTO.getfChargetype())) {
+        item.setfBillingway(warehouseBills.getfBillingway());
+        if ("1".equals(warehouseBills.getfChargetype())) {
             item.setfChargedate(item.getfBsdate());
         } else {
             item.setfChargedate(new Date());
@@ -7073,52 +7128,94 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         if ("1".equals(goods.getIfCntrno()) && StringUtils.isNull(item.getfCntrno())) {
             throw new WarehouseException("仓库明细第" + line + "行未找到箱号");
         }
-        TWhgenleg tWhgenle = queryTWhgenleg(warehousebillsDTO, item, goods.getIfCntrno());
-        if (Objects.nonNull(tWhgenle)) {
-            updateTWhgenlegData(item, tWhgenle.getfId(), warehousebillsDTO.getfBilltype());
+        // 如果不为暂存的话则默认操作库存总帐
+        if (!operateType.equals(WarehouseTypeEnum.SAVE.getType())) {
+            TWhgenleg tWhgenle = queryTWhgenleg(warehouseBills, item, goods.getIfCntrno());
+            if (Objects.nonNull(tWhgenle)) {
+                updateTWhgenlegData(item, tWhgenle.getfId(), warehouseBills.getfBilltype());
+            } else {
+                instalTWhgenleg(warehouseBills, item);
+            }
+            item.setfIsInventory(Long.parseLong(WarehouseTypeEnum.INVENTORY.getType()));
+        }
+        if (Objects.nonNull(item.getfId())) {
+            item.setUpdateTime(new Date());
+            item.setUpdateBy(SecurityUtils.getUsername());
+            tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
         } else {
-            instalTWhgenleg(warehousebillsDTO, item, loginUser.getUser());
+            item.setCreateTime(new Date());
+            item.setCreateBy(SecurityUtils.getUsername());
+            tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
         }
-        item.setfIsInventory(Long.parseLong(WarehouseTypeEnum.INVENTORY.getType()));
-        tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
         // 添加状态log
-        insertTWarehousebillsLog(item, 40L, loginUser);
+        insertTWarehousebillsLog(item, 40L);
     }
 
     /**
      * 快速出库
      *
-     * @param warehousebillsDTO 主表信息
-     * @param item              明细信息
-     * @param loginUser         用户信息
-     * @param line              序号
+     * @param warehouseBills 主表信息
+     * @param item           明细信息
+     * @param operateType    是否保存
+     * @param line           序号
      */
-    private void quickDelivery(WarehousebillsDTO warehousebillsDTO, TWarehousebillsitems item, LoginUser loginUser, int line) {
+    private void quickDelivery(TWarehouseBills warehouseBills, TWarehousebillsitems item, String operateType, int line) {
         // 校验商品是否区分箱号
         TGoods goods = tGoodsMapper.selectTGoodsById(item.getfGoodsid());
         if ("1".equals(goods.getIfCntrno()) && StringUtils.isNull(item.getfCntrno())) {
             throw new WarehouseException("仓库明细未找到箱号");
         }
-        // 查询总账是否存在
-        TWhgenleg tWhgenle = queryTWhgenleg(warehousebillsDTO, item, goods.getIfCntrno());
-        if (Objects.nonNull(tWhgenle) && item.getfBsdate().before(tWhgenle.getfChargedate())) {
-            throw new WarehouseException("出库明细第" + line + "行业务日期不得超出库存总帐日期");
-        }
-        if (Objects.isNull(tWhgenle)) {
-            throw new WarehouseException("出库库存总帐第" + line + "行不存在");
+        // 如果不为暂存的话则默认操作库存总帐
+        if (!operateType.equals(WarehouseTypeEnum.SAVE.getType())) {
+            // 查询总账是否存在
+            TWhgenleg tWhgenle = queryTWhgenleg(warehouseBills, item, goods.getIfCntrno());
+            if (Objects.nonNull(tWhgenle) && item.getfBsdate().before(tWhgenle.getfChargedate())) {
+                throw new WarehouseException("出库明细第" + line + "行业务日期不得超出库存总帐日期");
+            }
+            if (Objects.isNull(tWhgenle)) {
+                throw new WarehouseException("出库库存总帐第" + line + "行不存在");
+            }
+            //校验计费日期是等于库存总帐计费日,如果不相等则报错
+            checkWhgenleg(item, tWhgenle);
+            //  库存 <  出库件数
+            if (tWhgenle.getfQtyblc() < item.getfQty()) {
+                throw new WarehouseException("库存明细第" + line + "行库存不足");
+            }
+            // 更新库存总账
+            updateTWhgenlegData(item, tWhgenle.getfId(), warehouseBills.getfBilltype());
         }
-        //校验计费日期是等于库存总帐计费日,如果不相等则报错
-        checkWhgenleg(item, tWhgenle);
-        //  库存 <  出库件数
-        if (tWhgenle.getfQtyblc() < item.getfQty()) {
-            throw new WarehouseException("库存明细第" + line + "行库存不足");
+        if (Objects.nonNull(item.getfId())) {
+            item.setUpdateTime(new Date());
+            item.setUpdateBy(SecurityUtils.getUsername());
+            tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
+        } else {
+            item.setCreateTime(new Date());
+            item.setCreateBy(SecurityUtils.getUsername());
+            tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
         }
-        // 更新库存总账
-        updateTWhgenlegData(item, tWhgenle.getfId(), warehousebillsDTO.getfBilltype());
-        DateUtils.getDateDay(warehousebillsDTO.getfBsdate(), item.getfChargedate());
-        tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
         // 添加状态log
-        insertTWarehousebillsLog(item, 40L, loginUser);
+        insertTWarehousebillsLog(item, 40L);
+    }
+
+    /**
+     * 快速-仓库费用
+     *
+     * @param warehouseBills         主表信息
+     * @param warehousebillsfeesList 费用信息
+     */
+    private void quickFee(TWarehouseBills warehouseBills, List<TWarehousebillsfees> warehousebillsfeesList) {
+        warehousebillsfeesList.forEach(fee -> {
+            fee.setfPid(warehouseBills.getfId());
+            if (Objects.nonNull(fee.getfId())) {
+                fee.setUpdateTime(new Date());
+                fee.setUpdateBy(SecurityUtils.getUsername());
+                tWarehousebillsfeesMapper.updateTWarehousebillsfees(fee);
+            } else {
+                fee.setCreateTime(new Date());
+                fee.setCreateBy(SecurityUtils.getUsername());
+                tWarehousebillsfeesMapper.insertTWarehousebillsfees(fee);
+            }
+        });
     }
 
     /**
@@ -7130,19 +7227,14 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     public void checkMblNoRepeat(WarehousebillsDTO warehousebillsDTO) {
         if (CollectionUtils.isNotEmpty(warehousebillsDTO.getWarehousebillsitemsList())) {
             List<TWarehousebillsitems> items = warehousebillsDTO.getWarehousebillsitemsList();
-            int line = 1;
             for (TWarehousebillsitems li : items) {
                 if (StringUtils.isNotEmpty(li.getfCntrno())) {
                     warehousebillsDTO.setfCntrno(li.getfCntrno());
                 }
-                int num = tWarehouseBillsMapper.selectByMblnoOrCntrnoCount(warehousebillsDTO);
-                if (num > 0 && StringUtils.isNotEmpty(li.getfCntrno())) {
-                    throw new WarehouseException("该提单号与第" + line + "行明细箱号存在重复录入");
-                }
-                if (num > 0 && StringUtils.isEmpty(li.getfCntrno())) {
-                    throw new WarehouseException("该提单号存在重复录入");
-                }
-                line++;
+//                int num = tWarehouseBillsMapper.selectByMblnoOrCntrnoCount(warehousebillsDTO);
+//                if (num > 0 && StringUtils.isEmpty(li.getfCntrno())) {
+//                    throw new WarehouseException("该提单号存在重复录入");
+//                }
             }
         }
     }
@@ -7174,7 +7266,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehousebills, TWarehouseBills.class);
         Map<String, Object> map = new HashMap<>();
         TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId());
-        if (tWarehouseBills == null){
+        if (tWarehouseBills == null) {
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
             return AjaxResult.error("找不到订单信息");
         }
@@ -7196,26 +7288,26 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesCr);
             List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
             for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
-               if (wbCr.getfId() == null){
-                   wbCr.setfPid(warehouseBills.getfId());
-                   wbCr.setfDc("C");
-                   wbCr.setfBilltype(billsType);
-                   wbCr.setfBillstatus(billStatus);
-                   wbCr.setCreateTime(new Date());
-                   wbCr.setSrcBillNo(tWarehouseBills.getfBillno());
-                   wbCr.setCreateBy(loginUser.getUser().getUserName());
-                   //wbCr.setfChargedate(warehouseBills.getfChargedate());
-                   //wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
-                   if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
-                       wbCr.setfBsdate(warehouseBills.getfBsdate());
-                   }
-                   tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
-               }else {
-                   wbCr.setfBillstatus(billStatus);
-                   wbCr.setUpdateBy(loginUser.getUser().getUserName());
-                   wbCr.setUpdateTime(new Date());
-                   tWarehousebillsfeesMapper.updateTWarehousebillsfees(wbCr);
-               }
+                if (wbCr.getfId() == null) {
+                    wbCr.setfPid(warehouseBills.getfId());
+                    wbCr.setfDc("C");
+                    wbCr.setfBilltype(billsType);
+                    wbCr.setfBillstatus(billStatus);
+                    wbCr.setCreateTime(new Date());
+                    wbCr.setSrcBillNo(tWarehouseBills.getfBillno());
+                    wbCr.setCreateBy(loginUser.getUser().getUserName());
+                    //wbCr.setfChargedate(warehouseBills.getfChargedate());
+                    //wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
+                    if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                        wbCr.setfBsdate(warehouseBills.getfBsdate());
+                    }
+                    tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
+                } else {
+                    wbCr.setfBillstatus(billStatus);
+                    wbCr.setUpdateBy(loginUser.getUser().getUserName());
+                    wbCr.setUpdateTime(new Date());
+                    tWarehousebillsfeesMapper.updateTWarehousebillsfees(wbCr);
+                }
             }
             map.put("warehousebillsfeesCrList", warehousebillsfeesCrList);
         }
@@ -7223,7 +7315,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesDr);
             List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
             for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
-                if (wbDr.getfId() == null){
+                if (wbDr.getfId() == null) {
                     wbDr.setfPid(warehouseBills.getfId());
                     wbDr.setfDc("D");
                     wbDr.setfBillstatus(billStatus);
@@ -7237,7 +7329,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                         wbDr.setfBsdate(warehouseBills.getfBsdate());
                     }
                     tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
-                }else {
+                } else {
                     wbDr.setfBillstatus(billStatus);
                     wbDr.setUpdateTime(new Date());
                     wbDr.setUpdateBy(loginUser.getUser().getUserName());
@@ -7455,20 +7547,21 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 
     /**
      * 能否修改费用信息
-     * @param id  订单主表id
+     *
+     * @param id 订单主表id
      * @return
      */
-    private AjaxResult changeFees(Long id){
+    private AjaxResult changeFees(Long id) {
         List<TWarehousebillsfees> warehousebillsfees = tWarehousebillsfeesMapper.selectFeesByPId(id, null);
-        if (CollectionUtils.isNotEmpty(warehousebillsfees)){
+        if (CollectionUtils.isNotEmpty(warehousebillsfees)) {
             for (TWarehousebillsfees warehousebillsfee : warehousebillsfees) {
-                if (warehousebillsfee.getfAccamount() != null && warehousebillsfee.getfAccamount().compareTo(new BigDecimal(BigInteger.ZERO)) ==1){
+                if (warehousebillsfee.getfAccamount() != null && warehousebillsfee.getfAccamount().compareTo(new BigDecimal(BigInteger.ZERO)) == 1) {
                     return AjaxResult.error("费用已对账");
                 }
-                if (warehousebillsfee.getfStlamount() != null && warehousebillsfee.getfStlamount().compareTo(new BigDecimal(BigInteger.ZERO)) ==1){
+                if (warehousebillsfee.getfStlamount() != null && warehousebillsfee.getfStlamount().compareTo(new BigDecimal(BigInteger.ZERO)) == 1) {
                     return AjaxResult.error("费用已收费付费");
                 }
-                if (warehousebillsfee.getfInvamount() != null && warehousebillsfee.getfInvamount().compareTo(new BigDecimal(BigInteger.ZERO)) ==1){
+                if (warehousebillsfee.getfInvamount() != null && warehousebillsfee.getfInvamount().compareTo(new BigDecimal(BigInteger.ZERO)) == 1) {
                     return AjaxResult.error("费用已开票");
                 }
             }

+ 25 - 0
ruoyi-warehouse/src/main/resources/mapper/basicData/TWarehouseMapper.xml

@@ -25,6 +25,7 @@
         <result property="updateTime" column="update_time"/>
         <result property="remark" column="remark"/>
         <result property="fLocation" column="f_location"/>
+        <result property="hasChildren" column="has_children"/>
         <result property="fWarehouseInformation" column="f_warehouse_information"/>
     </resultMap>
 
@@ -73,6 +74,30 @@
         order by parent_id, order_num
     </select>
 
+    <select id="lazyList" parameterType="TWarehouse" resultMap="TWarehouseResult">
+        select
+            ware.f_id, ware.parent_id, ware.order_num,ware.f_no, ware.f_name,ware.f_totalgross, ware.f_location,
+               ware.f_addr,ware.f_contacts,ware.f_tel,ware.f_charg,ware.f_is_bonded,ware.remark,ware.f_status,
+            (
+            SELECT
+                CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END
+            FROM
+                t_warehouse
+            WHERE
+                parent_id = ware.f_id AND del_flag = '0'
+            ) AS "has_children"
+        from t_warehouse ware
+        <where>
+            <if test="parentId != null">and ware.parent_id = #{parentId}</if>
+            <if test="fNo != null  and fNo != ''">and ware.f_no like concat('%', #{fNo}, '%')</if>
+            <if test="fName != null  and fName != ''">and ware.f_name like concat('%', #{fName}, '%')</if>
+            <if test="fStatus != null  and fStatus != ''">and ware.f_status = #{fStatus}</if>
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        order by ware.parent_id, ware.order_num
+    </select>
+
     <select id="selectTWarehouseLists" parameterType="TWarehouse" resultMap="TWarehouseResult">
         <include refid="selectTWarehouseVo"/>
         <where>