Selaa lähdekoodia

Merge remote-tracking branch 'origin/dev' into _update/bug

# Conflicts:
#	ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/service/impl/TWhgenlegServiceImpl.java
#	ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/enums/WarehouseTypeEnum.java
#	ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java
caifc 4 vuotta sitten
vanhempi
commit
fdf8a3ae2d
39 muutettua tiedostoa jossa 1129 lisäystä ja 145 poistoa
  1. 0 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/reportManagement/TWhgenlegController.java
  2. 8 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TEnclosureController.java
  3. 6 5
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseGoodsTransferController.java
  4. 34 14
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseInStockController.java
  5. 16 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseOutStockController.java
  6. 14 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehousebillsitemsController.java
  7. 35 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/app/TWarehousebillsAppController.java
  8. 37 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/enums/WarehouseEnum.java
  9. 27 4
      ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
  10. 1 1
      ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/impl/FtmsorderbillscarsServiceImpl.java
  11. 5 6
      ruoyi-shipping/src/main/java/com/ruoyi/shipping/service/impl/TCntrnoServiceImpl.java
  12. 20 0
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/domain/GoodsVO.java
  13. 0 2
      ruoyi-warehouse/src/main/java/com/ruoyi/finance/service/impl/TFeeServiceImpl.java
  14. 15 0
      ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/domain/vo/WhgenlegVO.java
  15. 10 9
      ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/excel/Payable.java
  16. 19 15
      ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/service/impl/TWhgenlegServiceImpl.java
  17. 19 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/WarehouseBillsfilterService.java
  18. 128 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/impl/WarehouseBillsfilterServiceImpl.java
  19. 25 22
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehousebillsModify.java
  20. 1 1
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehousebillsitems.java
  21. 30 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehouseDTO.java
  22. 31 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehousebillsDTO.java
  23. 17 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/enums/WarehouseTypeEnum.java
  24. 14 6
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/vo/WarehouseBillsVO.java
  25. 33 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/vo/WarehouseTimeIntervalVO.java
  26. 22 2
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/mapper/TWarehouseBillsMapper.java
  27. 11 1
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/mapper/TWarehousebillsitemsMapper.java
  28. 9 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITEnclosureService.java
  29. 27 2
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java
  30. 11 1
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehousebillsitemsService.java
  31. 13 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TEnclosureServiceImpl.java
  32. 287 40
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java
  33. 133 3
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehousebillsitemsServiceImpl.java
  34. 1 0
      ruoyi-warehouse/src/main/resources/mapper/approvalFlow/AuditItemsMapper.xml
  35. 1 0
      ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml
  36. 1 0
      ruoyi-warehouse/src/main/resources/mapper/warehouse/TWarehouseCheckItemsMapper.xml
  37. 51 7
      ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsMapper.xml
  38. 2 1
      ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsModifyMapper.xml
  39. 15 1
      ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsitemsMapper.xml

+ 0 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/reportManagement/TWhgenlegController.java

@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.warehouse.reportManagement;
 
-import com.ruoyi.basicData.service.ITCorpsService;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
@@ -15,7 +14,6 @@ import com.ruoyi.reportManagement.domain.TWhgenleg;
 import com.ruoyi.reportManagement.dto.TWarehousebill;
 import com.ruoyi.reportManagement.excel.Whgenleg;
 import com.ruoyi.reportManagement.service.ITWhgenlegService;
-import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;

+ 8 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TEnclosureController.java

@@ -59,6 +59,14 @@ public class TEnclosureController extends BaseController {
     }
 
     /**
+     * 根据上级id查询附件
+     */
+    @GetMapping(value = "infoByPid")
+    public AjaxResult infoByPid(@RequestParam("pId") Long pId) {
+        return tEnclosureService.selectInfoByPid(pId);
+    }
+
+    /**
      * 新增附件
      */
     @PreAuthorize("@ss.hasPermi('warehouseBusiness:enclosure:add')")

+ 6 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseGoodsTransferController.java

@@ -14,6 +14,7 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
 import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
 import com.ruoyi.warehouseBusiness.excel.GoodsTransfer;
 import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
@@ -234,16 +235,16 @@ public class TWarehouseGoodsTransferController extends BaseController {
     }
 
     /**
-     * 货转根据提单号查询可用客户、仓库信息
+     * 货转根据条件查询可用客户、仓库信息
      */
     @DataScope(deptAlias = "d", userAlias = "u")
-    @GetMapping(value = "/corpOrWarehouseByMblno")
-    public AjaxResult corpOrWarehouseByMblno(@RequestParam("mblno") String fMblno) {
+    @PostMapping(value = "/corpOrWarehouseByMblno")
+    public AjaxResult corpOrWarehouseByMblno(@RequestBody WarehousebillsDTO warehousebillsDTO) {
         // 判断是否传入值
-        if (StringUtils.isEmpty(fMblno)) {
+        if (StringUtils.isNull(warehousebillsDTO) || StringUtils.isEmpty(warehousebillsDTO.getfMblno())) {
             return AjaxResult.error("未找到提单号");
         }
-        return itWarehouseBillsService.corpOrWarehouseByMblno(fMblno);
+        return itWarehouseBillsService.corpOrWarehouseByMblno(warehousebillsDTO);
     }
 
     /**

+ 34 - 14
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseInStockController.java

@@ -15,6 +15,8 @@ import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.domain.SysCheckCode;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
+import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
 import com.ruoyi.warehouseBusiness.excel.InStock;
 import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -99,8 +101,7 @@ public class TWarehouseInStockController extends BaseController {
      */
     //@Log(title = "导入集装箱动态", businessType = BusinessType.IMPORT)
     @PostMapping(value = "/importInstock")
-    public AjaxResult importInstock(@RequestParam("file") MultipartFile file)
-    {
+    public AjaxResult importInstock(@RequestParam("file") MultipartFile file) {
         return itWarehouseBillsService.importLibraryInformation(file);
     }
 
@@ -168,11 +169,11 @@ public class TWarehouseInStockController extends BaseController {
     @PostMapping(value = "/submitWarehousingApproval")
     @RepeatSubmit
     public AjaxResult submitWarehousingApproval(@RequestParam("tWarehouseBills") String tWarehouseBills,
-                                          @RequestParam("tEnclosure") String tEnclosure,
-                                          @RequestParam("tCntr") String tCntr,
-                                          @RequestParam("tWarehousebillsfeesCr") String tWarehousebillsfeesCr,
-                                          @RequestParam("tWarehousebillsfeesDr") String tWarehousebillsfeesDr,
-                                          @RequestParam("tWarehousebillsitems") String tWarehousebillsitems) {
+                                                @RequestParam("tEnclosure") String tEnclosure,
+                                                @RequestParam("tCntr") String tCntr,
+                                                @RequestParam("tWarehousebillsfeesCr") String tWarehousebillsfeesCr,
+                                                @RequestParam("tWarehousebillsfeesDr") String tWarehousebillsfeesDr,
+                                                @RequestParam("tWarehousebillsitems") String tWarehousebillsitems) {
         String billsType = "SJRK";
         if (StringUtils.isNull(tWarehouseBills) || "{}".equals(tWarehouseBills)) {
             return AjaxResult.error("未找到仓库主表数据,请确认");
@@ -219,11 +220,11 @@ public class TWarehouseInStockController extends BaseController {
     public AjaxResult withdrawById(@PathVariable("fId") Long fId) {
         // 查询是否对账、收费、付费
         int result = itWarehouseBillsService.derecognition(fId);
-        if(result == 1){
+        if (result == 1) {
             return AjaxResult.error("撤销请核失败,财务已对账");
-        } else if (result == 2){
+        } else if (result == 2) {
             return AjaxResult.error("撤销请核失败,财务已收费");
-        } else if (result == 3){
+        } else if (result == 3) {
             return AjaxResult.error("撤销请核失败,财务已付费");
         }
         String billsType = "SJRKRevoke";
@@ -344,11 +345,11 @@ public class TWarehouseInStockController extends BaseController {
     public AjaxResult addDetails(@PathVariable("fId") Long fId) {
         String billsType = "SJRKITEM";
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        return itWarehouseBillsService.addDetails(fId, billsType,loginUser);
+        return itWarehouseBillsService.addDetails(fId, billsType, loginUser);
     }
 
     /**
-     *   明細流水号
+     * 明細流水号
      */
     @PostMapping(value = "/serialNumber")
     public AjaxResult serialNumber() {
@@ -357,7 +358,8 @@ public class TWarehouseInStockController extends BaseController {
     }
 
     /**
-     *  根据id更新费用审核状态
+     * 根据id更新费用审核状态
+     *
      * @param id
      * @return
      */
@@ -368,7 +370,8 @@ public class TWarehouseInStockController extends BaseController {
     }
 
     /**
-     *  根据id撤销已费用审核状态
+     * 根据id撤销已费用审核状态
+     *
      * @param id
      * @return
      */
@@ -378,4 +381,21 @@ public class TWarehouseInStockController extends BaseController {
         return itWarehouseBillsService.revokefeeReview(id);
     }
 
+
+    /**
+     * 入库暂存
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/quick_storage")
+    @RepeatSubmit
+    public AjaxResult quickStorage(@RequestBody WarehousebillsDTO warehousebillsDTO) {
+        // 判断有箱号 就加箱号判断、无箱号则不加箱号判断
+        warehousebillsDTO.setfBilltype(WarehouseTypeEnum.SJRK.getType());
+        // 判断是提单号是否在一天当中出现第二次或以上
+        itWarehouseBillsService.checkMblNoRepeat(warehousebillsDTO);
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.quickOperation(warehousebillsDTO, loginUser);
+    }
+
 }

+ 16 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseOutStockController.java

@@ -14,6 +14,8 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
+import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
 import com.ruoyi.warehouseBusiness.excel.OutStock;
 import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -391,4 +393,18 @@ public class TWarehouseOutStockController extends BaseController {
         return itWarehouseBillsService.revokefeeReview(id);
     }
 
+    /**
+     * 入库暂存
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/quick_delivery")
+    @RepeatSubmit
+    public AjaxResult quickDelivery(@RequestBody WarehousebillsDTO warehousebillsDTO) {
+        // 判断有箱号 就加箱号判断、无箱号则不加箱号判断
+        warehousebillsDTO.setfBilltype(WarehouseTypeEnum.SJCK.getType());
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.quickOperation(warehousebillsDTO, loginUser);
+    }
+
 }

+ 14 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehousebillsitemsController.java

@@ -3,8 +3,10 @@ package com.ruoyi.web.controller.warehouse.warehouseBusiness;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehouseDTO;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
 import com.ruoyi.warehouseBusiness.service.ITWarehousebillsitemsService;
@@ -98,4 +100,16 @@ public class TWarehousebillsitemsController extends BaseController {
         List<Map<String, Object>> maps = tWarehousebillsitemsService.selectStorageFeeItemfTruckNo();
         return AjaxResult.success(maps);
     }
+
+    /**
+     * 计算仓库时间范围内入库比较
+     */
+    @PostMapping("/warehouseComparison")
+    public AjaxResult warehouseComparison(@RequestBody WarehouseDTO warehouseDto) {
+        if (StringUtils.isEmpty(warehouseDto.getQueryType()) || StringUtils.isNull(warehouseDto.getQueryTime())) {
+            return AjaxResult.error("未找到查寻类型与日期");
+        }
+        return tWarehousebillsitemsService.warehouseComparison(warehouseDto);
+    }
+
 }

+ 35 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/app/TWarehousebillsAppController.java

@@ -0,0 +1,35 @@
+package com.ruoyi.web.controller.warehouse.warehouseBusiness.app;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 仓库app控制层
+ *
+ * @author ruoyi
+ * @date 2021-10-27
+ */
+@RestController
+@RequestMapping("/warehouse/app")
+public class TWarehousebillsAppController extends BaseController {
+    @Autowired
+    private ITWarehouseBillsService itWarehouseBillsService;
+
+    /**
+     * 查询库存总帐明细
+     *
+     * @param id 查询条件
+     * @return 库存总帐明细
+     */
+    @GetMapping("/whgenlegDetail")
+    public AjaxResult whgenlegDetail(@RequestParam("id") Long id) {
+        return itWarehouseBillsService.selectWhgenlegDetail(id);
+    }
+
+}

+ 37 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/enums/WarehouseEnum.java

@@ -0,0 +1,37 @@
+package com.ruoyi.common.core.domain.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Objects;
+
+/**
+ * @author caifc
+ * @date 2021-10-22 17:19
+ */
+@Getter
+@AllArgsConstructor
+public enum WarehouseEnum {
+
+    // 计算入库时间区间类型
+
+    BY_YEAR("year", "按照年"),
+    BY_MONTH("month", "按照月"),
+    BY_WEEK("week", "按照周"),
+
+
+    ;
+
+    private final String type;
+    private final String name;
+
+    public static WarehouseEnum fromType(String tp) {
+        for (WarehouseEnum type : WarehouseEnum.values()) {
+            if (Objects.equals(type.getType(), tp)) {
+                return type;
+            }
+        }
+        throw new IllegalArgumentException("warehouse type not exist");
+    }
+
+}

+ 27 - 4
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -245,7 +245,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
      *  获取当前月份第一天与最后一天
      * @return
      */
-    public static List<String> getMonth()
+    public static List<String> getMonthList()
     {
         List<String> stringList = new ArrayList<>();
         Calendar cale = null;
@@ -339,7 +339,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
      * @param date
      * @return
      */
-    public static Date dateConversionMax(Date date) {
+    public static Date dateConversionMax(Date date)
+    {
         LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
         LocalDateTime startOfDay = localDateTime.with(LocalTime.MAX);
         return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
@@ -350,7 +351,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
      * @param date
      * @return
      */
-    public static Date dateConversionMin(Date date) {
+    public static Date dateConversionMin(Date date)
+    {
         LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
         LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
         return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
@@ -361,8 +363,29 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
      * @param date
      * @return
      */
-    public static String dateToString (Date date){
+    public static String dateToString (Date date)
+    {
         return parseDateToStr(YYYY_MM_DD_HH_MM_SS, date);
     }
 
+    /**
+     *  获取传入日期年份
+     * @param date
+     * @return
+     */
+    public static String getYear (Date date)
+    {
+        return parseDateToStr(YYYY, date);
+    }
+
+    /**
+     *  获取传入日期月份
+     * @param date
+     * @return
+     */
+    public static String getMonth (Date date)
+    {
+        return parseDateToStr(MM, date);
+    }
+
 }

+ 1 - 1
ruoyi-fleet/src/main/java/com/ruoyi/orderPlan/service/impl/FtmsorderbillscarsServiceImpl.java

@@ -233,7 +233,7 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
         // 月份
         Ftmsorderbillscars ftmsorderbillscars = new Ftmsorderbillscars();
         ftmsorderbillscars.setDriverTel(phoneNumber);
-        ftmsorderbillscars.setMonthList(DateUtils.getMonth());
+        ftmsorderbillscars.setMonthList(DateUtils.getMonthList());
         Map<String, Object> map = ftmsorderbillscarsMapper.selectMonthlyOrder(ftmsorderbillscars);
         map.put("count", count);
         return AjaxResult.success(map);

+ 5 - 6
ruoyi-shipping/src/main/java/com/ruoyi/shipping/service/impl/TCntrnoServiceImpl.java

@@ -657,14 +657,13 @@ public class TCntrnoServiceImpl implements ITCntrnoService {
                             if (StringUtils.isEmpty(dataFormatString)) {
                                 return AjaxResult.error("Excel箱信息数据第" + line + "行数据缺少动态日期");
                             }
-                            Date parse = HSSFDateUtil.getJavaDate(Double.valueOf(dataFormatString));
-                           /* Date parse = new Date();
+                            Date parse = null;
                             try {
-                                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
-                                parse = simpleDateFormat.parse(dataFormatString);
+                                parse = HSSFDateUtil.getJavaDate(Double.valueOf(dataFormatString));
                             }catch (Exception e){
-                                return AjaxResult.error("日期格式有误,正确格式如: 2021/9/2 15:11:22");
-                            }*/
+                                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                                parse = simpleDateFormat.parse(dataFormatString);
+                            }
                             companyMsg.setfUpdatetime(parse);
                             break;
                         case "船名":

+ 20 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/domain/GoodsVO.java

@@ -0,0 +1,20 @@
+package com.ruoyi.basicData.domain;
+
+import lombok.Data;
+
+/**
+ * @author caifc
+ * @date 2021-11-16 16:49
+ */
+@Data
+public class GoodsVO extends TGoods {
+    private static final long serialVersionUID = 1L;
+
+
+    private String fMarks;
+
+
+    private Long fBusinessType;
+
+
+}

+ 0 - 2
ruoyi-warehouse/src/main/java/com/ruoyi/finance/service/impl/TFeeServiceImpl.java

@@ -39,7 +39,6 @@ import com.ruoyi.shipping.domain.TFeeInvoice;
 import com.ruoyi.shipping.domain.TVessel;
 import com.ruoyi.shipping.domain.TVoyage;
 import com.ruoyi.shipping.excel.Account;
-import com.ruoyi.shipping.excel.DeriveInventoryExcel;
 import com.ruoyi.shipping.excel.ExportFinancial;
 import com.ruoyi.shipping.mapper.TFeeInvoiceMapper;
 import com.ruoyi.shipping.mapper.TVesselMapper;
@@ -73,7 +72,6 @@ import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * 财务数据主Service业务层处理

+ 15 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/domain/vo/WhgenlegVO.java

@@ -0,0 +1,15 @@
+package com.ruoyi.reportManagement.domain.vo;
+
+import com.ruoyi.reportManagement.domain.TWhgenleg;
+import lombok.Data;
+
+/**
+ * @author caifc
+ * @date 2021-11-15 11:20
+ */
+@Data
+public class WhgenlegVO extends TWhgenleg {
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 10 - 9
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/excel/Payable.java

@@ -3,6 +3,7 @@ package com.ruoyi.reportManagement.excel;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -55,19 +56,19 @@ public class Payable {
      * 应收金额
      */
     @Excel(name = "应付金额")
-    private Double fAmount;
+    private BigDecimal fAmount;
 
     /**
      * 实收金额
      */
     @Excel(name = "实付金额")
-    private Double fStlamount;
+    private BigDecimal fStlamount;
 
     /**
      * 未收金额
      */
     @Excel(name = "未付金额")
-    private Double nnfinished;
+    private BigDecimal nnfinished;
 
     public String getfName() {
         return fName;
@@ -117,27 +118,27 @@ public class Payable {
         this.fReviewDate = fReviewDate;
     }
 
-    public Double getfAmount() {
+    public BigDecimal getfAmount() {
         return fAmount;
     }
 
-    public void setfAmount(Double fAmount) {
+    public void setfAmount(BigDecimal fAmount) {
         this.fAmount = fAmount;
     }
 
-    public Double getfStlamount() {
+    public BigDecimal getfStlamount() {
         return fStlamount;
     }
 
-    public void setfStlamount(Double fStlamount) {
+    public void setfStlamount(BigDecimal fStlamount) {
         this.fStlamount = fStlamount;
     }
 
-    public Double getNnfinished() {
+    public BigDecimal getNnfinished() {
         return nnfinished;
     }
 
-    public void setNnfinished(Double nnfinished) {
+    public void setNnfinished(BigDecimal nnfinished) {
         this.nnfinished = nnfinished;
     }
 }

+ 19 - 15
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/service/impl/TWhgenlegServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ruoyi.basicData.domain.TCustomerContact;
 import com.ruoyi.basicData.mapper.TCustomerContactMapper;
 import com.ruoyi.basicData.mapper.TWarehouseMapper;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.TWarehouse;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -426,24 +427,27 @@ public class TWhgenlegServiceImpl implements ITWhgenlegService {
 
     @Override
     public List<Map<String, Object>> appWhGenLegList(TWhgenleg tWhgenleg) {
-        List<Map<String, Object>> list = new ArrayList<>();
+        List<Map<String, Object>> list;
         TCustomerContact customerContact = new TCustomerContact();
-        customerContact.setfTel(SecurityUtils.getLoginUser().getUser().getPhonenumber());
-        List<TCustomerContact> tCustomerContacts = customerContactMapper.selectTCustomerContactList(customerContact);
-        if (CollectionUtils.isNotEmpty(tCustomerContacts)) {
-            tWhgenleg.setfCorpid(tCustomerContacts.get(0).getfPid());
-            if (StringUtils.isNotNull(tWhgenleg.getfWarehouseLocationid())) {
-                // 获取仓库信息
-                TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(tWhgenleg.getfWarehouseLocationid());
-                if (tWarehouse.getfLocation() == 1) {
-                    tWhgenleg.setfLocation(1L);
-                } else {
-                    tWhgenleg.setfLocation(0L);
-                }
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        if ("外部用户".equals(user.getDept().getDeptName())) {
+            customerContact.setfTel(SecurityUtils.getLoginUser().getUser().getPhonenumber());
+            List<TCustomerContact> tCustomerContacts = customerContactMapper.selectTCustomerContactList(customerContact);
+            if (CollectionUtils.isNotEmpty(tCustomerContacts)) {
+                tWhgenleg.setfCorpid(tCustomerContacts.get(0).getfPid());
+            }
+        }
+        if (StringUtils.isNotNull(tWhgenleg.getfWarehouseLocationid())) {
+            // 获取仓库信息
+            TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(tWhgenleg.getfWarehouseLocationid());
+            if (tWarehouse.getfLocation() == 1) {
+                tWhgenleg.setfLocation(1L);
+            } else {
+                tWhgenleg.setfLocation(0L);
             }
-            list = tWhgenlegMapper.selectInventoryMapList(tWhgenleg);
         }
-        if (SecurityUtils.getUsername().equals("admin")) {
+        list = tWhgenlegMapper.selectInventoryMapList(tWhgenleg);
+        if ("admin".equals(SecurityUtils.getUsername())) {
             list = tWhgenlegMapper.selectInventoryMapList(tWhgenleg);
         }
         return list;

+ 19 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/WarehouseBillsfilterService.java

@@ -0,0 +1,19 @@
+package com.ruoyi.warehouseBusiness.component;
+
+import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
+
+/**
+ *
+ *
+ * @author  caifc
+ * @date 2021-11-15 9:54
+*/
+public interface WarehouseBillsfilterService {
+
+    /**
+     *  校验仓库信息
+     * @param warehousebillsDTO
+     */
+    void filter(WarehousebillsDTO warehousebillsDTO);
+
+}

+ 128 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/impl/WarehouseBillsfilterServiceImpl.java

@@ -0,0 +1,128 @@
+package com.ruoyi.warehouseBusiness.component.impl;
+
+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.TWarehousebillsitems;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
+import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
+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;
+
+/**
+ * @author caifc
+ * @date 2021-11-15 9:55
+ */
+@Slf4j
+@Component
+@AllArgsConstructor
+public class WarehouseBillsfilterServiceImpl implements WarehouseBillsfilterService {
+
+
+    @Override
+    public void filter(WarehousebillsDTO warehousebillsDTO) {
+        // 校验仓储信息
+        filterWarehouseBills(warehousebillsDTO);
+        // 校验明细
+        List<TWarehousebillsitems> itemList = warehousebillsDTO.getWarehousebillsitemsList();
+        if (CollectionUtils.isNotEmpty(itemList)) {
+            filterItem(itemList);
+        }
+    }
+
+    /**
+     * 校验仓储主表信息
+     *
+     * @param warehousebillsDTO 主表信息
+     */
+    private void filterWarehouseBills(WarehousebillsDTO warehousebillsDTO) {
+        if (StringUtils.isNull(warehousebillsDTO.getfCorpid())) {
+            throw new WarehouseException("请维护客户信息");
+        }
+        if (StringUtils.isNull(warehousebillsDTO.getfBsdate())) {
+            throw new WarehouseException("请维护计划日期");
+        }
+        if (StringUtils.isNull(warehousebillsDTO.getfWarehouseid())) {
+            throw new WarehouseException("请维护仓库信息");
+        }
+        if (StringUtils.isEmpty(warehousebillsDTO.getfStorekeeper())) {
+            throw new WarehouseException("请维护仓库人");
+        }
+        if (StringUtils.isNull(warehousebillsDTO.getfTrademodeid())) {
+            throw new WarehouseException("请维护贸易方式");
+        }
+        // 入库校验
+        if (warehousebillsDTO.getfBilltype().equals(WarehouseTypeEnum.SJRK.getType())) {
+            if (StringUtils.isEmpty(warehousebillsDTO.getfChargetype())) {
+                throw new WarehouseException("请维护仓储费方式");
+            }
+            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("请维护计费单位");
+            }
+        }
+    }
+
+    /**
+     * 校验明细信息
+     *
+     * @param itemList 明细信息
+     */
+    private void filterItem(List<TWarehousebillsitems> itemList) {
+        int line = 1;
+        for (TWarehousebillsitems li : itemList) {
+            if (StringUtils.isNull(li.getfGoodsid())) {
+                throw new WarehouseException("序号" + line + "明细仓储明细未选择商品");
+            }
+            if (StringUtils.isNull(li.getfWarehouselocid())) {
+                throw new WarehouseException("序号" + line + "明细仓储明细未选择库区");
+            }
+            if (StringUtils.isNull(li.getfBsdate())) {
+                throw new WarehouseException("序号" + line + "明细仓储明细未选择业务日期");
+            }
+            if (StringUtils.isNull(li.getfBusinessType())) {
+                throw new WarehouseException("序号" + line + "明细仓储明细未选择货物属性");
+            }
+            if (StringUtils.isEmpty(li.getfMarks())) {
+                throw new WarehouseException("序号" + line + "明细仓储明细未选择货物详情");
+            }
+            if (StringUtils.isEmpty(li.getfCntrno())) {
+                throw new WarehouseException("序号" + line + "明细仓储明细未选择箱号");
+            }
+            if (StringUtils.isNull(li.getfQty()) || Objects.equals(li.getfQty(), 0L)) {
+                throw new WarehouseException("序号" + line + "明细仓储明细未选填入数量");
+            }
+            line++;
+        }
+    }
+
+}

+ 25 - 22
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehousebillsModify.java

@@ -1,12 +1,11 @@
 package com.ruoyi.warehouseBusiness.domain;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
-import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 仓库主(出入库)对象 t_warehousebills_modify
@@ -97,10 +96,18 @@ public class TWarehousebillsModify extends BaseEntity {
     /**
      * 客户信息
      */
-    @TableField(exist = false)
-    @Excel(name = "客户信息")
     private String corpName;
 
+    /**
+     * 制单时间
+     */
+    private List<String> createTimeList;
+
+    /**
+     * 业务时间
+     */
+    private List<String> bstimeList;
+
     public Long getfId() {
         return fId;
     }
@@ -213,23 +220,19 @@ public class TWarehousebillsModify extends BaseEntity {
         this.corpName = corpName;
     }
 
-    @Override
-    public String toString() {
-        return "TWarehousebillsModify{" +
-                "fId=" + fId +
-                ", fPid=" + fPid +
-                ", fBillno='" + fBillno + '\'' +
-                ", fCorpid=" + fCorpid +
-                ", fBilltype='" + fBilltype + '\'' +
-                ", fDc='" + fDc + '\'' +
-                ", fMblno='" + fMblno + '\'' +
-                ", fGoodsid=" + fGoodsid +
-                ", fMarks='" + fMarks + '\'' +
-                ", fWarehouseid=" + fWarehouseid +
-                ", fStatus='" + fStatus + '\'' +
-                ", fBstime=" + fBstime +
-                ", delFlag='" + delFlag + '\'' +
-                ", corpName='" + corpName + '\'' +
-                '}';
+    public List<String> getCreateTimeList() {
+        return createTimeList;
+    }
+
+    public void setCreateTimeList(List<String> createTimeList) {
+        this.createTimeList = createTimeList;
+    }
+
+    public List<String> getBstimeList() {
+        return bstimeList;
+    }
+
+    public void setBstimeList(List<String> bstimeList) {
+        this.bstimeList = bstimeList;
     }
 }

+ 1 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehousebillsitems.java

@@ -167,7 +167,7 @@ public class TWarehousebillsitems extends BaseEntity {
      * 尺码
      */
     @Excel(name = "尺码")
-    private BigDecimal fVolumn;
+    private BigDecimal fVolumn = BigDecimal.ZERO;
 
     /**
      * 毛重

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

@@ -0,0 +1,30 @@
+package com.ruoyi.warehouseBusiness.domain.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author caifc
+ * @date 2021-11-12 11:12
+ */
+@Data
+public class WarehouseDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    // 查询类型(按照年、按照月、按照周)
+    private String queryType;
+
+    // 查询参考时间
+    private Date queryTime;
+
+    // 查询的仓库类型
+    private String warehouseType;
+
+    // 查询时间区间
+    private List<String> timeList;
+
+}

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

@@ -0,0 +1,31 @@
+package com.ruoyi.warehouseBusiness.domain.dto;
+
+import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
+import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 仓库主(出入库)对象 t_warehousebills_modify
+ *
+ * @author ruoyi
+ * @date 2021-10-27
+ */
+@Data
+public class WarehousebillsDTO extends TWarehouseBills {
+    private static final long serialVersionUID = 1L;
+
+    // 操作类型(查询客户、仓库、商品)
+    private String type;
+
+    // 查询客户id
+    private Long corpId;
+
+    // 仓储主表id
+    private Long warehouseId;
+
+    // 仓储明细数据
+    List<TWarehousebillsitems> warehousebillsitemsList;
+
+}

+ 17 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/enums/WarehouseTypeEnum.java

@@ -59,6 +59,13 @@ public enum WarehouseTypeEnum {
     APPROVE("6", "请核完成"),
 
 
+    // 仓库主表明细状态
+    DETAILED_STATUS_PLAN("1", "计划"),
+    DETAILED_STATUS_WAITING("2", "待xx"),
+    DETAILED_STATUS_PROCESSING("3", "xx中"),
+    DETAILED_STATUS_PROCESSED("4", "已xx"),
+
+
     // 编号生成简写
 
     SJRK_NO("RK", "费用变更"),
@@ -80,6 +87,16 @@ public enum WarehouseTypeEnum {
     // 统一
     FIXED("5", "吨"),
 
+    // 是否计入库存总帐
+    INVENTORY("0", "计入库存总帐"),
+    NOT_INVENTORY("1", "计入库存总帐"),
+
+    // 根据提单号、客户、仓库查询商品信息类型
+    BY_MBLNO("mblno", "根据提单号查询"),
+    BY_CPRP("corp", "根据客户查询"),
+    BY_WAREHOUSE("warehouse", "根据仓库查询"),
+
+
     // 查询库存帐操作
     CONFIRM_OPERATION("0", "确认入库、出库、货转、调拨"),
     UNDO_OPERATION("1", "撤回入库、出库、货转、调拨"),

+ 14 - 6
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/vo/WarehouseBillsVO.java

@@ -1,5 +1,6 @@
 package com.ruoyi.warehouseBusiness.domain.vo;
 
+import com.ruoyi.basicData.domain.GoodsVO;
 import com.ruoyi.basicData.domain.TCorps;
 import com.ruoyi.common.core.domain.entity.TWarehouse;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
@@ -8,24 +9,31 @@ import lombok.Data;
 import java.util.List;
 
 /**
- *
- *
- * @author  caifc
+ * @author caifc
  * @date 2021-11-10 9:28
-*/
+ */
 @Data
 public class WarehouseBillsVO extends TWarehouseBills {
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 类型名称
+     */
+    private String billTypeName;
 
     /**
-     *  客户集合
+     * 客户集合
      */
     private List<TCorps> corpsList;
 
     /**
-     *  仓库集合
+     * 仓库集合
      */
     private List<TWarehouse> warehouseList;
 
+    /**
+     * 库存总帐查询商品信息
+     */
+    private List<GoodsVO> goodsVOList;
+
 }

+ 33 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/vo/WarehouseTimeIntervalVO.java

@@ -0,0 +1,33 @@
+package com.ruoyi.warehouseBusiness.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author caifc
+ * @date 2021-11-12 11:12
+ */
+@Data
+public class WarehouseTimeIntervalVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // 仓库id
+    private Long warehouseId;
+
+    // 仓库名称
+    private String warehouseName;
+
+    // 总数量
+    private Long sumQty = 0L;
+
+    // 上次数量
+    private Long lastQty = 0L;
+
+    // 本次数量
+    private Long thisQty = 0L;
+
+    // 差值数量
+    private Long difference = 0L;
+
+}

+ 22 - 2
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/mapper/TWarehouseBillsMapper.java

@@ -11,6 +11,8 @@ import com.ruoyi.shipping.excel.DeriveInventoryExcel;
 import com.ruoyi.shipping.excel.SingleVoyageByShipExcel;
 import com.ruoyi.warehouseBusiness.domain.TWareHouseExcelItems;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
+import com.ruoyi.warehouseBusiness.domain.vo.WarehouseBillsVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -254,9 +256,27 @@ public interface TWarehouseBillsMapper extends BaseMapper<TWarehouseBills> {
     public List<SingleVoyageByShipExcel> singleVoyageByShip(TWarehouseBills tWarehouseBills);
 
     /**
-     *  根据明细集合 查询仓库主表信息
-     * @param itemId   明细id
+     * 根据明细集合 查询仓库主表信息
+     *
+     * @param itemId 明细id
      * @return
      */
     TWarehouseBills selectByItemId(@Param("id") Long itemId);
+
+    /**
+     * 根据提单号与箱型查询是否在业务日期重复录入了
+     *
+     * @param warehousebillsDTO 查询条件
+     * @return
+     */
+    int selectByMblnoOrCntrnoCount(@Param("dto") WarehousebillsDTO warehousebillsDTO);
+
+    /**
+     * 根据提单号查询
+     *
+     * @param id 库存总账id
+     * @return
+     */
+    List<WarehouseBillsVO> selectWhgenlegDetailById(Long id);
+
 }

+ 11 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/mapper/TWarehousebillsitemsMapper.java

@@ -4,7 +4,9 @@ package com.ruoyi.warehouseBusiness.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehouseDTO;
 import com.ruoyi.warehouseBusiness.domain.vo.CalculateStorageFeesInfoVO;
+import com.ruoyi.warehouseBusiness.domain.vo.WarehouseTimeIntervalVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -270,10 +272,18 @@ public interface TWarehousebillsitemsMapper extends BaseMapper<TWarehousebillsit
     List<TWarehousebillsitems> selectByBsDateList(@Param("starDate") Date starDate, @Param("endDate") Date endDate);
 
     /**
-     *  根据客户id、时间区间、状态查询仓储明细
+     * 根据客户id、时间区间、状态查询仓储明细
+     *
      * @param tWarehouseBills
      * @return
      */
     List<TWarehousebillsitems> selectListByCorpId(@Param("bills") TWarehouseBills tWarehouseBills);
 
+    /**
+     * 根据日期区间计算 仓库入库数量比较
+     *
+     * @param warehouseDto
+     * @return
+     */
+    List<WarehouseTimeIntervalVO> selectInboundQtyByTime(@Param("dto") WarehouseDTO warehouseDto);
 }

+ 9 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITEnclosureService.java

@@ -1,6 +1,7 @@
 package com.ruoyi.warehouseBusiness.service;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.warehouseBusiness.domain.TEnclosure;
 
 import java.util.List;
@@ -59,4 +60,12 @@ public interface ITEnclosureService {
      * @return 结果
      */
     public int deleteTEnclosureById(Long fId);
+
+    /**
+     * 根据上级id查询附件集合
+     *
+     * @param fPid 上级id
+     * @return
+     */
+    AjaxResult selectInfoByPid(Long fPid);
 }

+ 27 - 2
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java

@@ -10,6 +10,7 @@ import com.ruoyi.warehouseBusiness.domain.StorageChargeInsert;
 import com.ruoyi.warehouseBusiness.domain.TWareHouseExcelItems;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
 import com.ruoyi.warehouseBusiness.excel.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -696,8 +697,32 @@ public interface ITWarehouseBillsService {
     /**
      * 货转根据提单号查询可用客户、仓库信息
      *
-     * @param fMblno 提单号
+     * @param warehousebillsDTO 提单号
      * @return
      */
-    AjaxResult corpOrWarehouseByMblno(String fMblno);
+    AjaxResult corpOrWarehouseByMblno(WarehousebillsDTO warehousebillsDTO);
+
+    /**
+     * 快速出、入库
+     *
+     * @param warehousebillsDTO 出库信息
+     * @param loginUser         登陆人
+     * @return
+     */
+    AjaxResult quickOperation(WarehousebillsDTO warehousebillsDTO, LoginUser loginUser);
+
+    /**
+     * 校验提单号是否在同一天出现第二次
+     *
+     * @param warehousebillsDTO 查询条件
+     */
+    void checkMblNoRepeat(WarehousebillsDTO warehousebillsDTO);
+
+    /**
+     * app查询库存总帐明细
+     *
+     * @param id 查询条件
+     * @return 库存总帐明细
+     */
+    AjaxResult selectWhgenlegDetail(Long id);
 }

+ 11 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehousebillsitemsService.java

@@ -1,8 +1,9 @@
 package com.ruoyi.warehouseBusiness.service;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehouseDTO;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -74,4 +75,13 @@ public interface ITWarehousebillsitemsService {
      * @return
      */
     public List<Map<String,Object>> selectStorageFeeItemfTruckNo();
+
+
+    /**
+     *  根据日期区间计算 仓库入库数量比较
+     * @param warehouseDto  查询条件
+     * @return
+     */
+    AjaxResult warehouseComparison(WarehouseDTO warehouseDto);
+
 }

+ 13 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TEnclosureServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.warehouseBusiness.service.impl;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.warehouseBusiness.domain.TEnclosure;
 import com.ruoyi.warehouseBusiness.mapper.TEnclosureMapper;
@@ -88,4 +89,16 @@ public class TEnclosureServiceImpl implements ITEnclosureService {
     public int deleteTEnclosureById(Long fId) {
         return tEnclosureMapper.deleteTEnclosureById(fId);
     }
+
+    /**
+     * 根据上级id查询附件集合
+     *
+     * @param fPid 上级id
+     * @return
+     */
+    @Override
+    public AjaxResult selectInfoByPid(Long fPid) {
+        return AjaxResult.success(tEnclosureMapper.selectTEnclosureByPId(fPid));
+    }
+
 }

+ 287 - 40
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -9,10 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ruoyi.approvalFlow.domain.AuditItems;
 import com.ruoyi.approvalFlow.mapper.AuditItemsMapper;
 import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
-import com.ruoyi.basicData.domain.TCorps;
-import com.ruoyi.basicData.domain.TFees;
-import com.ruoyi.basicData.domain.TGoods;
-import com.ruoyi.basicData.domain.TWarehouseArea;
+import com.ruoyi.basicData.domain.*;
 import com.ruoyi.basicData.mapper.*;
 import com.ruoyi.basicData.service.impl.TWarehouseServiceImpl;
 import com.ruoyi.common.config.RuoYiConfig;
@@ -41,12 +38,16 @@ import com.ruoyi.shipping.excel.TWarehousebillsCntritemsExcel;
 import com.ruoyi.shipping.mapper.*;
 import com.ruoyi.system.domain.SysCheckCode;
 import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.mapper.*;
+import com.ruoyi.system.mapper.SysConfigMapper;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.mapper.SysDictDataMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.impl.SysConfigServiceImpl;
-import com.ruoyi.warehouseBusiness.component.impl.QueryWhgenlegServiceImpl;
+import com.ruoyi.warehouseBusiness.component.WarehouseBillsfilterService;
 import com.ruoyi.warehouseBusiness.domain.*;
 import com.ruoyi.warehouseBusiness.domain.dto.CalculateStorageFeesDTO;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsDTO;
 import com.ruoyi.warehouseBusiness.domain.enums.FeesTypeEnum;
 import com.ruoyi.warehouseBusiness.domain.enums.WarehouseActIdEnum;
 import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
@@ -115,9 +116,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     private SysDeptMapper sysDeptMapper;
 
     @Autowired
-    private SysRoleMapper sysRoleMapper;
-
-    @Autowired
     private BillnoDelMapper billnoDelMapper;
 
     @Autowired
@@ -178,7 +176,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     private TWarehouseAgreementServiceImpl tWarehouseAgreementService;
 
     @Autowired
-    private TWarehouseAgreementitemsMapper tWarehouseAgreementitemsMapper;
+    private WarehouseBillsfilterService warehouseBillsfilterService;
 
     @Autowired
     private TWarehousebillsCntritemsMapper tWarehousebillsCntritemsMapper;
@@ -792,7 +790,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbDr.setfChargedate(warehouseBills.getfChargedate());
                 wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
                 wbDr.setCreateBy(loginUser.getUser().getUserName());
-                if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                     wbDr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
@@ -887,7 +885,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     warehousebillsCntr.setfPid(warehouseBills.getfId());
                     warehousebillsCntr.setCreateTime(DateUtils.getNowDate());
                     warehousebillsCntr.setCreateBy(SecurityUtils.getUsername());
-                    int cntr = tWarehousebillsCntrMapper.insertTWarehousebillsCntr(warehousebillsCntr);
+                    tWarehousebillsCntrMapper.insertTWarehousebillsCntr(warehousebillsCntr);
                 }
             }
         }
@@ -2080,7 +2078,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                             if (tCntrno == null) {
                                 tCnTrNoList.add(cell.getStringCellValue());
                             } else {
-                                if (tCntrno.getfTypeid() != null && tCntrno.getfTypeid() != tWarehousebillsCntr.getfCntrid()) {
+                                if (tCntrno.getfTypeid() != null && !Objects.equals(tCntrno.getfTypeid(), tWarehousebillsCntr.getfCntrid())) {
                                     List.add(cell.getStringCellValue());
                                 }
                             }
@@ -3347,10 +3345,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
             if (!businessStatus) {
                 // 查询库容量  是否可入库
-                if (calculation(tWarehouseBills.getfWarehouseid(), item.getfGrossweight()) == 0) {
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    return AjaxResult.error("更新库存总账失败-->入库毛重大于库容");
+                if (calculation(tWarehouseBills.getfWarehouseid(), item.getfGrossweight()) <= 0) {
+                    throw new WarehouseException("更新库存总账失败-->入库毛重大于库容");
                 }
+
                 item.setfOriginalbilldate(item.getfBsdate());
                 item.setfBillingway(tWarehouseBills.getfBillingway());
                 if ("1".equals(tWarehouseBills.getfChargetype())) {
@@ -6592,12 +6590,12 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         //TCntr tCntr = tCntrMapper.selectTCntrById(fId);//查询货物信息对应的箱类型
         TCntrno cnTrNo = tCntrnoMapper.selectTCnTrNoByfNo(tWarehousebillsCntritems.getfCntrno());//查询箱号对应的箱信息
         TCntr tCntr = tCntrMapper.selectTCntrById(cnTrNo.getfTypeid());//查询箱类型
-        if (cnTrNo != null && cnTrNo.getfTypeid() == tWarehousebillsCntritems.getfCntrid()) {
-            if (tWarehousebillsCntritems.getfCntrid() != fId) {
+        if (cnTrNo != null && Objects.equals(cnTrNo.getfTypeid(), tWarehousebillsCntritems.getfCntrid())) {
+            if (!Objects.equals(tWarehousebillsCntritems.getfCntrid(), fId)) {
                 TCntr cntr = tCntrMapper.selectTCntrById(fId);
                 return AjaxResult.error("箱号" + tWarehousebillsCntritems.getfCntrno() + "跟货物信息中箱类型不一致,箱类型应为:" + cntr.getfNo());
             }
-        } else if (cnTrNo != null && cnTrNo.getfTypeid() != tWarehousebillsCntritems.getfCntrid()) {
+        } else if (cnTrNo != null && !Objects.equals(cnTrNo.getfTypeid(), tWarehousebillsCntritems.getfCntrid())) {
             return AjaxResult.error("箱号" + tWarehousebillsCntritems.getfCntrno() + "跟基础信息中箱类型不一致,箱类型应为:" + tCntr.getfNo());
         }
         return AjaxResult.success();
@@ -7146,36 +7144,285 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     /**
      * 货转根据提单号查询可用客户、仓库信息
      *
-     * @param fMblno 提单号
+     * @param warehousebillsDTO 查询条件
      * @return
      */
     @Override
-    public AjaxResult corpOrWarehouseByMblno(String fMblno) {
+    public AjaxResult corpOrWarehouseByMblno(WarehousebillsDTO warehousebillsDTO) {
+        String fMblno = warehousebillsDTO.getfMblno();
         WarehouseBillsVO billsVO = new WarehouseBillsVO();
-        // 查询符合条件的库存总帐
-        TWhgenleg tWhgenleg = new TWhgenleg();
-        tWhgenleg.setfMblno(fMblno);
-        List<TWhgenleg> tWhgenlegs = tWhgenlegMapper.selectTWhgenlegList(tWhgenleg);
-        if (CollectionUtils.isNotEmpty(tWhgenlegs)) {
-            // 查询仓库信息
-            List<Long> warehouseIds = tWhgenlegs.stream().filter(leg -> Objects.nonNull(leg.getfWarehouseid())).map(TWhgenleg::getfWarehouseid)
-                    .distinct().collect(toList());
-            if (CollectionUtils.isNotEmpty(warehouseIds)) {
-                List<TWarehouse> warehouseList = tWarehouseMapper.selectByIds(warehouseIds);
-                billsVO.setWarehouseList(warehouseList);
-            }
-            // 查询客户
-            List<Long> corpIds = tWhgenlegs.stream().filter(leg -> Objects.nonNull(leg.getfCorpid())).map(TWhgenleg::getfCorpid)
-                    .distinct().collect(toList());
-            if (CollectionUtils.isNotEmpty(corpIds)) {
-                List<TCorps> corpsList = tCorpsMapper.selectByIds(corpIds);
-                billsVO.setCorpsList(corpsList);
+        // 查询客户
+        if (WarehouseTypeEnum.BY_MBLNO.getType().equals(warehousebillsDTO.getType())) {
+            // 查询符合条件的库存总帐
+            TWhgenleg tWhgenleg = new TWhgenleg();
+            tWhgenleg.setfMblno(fMblno);
+            List<TWhgenleg> tWhgenlegs = tWhgenlegMapper.selectTWhgenlegList(tWhgenleg);
+            if (CollectionUtils.isNotEmpty(tWhgenlegs)) {
+                // 查询客户
+                List<Long> corpIds = tWhgenlegs.stream().filter(leg -> Objects.nonNull(leg.getfCorpid())).map(TWhgenleg::getfCorpid)
+                        .distinct().collect(toList());
+                if (CollectionUtils.isNotEmpty(corpIds)) {
+                    List<TCorps> corpsList = tCorpsMapper.selectByIds(corpIds);
+                    billsVO.setCorpsList(corpsList);
+                }
+            }
+            return AjaxResult.success(billsVO);
+        } else if (WarehouseTypeEnum.BY_CPRP.getType().equals(warehousebillsDTO.getType())) {
+            if (StringUtils.isNull(warehousebillsDTO.getCorpId())) {
+                throw new WarehouseException("未找到客户查询条件");
+            }
+            // 查询符合条件的库存总帐
+            TWhgenleg tWhgenleg = new TWhgenleg();
+            tWhgenleg.setfMblno(fMblno);
+            tWhgenleg.setfCorpid(warehousebillsDTO.getCorpId());
+            List<TWhgenleg> tWhgenlegs = tWhgenlegMapper.selectTWhgenlegList(tWhgenleg);
+            if (CollectionUtils.isNotEmpty(tWhgenlegs)) {
+                // 查询仓库信息
+                List<Long> warehouseIds = tWhgenlegs.stream().filter(leg -> Objects.nonNull(leg.getfWarehouseid()))
+                        .map(TWhgenleg::getfWarehouseid).distinct().collect(toList());
+                if (CollectionUtils.isNotEmpty(warehouseIds)) {
+                    List<TWarehouse> warehouseList = tWarehouseMapper.selectByIds(warehouseIds);
+                    billsVO.setWarehouseList(warehouseList);
+                }
+            }
+            return AjaxResult.success(billsVO);
+        } else if (WarehouseTypeEnum.BY_WAREHOUSE.getType().equals(warehousebillsDTO.getType())) {
+            if (StringUtils.isNull(warehousebillsDTO.getCorpId()) ||
+                    StringUtils.isNull(warehousebillsDTO.getWarehouseId())) {
+                throw new WarehouseException("未找到客户、仓库查询条件");
+            }
+            // 查询符合条件的库存总帐
+            TWhgenleg tWhgenleg = new TWhgenleg();
+            tWhgenleg.setfMblno(fMblno);
+            tWhgenleg.setfCorpid(warehousebillsDTO.getCorpId());
+            tWhgenleg.setfWarehouseid(warehousebillsDTO.getWarehouseId());
+            List<TWhgenleg> tWhgenlegs = tWhgenlegMapper.selectTWhgenlegList(tWhgenleg);
+            if (CollectionUtils.isNotEmpty(tWhgenlegs)) {
+
+                List<Long> goodsIds = tWhgenlegs.stream().filter(l -> Objects.nonNull(l.getfGoodsid())).map(TWhgenleg::getfGoodsid).distinct()
+                        .collect(toList());
+                if (CollectionUtils.isNotEmpty(goodsIds)) {
+                    List<TGoods> goodsList = tGoodsMapper.selectByIds(goodsIds);
+                    List<GoodsVO> voList = new ArrayList<>();
+
+                    goodsList.forEach(vo -> {
+//                        TGoods goods = goodsList.stream().filter(li -> Objects.equals(vo.getfGoodsid(), li.getfId())).findFirst()
+//                                .orElseThrow(() -> new WarehouseException("商品信息找不到"));
+                        GoodsVO goodsVO = new GoodsVO();
+                        goodsVO.setfId(vo.getfId());
+                        goodsVO.setfName(vo.getfName());
+//                        goodsVO.setFMarks(vo.getfMarks());
+//                        goodsVO.setFBusinessType(vo.getfBusinessType());
+                        voList.add(goodsVO);
+                    });
+                    billsVO.setGoodsVOList(voList);
+                }
+                return AjaxResult.success(billsVO);
             }
         }
         return AjaxResult.success(billsVO);
     }
 
     /**
+     * 快速入库、出库
+     *
+     * @param warehousebillsDTO 出库信息
+     * @param loginUser         登陆人
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult quickOperation(WarehousebillsDTO warehousebillsDTO, LoginUser loginUser) {
+        if (CollectionUtils.isEmpty(warehousebillsDTO.getWarehousebillsitemsList())) {
+            throw new WarehouseException("未找到仓储的明细数据");
+        }
+        // 校验必填项
+        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.setCreateBy(loginUser.getUsername());
+        warehousebillsDTO.setfBsdeptid(loginUser.getUser().getDeptId());
+        warehousebillsDTO.setfChargedate(warehousebillsDTO.getfBsdate());
+        warehousebillsDTO.setfBillstatus(Long.parseLong(WarehouseTypeEnum.SAVE.getType()));
+        warehousebillsDTO.setfItemstatus(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());
+            grossweight = grossweight.add(li.getfGrossweight());
+            // 如果业务时间超出当前时间则不允许
+            if (li.getfBsdate().after(new Date())) {
+                throw new WarehouseException("业务日期不得超出当前日期");
+            }
+            li.setfPid(warehousebillsDTO.getfId());
+            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);
+            } else if (warehousebillsDTO.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType())) {
+                quickDelivery(warehousebillsDTO, li, loginUser, 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);
+        tWarehouseBillsMapper.updateTWarehousebills(warehousebillsDTO);
+
+        return AjaxResult.success();
+    }
+
+    /**
+     * 快速入库
+     *
+     * @param warehousebillsDTO 主表信息
+     * @param item              明细信息
+     * @param loginUser         用户信息
+     * @param line              序号
+     */
+    private void quickStorage(WarehousebillsDTO warehousebillsDTO, TWarehousebillsitems item, LoginUser loginUser, int line) {
+        // 查询库容量  是否可入库
+        if (calculation(warehousebillsDTO.getfWarehouseid(), item.getfGrossweight()) <= 0) {
+            throw new WarehouseException("仓储明细第" + line + "行入库毛重大于库容");
+        }
+        if (StringUtils.isNotEmpty(warehousebillsDTO.getfCustomno())) {
+            item.setfCustomno(warehousebillsDTO.getfCustomno());
+        }
+        if (StringUtils.isNotEmpty(warehousebillsDTO.getRemark())) {
+            item.setRemark(warehousebillsDTO.getRemark());
+        }
+        item.setfOriginalbilldate(item.getfBsdate());
+        item.setfBillingway(warehousebillsDTO.getfBillingway());
+        if ("1".equals(warehousebillsDTO.getfChargetype())) {
+            item.setfChargedate(item.getfBsdate());
+        } else {
+            item.setfChargedate(new Date());
+        }
+        // 校验商品是否区分箱号
+        TGoods goods = tGoodsMapper.selectTGoodsById(item.getfGoodsid());
+        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());
+        } else {
+            instalTWhgenleg(warehousebillsDTO, item, loginUser.getUser());
+        }
+        item.setfIsInventory(Long.parseLong(WarehouseTypeEnum.INVENTORY.getType()));
+        tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
+        // 添加状态log
+        insertTWarehousebillsLog(item, 40L, loginUser);
+    }
+
+    /**
+     * 快速出库
+     *
+     * @param warehousebillsDTO 主表信息
+     * @param item              明细信息
+     * @param loginUser         用户信息
+     * @param line              序号
+     */
+    private void quickDelivery(WarehousebillsDTO warehousebillsDTO, TWarehousebillsitems item, LoginUser loginUser, 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(item.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(), warehousebillsDTO.getfBilltype());
+        DateUtils.getDateDay(warehousebillsDTO.getfBsdate(), item.getfChargedate());
+        tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
+        // 添加状态log
+        insertTWarehousebillsLog(item, 40L, loginUser);
+    }
+
+    /**
+     * 校验提单号是否在同一天出现第二次
+     *
+     * @param warehousebillsDTO 查询条件
+     */
+    @Override
+    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++;
+            }
+        }
+    }
+
+    /**
+     * app查询库存总帐明细
+     *
+     * @param id 查询条件
+     * @return 库存总帐明细
+     */
+    @Override
+    public AjaxResult selectWhgenlegDetail(Long id) {
+        // 查询明细
+        List<WarehouseBillsVO> warehouseBillsVOList = tWarehouseBillsMapper.selectWhgenlegDetailById(id);
+
+        warehouseBillsVOList.forEach(vo -> {
+            WarehouseTypeEnum warehouseTypeEnum = WarehouseTypeEnum.fromType(vo.getfBilltype());
+            vo.setBillTypeName(warehouseTypeEnum.getName());
+        });
+
+        return AjaxResult.success(warehouseBillsVOList);
+    }
+
+    /**
      * 如果是入库
      *
      * @param infoVO
@@ -7190,7 +7437,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         // 计费单位
         if (StringUtils.isNotNull(infoVO.getfFeetunit())) {
             String type = "data_unitfees";
-            String dictLabel = DictUtils.getDictLabel(type, infoVO.getfFeetunit().toString());
+            String dictLabel = DictUtils.getDictLabel(type, infoVO.getfFeetunit());
             if (StringUtils.isNotEmpty(dictLabel)) {
                 infoVO.setFeetunitName(dictLabel);
             }

+ 133 - 3
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehousebillsitemsServiceImpl.java

@@ -1,15 +1,23 @@
 package com.ruoyi.warehouseBusiness.service.impl;
 
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.ruoyi.basicData.mapper.TWarehouseMapper;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.TWarehouse;
+import com.ruoyi.common.core.domain.enums.WarehouseEnum;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
+import com.ruoyi.warehouseBusiness.domain.dto.WarehouseDTO;
+import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
+import com.ruoyi.warehouseBusiness.domain.vo.WarehouseTimeIntervalVO;
 import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper;
 import com.ruoyi.warehouseBusiness.service.ITWarehousebillsitemsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 仓库明细从表Service业务层处理
@@ -20,6 +28,9 @@ import java.util.Map;
 @Service
 public class TWarehousebillsitemsServiceImpl implements ITWarehousebillsitemsService {
     @Autowired
+    private TWarehouseMapper warehouseMapper;
+
+    @Autowired
     private TWarehousebillsitemsMapper tWarehousebillsitemsMapper;
 
     /**
@@ -92,11 +103,130 @@ public class TWarehousebillsitemsServiceImpl implements ITWarehousebillsitemsSer
 
     @Override
     public int warehouseItemfItemstatus(Long fPid, Long fItemstatus) {
-        return tWarehousebillsitemsMapper.warehouseItemfItemstatus(fPid,fItemstatus);
+        return tWarehousebillsitemsMapper.warehouseItemfItemstatus(fPid, fItemstatus);
     }
 
     @Override
     public List<Map<String, Object>> selectStorageFeeItemfTruckNo() {
         return tWarehousebillsitemsMapper.selectStorageFeeItemfTruckNo();
     }
+
+    /**
+     * 根据日期区间计算 仓库入库数量比较
+     *
+     * @param warehouseDto 查询条件
+     * @return
+     */
+    @Override
+    public AjaxResult warehouseComparison(WarehouseDTO warehouseDto) {
+        warehouseDto.setWarehouseType(WarehouseTypeEnum.SJRK.getType());
+        Date queryTime = warehouseDto.getQueryTime();
+        List<String> newTimeList = new ArrayList<>();
+        List<String> timeList = new ArrayList<>();
+        // 结果
+        List<WarehouseTimeIntervalVO> firstItemsList;
+        List<WarehouseTimeIntervalVO> secondItemsList;
+        // 按照年
+        if (WarehouseEnum.BY_YEAR.getType().equals(warehouseDto.getQueryType())) {
+            // 获取上一年
+            String year = DateUtils.getYear(queryTime);
+            timeList.add(year + "-01-01");
+            timeList.add(year + "-12-31");
+            warehouseDto.setTimeList(timeList);
+            firstItemsList = tWarehousebillsitemsMapper.selectInboundQtyByTime(warehouseDto);
+            // 获取当前年
+            Date newDate = DateUtils.addYears(queryTime, 1);
+            String newYear = DateUtils.getYear(newDate);
+            newTimeList.add(newYear + "-01-01");
+            newTimeList.add(newYear + "-12-31");
+            warehouseDto.setTimeList(newTimeList);
+            secondItemsList = tWarehousebillsitemsMapper.selectInboundQtyByTime(warehouseDto);
+            return queryWarehouseQty(firstItemsList, secondItemsList);
+        } else
+            // 按照月
+            if (WarehouseEnum.BY_MONTH.getType().equals(warehouseDto.getQueryType())) {
+                // 获取年
+                String year = DateUtils.getYear(queryTime);
+                // 获取月
+                String month = DateUtils.getMonth(queryTime);
+                timeList.add(DateUtils.getFirstDay(Integer.parseInt(year), Integer.parseInt(month)));
+                timeList.add(DateUtils.getLastDay(Integer.parseInt(year), Integer.parseInt(month)));
+                warehouseDto.setTimeList(timeList);
+                firstItemsList = tWarehousebillsitemsMapper.selectInboundQtyByTime(warehouseDto);
+                Date newDate = DateUtils.addMonths(queryTime, 1);
+                // 获取年
+                String newYear = DateUtils.getYear(newDate);
+                // 获取月
+                String newMonth = DateUtils.getMonth(newDate);
+                newTimeList.add(DateUtils.getFirstDay(Integer.parseInt(newYear), Integer.parseInt(newMonth)));
+                newTimeList.add(DateUtils.getLastDay(Integer.parseInt(newYear), Integer.parseInt(newMonth)));
+                warehouseDto.setTimeList(newTimeList);
+                secondItemsList = tWarehousebillsitemsMapper.selectInboundQtyByTime(warehouseDto);
+                return queryWarehouseQty(firstItemsList, secondItemsList);
+            } else
+                // 按照周
+                if (WarehouseEnum.BY_WEEK.getType().equals(warehouseDto.getQueryType())) {
+                    // 上周
+                    Date date = DateUtils.addDays(queryTime, -7);
+                    timeList.add(DateUtils.dateTime(date));
+                    timeList.add(DateUtils.dateTime(queryTime));
+                    warehouseDto.setTimeList(timeList);
+                    firstItemsList = tWarehousebillsitemsMapper.selectInboundQtyByTime(warehouseDto);
+                    // 本周
+                    Date newDate = DateUtils.addDays(queryTime, 1);
+                    newTimeList.add(DateUtils.dateTime(newDate));
+                    newTimeList.add(DateUtils.dateTime(DateUtils.addDays(newDate, 6)));
+                    warehouseDto.setTimeList(newTimeList);
+                    secondItemsList = tWarehousebillsitemsMapper.selectInboundQtyByTime(warehouseDto);
+                    return queryWarehouseQty(firstItemsList, secondItemsList);
+                }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 查询数量
+     *
+     * @param firstItemsList  上次
+     * @param secondItemsList 本次
+     * @return
+     */
+    private AjaxResult queryWarehouseQty(List<WarehouseTimeIntervalVO> firstItemsList,
+                                         List<WarehouseTimeIntervalVO> secondItemsList) {
+        // 如果都为空
+        if (CollectionUtils.isEmpty(firstItemsList) && CollectionUtils.isEmpty(secondItemsList)) {
+            return AjaxResult.error();
+        }
+        if (CollectionUtils.isNotEmpty(firstItemsList)) {
+            List<Long> warehouseIds = firstItemsList.stream().filter(li -> Objects.nonNull(li.getWarehouseId())).map(WarehouseTimeIntervalVO::getWarehouseId)
+                    .distinct().collect(Collectors.toList());
+
+            List<TWarehouse> warehouseList = warehouseMapper.selectByIds(warehouseIds);
+            firstItemsList.forEach(li -> {
+                li.setLastQty(li.getSumQty());
+                Optional<TWarehouse> warehouseFirst = warehouseList.stream().filter(ware -> Objects.equals(ware.getfId(), li.getWarehouseId())).findFirst();
+                warehouseFirst.ifPresent(tWarehouse -> li.setWarehouseName(tWarehouse.getfName()));
+
+                Optional<WarehouseTimeIntervalVO> first = secondItemsList.stream().filter(second -> Objects.equals(li.getWarehouseId(), second.getWarehouseId()))
+                        .findFirst();
+                if (first.isPresent()) {
+                    li.setThisQty(first.get().getSumQty());
+                    li.setDifference(li.getThisQty() - li.getLastQty());
+                } else {
+                    li.setDifference(li.getLastQty() * -1);
+                }
+            });
+            return AjaxResult.success(firstItemsList);
+        }
+        List<Long> warehouseIds = firstItemsList.stream().filter(li -> Objects.nonNull(li.getWarehouseId())).map(WarehouseTimeIntervalVO::getWarehouseId)
+                .distinct().collect(Collectors.toList());
+        List<TWarehouse> warehouseList = warehouseMapper.selectByIds(warehouseIds);
+        secondItemsList.forEach(li -> {
+            li.setThisQty(li.getSumQty());
+            li.setDifference(li.getLastQty());
+            Optional<TWarehouse> warehouseFirst = warehouseList.stream().filter(ware -> Objects.equals(ware.getfId(), li.getWarehouseId())).findFirst();
+            warehouseFirst.ifPresent(tWarehouse -> li.setWarehouseName(tWarehouse.getfName()));
+        });
+        return AjaxResult.success(secondItemsList);
+    }
+
 }

+ 1 - 0
ruoyi-warehouse/src/main/resources/mapper/approvalFlow/AuditItemsMapper.xml

@@ -403,6 +403,7 @@
                 and a.send_time BETWEEN #{audit.sendList[0]} AND #{audit.sendList[1]}
             </if>
         </where>
+            order by a.id desc
     </select>
 
 </mapper>

+ 1 - 0
ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

@@ -101,6 +101,7 @@
             <if test="fGrossweightd != null ">and f_grossweightD = #{fGrossweightd}</if>
             <if test="fNetweightd != null ">and f_netweightD = #{fNetweightd}</if>
             <if test="fVolumnc != null ">and f_volumnC = #{fVolumnc}</if>
+            <if test="fCorpid != null ">and f_corpid = #{fCorpid}</if>
             <if test="fBusinessType != null "> and f_business_type = #{fBusinessType}</if>
             <if test="fQtyc != null ">and f_qtyC = #{fQtyc}</if>
             <if test="fGrossweightc != null ">and f_grossweightC = #{fGrossweightc}</if>

+ 1 - 0
ruoyi-warehouse/src/main/resources/mapper/warehouse/TWarehouseCheckItemsMapper.xml

@@ -70,6 +70,7 @@
             <if test="fUpdateTime != null ">and a.f_update_time = #{fUpdateTime}</if>
             <if test="fDelFlag != null ">and a.f_del_flag = #{fDelFlag}</if>
         </where>
+            order by f_id desc
     </select>
 
     <select id="selectTWarehouseCheckItemsById" parameterType="Long" resultMap="TWarehouseCheckItemsResult">

+ 51 - 7
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsMapper.xml

@@ -110,7 +110,7 @@
         <result property="fGrade"    column="f_grade" />
         <result property="fDeliveryDetails"  column="f_delivery_details" />
         <result property="fSalesmanId"  column="f_salesman_id"  />
-        <result property="fItemstatus"  column="f_itemstatus" />
+        <result property="fItemstatus"  column="f_items_status" />
         <result property="fUpdeteStatus"    column="f_updete_status"/>
         <result property="fSubmitUpdate"    column="f_submit_update"/>
         <result property="fDeleteStatus"    column="f_delete_status"/>
@@ -120,6 +120,17 @@
         <result property="fDismountStatus"    column="f_dismount_status"    />
     </resultMap>
 
+    <resultMap type="WarehouseBillsVO" id="WarehousebillsVOResult">
+        <result property="fId"    column="f_id"    />
+        <result property="fBillno"    column="f_billno"    />
+        <result property="fMblno"    column="f_mblno"    />
+        <result property="fBsdate"    column="f_bsdate"    />
+        <result property="fQty"    column="f_qty"    />
+        <result property="fGrossweight"    column="f_grossweight"    />
+        <result property="fNetweight"    column="f_netweight"    />
+        <result property="fBilltype"    column="f_billtype"    />
+    </resultMap>
+
     <sql id="selectTWarehousebillsVo">
         select f_id, f_billno, f_customsdeclartion, f_originalbillno, f_deptid, f_bsdeptid, f_contacts, f_tel, f_corpid, f_tocorpid, f_stltypeid, f_bscorpno,
         f_warehouseid, f_storekeeper, f_chargedate, f_bsdate, f_planqty, f_plangrossweight, f_plannetweight, f_planvolumn, f_qty, f_grossweight, f_netweight,
@@ -130,7 +141,7 @@
         f_consigneeattn, f_consigneetel, f_insurance, f_insuranceamt, f_closedate, f_docmentdate, f_vslid, f_voyid, f_typeid, f_paymode, f_laneid, f_cntval,
         free_container_date, f_business_attribution, f_supervision_unit, f_declaration_elements, f_part_number, f_ifinspection, f_value, f_weighing_date,
         f_ifsampling, send_sample_date, f_ifweight_recovery, weight_recovery_date, warehouse_status, f_times ,f_date_changed, f_chargetype,f_weigh_weight,
-        f_predict_branch,f_grade,f_delivery_details,f_salesman_id,f_itemstatus,f_updete_status, f_submit_update, f_delete_status,f_remarks_fees,f_cargo_planning,
+        f_predict_branch,f_grade,f_delivery_details,f_salesman_id,f_items_status,f_updete_status, f_submit_update, f_delete_status,f_remarks_fees,f_cargo_planning,
         f_arrival_status,f_dismount_status from t_warehousebills
     </sql>
 
@@ -905,7 +916,7 @@
             <if test="fGrade != null">f_grade,</if>
             <if test="fDeliveryDetails != null">f_delivery_details,</if>
             <if test="fSalesmanId != null">f_salesman_id,</if>
-            <if test="fItemstatus != null">f_itemstatus,</if>
+            <if test="fItemstatus != null">f_items_status,</if>
             <if test="fUpdeteStatus != null">f_updete_status,</if>
             <if test="fSubmitUpdate != null">f_submit_update,</if>
             <if test="fDeleteStatus != null">f_delete_status,</if>
@@ -1137,7 +1148,7 @@
             <if test="fGrade != null">f_grade = #{fGrade},</if>
             <if test="fDeliveryDetails != null">f_delivery_details = #{fDeliveryDetails},</if>
             <if test="fSalesmanId != null">f_salesman_id = #{fSalesmanId},</if>
-            <if test="fItemstatus != null">f_itemstatus = #{fItemstatus},</if>
+            <if test="fItemstatus != null">f_items_status = #{fItemstatus},</if>
             <if test="fUpdeteStatus != null">f_updete_status = #{fUpdeteStatus},</if>
             <if test="fSubmitUpdate != null">f_submit_update = #{fSubmitUpdate},</if>
             <if test="fDeleteStatus != null">f_delete_status = #{fDeleteStatus},</if>
@@ -1257,7 +1268,7 @@
             <if test="fGrade != null">f_grade = #{fGrade},</if>
             <if test="fDeliveryDetails != null">f_delivery_details = #{fDeliveryDetails},</if>
             <if test="fSalesmanId != null">f_salesman_id = #{fSalesmanId},</if>
-            <if test="fItemstatus != null">f_itemstatus = #{fItemstatus},</if>
+            <if test="fItemstatus != null">f_items_status = #{fItemstatus},</if>
             <if test="fUpdeteStatus != null">f_updete_status = #{fUpdeteStatus},</if>
             <if test="fSubmitUpdate != null">f_submit_update = #{fSubmitUpdate},</if>
             <if test="fDeleteStatus != null">f_delete_status = #{fDeleteStatus},</if>
@@ -2419,8 +2430,8 @@
         <if test='timeInterval != null and timeInterval[1] != null and timeInterval[1]!= ""'>
             and w.f_bsdate &lt;= #{timeInterval[1]}
         </if>
-        ${params.dataScope}
-        order by w.f_bsdate desc
+            ${params.dataScope}
+            order by w.f_id desc
     </select>
 
     <select id="selectWarehouseItemListById" resultType="java.util.Map">
@@ -2685,4 +2696,37 @@
         where i.f_id = #{id}
     </select>
 
+    <select id="selectByMblnoOrCntrnoCount" resultType="int">
+        SELECT COUNT(DISTINCT w.f_id) FROM
+            t_warehousebills w
+            LEFT JOIN t_warehousebillsitems item ON item.f_pid = w.f_id
+        <where>
+            w.f_mblno = #{dto.fMblno}
+            and w.f_bsdate = #{dto.fBsdate}
+            <if test="dto.fCntrno != null ">and item.f_cntrno = #{dto.fCntrno}</if>
+        </where>
+    </select>
+
+    <select id="selectWhgenlegDetailById" resultMap="WarehousebillsVOResult">
+        SELECT w.f_id, w.f_mblno, w.f_bsdate, SUM( item.f_qty ) f_qty, SUM( item.f_grossweight ) f_grossweight,
+            SUM( item.f_netweight ) f_netweight, w.f_billtype
+        FROM
+            t_whgenleg leg
+                LEFT JOIN t_warehousebills w ON w.f_corpid = leg.f_corpid
+                AND leg.f_trademodeid = w.f_trademodeid
+                LEFT JOIN t_warehousebillsitems item ON item.f_pid = w.f_id
+                AND item.f_marks = leg.f_marks
+                AND item.f_business_type = leg.f_business_type
+                AND item.f_originalbilldate = leg.f_bsdate
+                AND item.f_warehouselocid = leg.f_warehouse_locationid
+                AND item.f_goodsid = leg.f_goodsid
+        WHERE
+            leg.f_id = #{id}
+            AND w.f_billtype IN ( 'SJRK', 'SJCK' )
+            AND item.f_billstatus = 40
+            AND IF ( w.f_billtype = 'SJCK', item.f_mblno = leg.f_mblno, leg.f_mblno = w.f_mblno )
+        GROUP BY
+            w.f_id
+    </select>
+
 </mapper>

+ 2 - 1
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsModifyMapper.xml

@@ -41,7 +41,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fMarks != null  and fMarks != ''"> and f_marks = #{fMarks}</if>
             <if test="fWarehouseid != null "> and f_warehouseid = #{fWarehouseid}</if>
             <if test="fStatus != null "> and f_status = #{fStatus}</if>
-            <if test="fBstime != null "> and f_bstime = #{fBstime}</if>
+            <if test="bstimeList != null and bstimeList[0] != null and bstimeList[0] != ''"> and f_bstime BETWEEN #{bstimeList[0]} and #{bstimeList[1]}</if>
+            <if test="createTimeList != null and createTimeList[0] != null and createTimeList[0] != ''"> and create_time BETWEEN #{createTimeList[0]} and #{createTimeList[1]}</if>
         </where>
         order by f_id desc
     </select>

+ 15 - 1
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsitemsMapper.xml

@@ -74,7 +74,12 @@
         <result property="isCalculateStorageFees"    column="is_calculate_storage_fees"    />
     </resultMap>
 
-    <resultMap type="com.ruoyi.warehouseBusiness.domain.vo.CalculateStorageFeesInfoVO" id="StorageFeesInfoResult">
+    <resultMap type="WarehouseTimeIntervalVO" id="WarehouseTimeIntervalResult">
+        <result property="sumQty"    column="f_qty"    />
+        <result property="warehouseId"    column="f_warehouseid"    />
+    </resultMap>
+
+    <resultMap type="CalculateStorageFeesInfoVO" id="StorageFeesInfoResult">
         <result property="warehouse" column="f_warehouseid"/>
         <result property="fId" column="f_id"/>
         <result property="warehouse" column="f_warehouseid"/>
@@ -926,6 +931,15 @@
         <if test="bills.fMblno != null and bills.fMblno != ''">and item.f_mblno like concat('%',#{bills.fMblno},'%')</if>
     </select>
 
+    <select id="selectInboundQtyByTime" resultMap="WarehouseTimeIntervalResult">
+        SELECT w.f_warehouseid, sum(item.f_qty) f_qty
+        FROM t_warehousebills w LEFT JOIN t_warehousebillsitems item ON item.f_pid = w.f_id
+        WHERE
+            item.f_billtype = #{dto.warehouseType}
+            and item.f_bsdate between #{dto.timeList[0]} and #{dto.timeList[1]}
+        GROUP BY w.f_warehouseid;
+    </select>
+
     <update id="updateItemStorageFeeDeadlineByPId">
         UPDATE t_warehousebillsitems
         SET f_storage_fee_deadline = #{time}