From b72134a936dfd17f4fcbc033d3e9a911eda6e3d6 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Wed, 28 Jan 2026 14:34:19 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=A7=9F=E8=B5=81=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E4=BB=93=E5=BA=93=E5=92=8C=E8=B4=A7=E4=B8=BB?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mhd/basic/domain/lease/entity/Lease.java | 9 +++++++++ .../mhd/basic/domain/lease/repository/po/LeasePO.java | 9 +++++++++ .../mhd/basic/domain/lease/repository/todo/LeaseDO.java | 9 +++++++++ .../com/mhd/basic/interfaces/dto/lease/LeaseDTO.java | 9 +++++++++ .../main/resources/mapper/basic/lease/LeaseMapper.xml | 6 ++++++ 5 files changed, 42 insertions(+) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java index ccb4c61c9..a942af918 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java @@ -35,6 +35,15 @@ public class Lease extends BaseVOEntity{ @Excel(name = "一级组织表ID") private Long topOrganizationId; + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + @ApiModelProperty("货主名称") private String cargoOwnerName; diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java index 63b928e12..ce7433ac6 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java @@ -34,6 +34,15 @@ public class LeasePO extends BaseVOEntity{ @Excel(name = "一级组织表ID") private Long topOrganizationId; + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + @ApiModelProperty("货主名称") private String cargoOwnerName; diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java index 22755ecd4..216395a29 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java @@ -35,6 +35,15 @@ public class LeaseDO extends BaseVOEntity{ @Excel(name = "一级组织表ID") private Long topOrganizationId; + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + @ApiModelProperty("货主名称") private String cargoOwnerName; diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java index b41954c13..8424cd129 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java @@ -33,6 +33,15 @@ public class LeaseDTO extends BaseVOEntity{ @Excel(name = "一级组织表ID") private Long topOrganizationId; + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + @ApiModelProperty("货主名称") private String cargoOwnerName; diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml index 99ce74d42..745535951 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml @@ -33,6 +33,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" organization_id, organization_name, top_organization_id, + warehouse_id, + warehouse_name, + shipper_id, cargo_owner_name, lease_type, lease_area, @@ -61,6 +64,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and organization_name like concat('%', #{organizationName}, '%') + + and warehouse_name like concat('%', #{warehouseName}, '%') + and cargo_owner_name like concat('%', #{cargoOwnerName}, '%') From db86df135a16048f4b9cc3b7b0dfda69ff7f3b51 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Thu, 29 Jan 2026 14:44:27 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BB=93=E5=BA=93=E5=87=BA=E7=A7=9F?= =?UTF-8?q?=E7=8E=87=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mhd/system/api/WmsServiceFeign.java | 8 + .../api/domain/MaterialInventoryDTO.java | 149 ++++++++++++++++ .../api/factory/RemoteWmsFallbackFactory.java | 8 + .../java/com/mhd/MhdSystemApplication.java | 2 + .../Lease/LeaseApplicationService.java | 150 +++++++++++++++- ...ShipperLeaseDetailsApplicationService.java | 160 ++++++++++++++++++ .../domain/lease/repository/todo/LeaseDO.java | 4 + .../entity/ShipperLeaseDetails.java | 65 +++++++ .../entity/WarehouseOccupancyRate.java | 58 +++++++ .../facade/IShipperLeaseDetailsService.java | 43 +++++ .../mapper/ShipperLeaseDetailsMapper.java | 21 +++ .../persistence/ShipperLeaseDetailsImpl.java | 114 +++++++++++++ .../repository/po/ShipperLeaseDetailsPO.java | 65 +++++++ .../todo/ShipperLeaseDetailsDO.java | 73 ++++++++ .../ShipperLeaseDetailsDomainService.java | 87 ++++++++++ .../ShipperLeaseDetailsAssembler.java | 61 +++++++ .../ShipperLeaseDetailsDTO.java | 74 ++++++++ .../interfaces/facadeApi/lease/LeaseApi.java | 1 + .../ShipperLeaseDetailsApi.java | 140 +++++++++++++++ .../mapper/basic/lease/LeaseMapper.xml | 5 +- .../ShipperLeaseDetailsMapper.xml | 127 ++++++++++++++ .../repository/todo/MaterialInventoryDO.java | 3 + .../MaterialInventoryDTO.java | 3 + .../MaterialInventoryApi.java | 10 ++ .../MaterialInventoryMapper.xml | 3 + 25 files changed, 1426 insertions(+), 8 deletions(-) create mode 100644 mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryDTO.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/shipperLeaseDetails/ShipperLeaseDetailsApplicationService.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/entity/ShipperLeaseDetails.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/entity/WarehouseOccupancyRate.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/facade/IShipperLeaseDetailsService.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/mapper/ShipperLeaseDetailsMapper.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/persistence/ShipperLeaseDetailsImpl.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/po/ShipperLeaseDetailsPO.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/todo/ShipperLeaseDetailsDO.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/service/ShipperLeaseDetailsDomainService.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/shipperLeaseDetails/ShipperLeaseDetailsAssembler.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/shipperLeaseDetailsApi/ShipperLeaseDetailsDTO.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/shipperLeaseDetails/ShipperLeaseDetailsApi.java create mode 100644 mhd-modules/mhd-system/src/main/resources/mapper/basic/shipperLeaseDetails/ShipperLeaseDetailsMapper.xml diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 00c8815b8..6551d451e 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -3,12 +3,15 @@ package com.mhd.system.api; import com.mhd.common.core.constant.ServiceNameConstants; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.system.api.domain.MaterialBaseInfoFeign; +import com.mhd.system.api.domain.MaterialInventoryDTO; import com.mhd.system.api.domain.NoticeOrderDTO; import com.mhd.system.api.factory.RemoteTicketFeignFallbackFactory; import com.mhd.system.api.feign.FeignAutoConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; +import java.util.Map; + /** * @author ZhouGY * @title WmsServiceFeign @@ -57,4 +60,9 @@ public interface WmsServiceFeign { @PostMapping("/noticeOrderApi/insert") public AjaxResult stockOutOrInInsert(@RequestBody NoticeOrderDTO noticeOrderDTO); + /** + * 查询物料库存列表不分页 + */ + @GetMapping("/materialInventoryApi/listAll") + public AjaxResult materialInventoryApiListAll(MaterialInventoryDTO materialInventoryDTO); } diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryDTO.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryDTO.java new file mode 100644 index 000000000..a59612918 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryDTO.java @@ -0,0 +1,149 @@ +package com.mhd.system.api.domain; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +public class MaterialInventoryDTO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; + + @ApiModelProperty("货主信息") + @Excel(name = "货主信息") + private String shipperInfo; + + @ApiModelProperty("物料信息") + @Excel(name = "物料信息") + private String materialInfo; + + @ApiModelProperty("物料/库位信息") + @Excel(name = "物料/库位信息") + private String storageInfo; + + @ApiModelProperty("货主id") + private Long shipperId; +} diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java index cc69fe5a5..d4f6745a0 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java @@ -5,6 +5,7 @@ import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.system.api.WlhyServiceFeign; import com.mhd.system.api.WmsServiceFeign; import com.mhd.system.api.domain.MaterialBaseInfoFeign; +import com.mhd.system.api.domain.MaterialInventoryDTO; import com.mhd.system.api.domain.NoticeOrderDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,6 +13,8 @@ import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PathVariable; +import java.util.Map; + /** * @author ZhouGY * @title RemoteWmsFallbackFactory @@ -46,6 +49,11 @@ public class RemoteWmsFallbackFactory implements FallbackFactory leasePOS = queryList(leaseDO); +// List leasePOS = leaseDomainService.queryList(leaseDO); + List entireUnit = leasePOS.stream() + .filter(lease -> lease.getLeaseType().equals("整租")) + .collect(Collectors.toList()); + List casualRental = leasePOS.stream() + .filter(lease -> lease.getLeaseType().equals("散租")) + .collect(Collectors.toList()); + List shipperLeaseDetailsList = new ArrayList<>(); //建表后保存 + for (LeasePO en : entireUnit) {//整租 + ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails(); + BeanUtils.copyProperties(en, shipperLeaseDetails); + shipperLeaseDetails.setBusinessDate(new Date()); + shipperLeaseDetailsList.add(shipperLeaseDetails); + } + //当前货主当前仓库,库存查询页面所有面积加起来就是散租面积 + for (LeasePO ca : casualRental) {//散租 + ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails(); + BeanUtils.copyProperties(ca, shipperLeaseDetails); + shipperLeaseDetails.setBusinessDate(new Date()); + //物料库存 + MaterialInventoryDTO materialInventoryDTO = new MaterialInventoryDTO(); + materialInventoryDTO.setShipperId(ca.getShipperId()); + materialInventoryDTO.setWarehouseId(ca.getWarehouseId()); + AjaxResult ajaxResult = wmsServiceFeign.materialInventoryApiListAll(materialInventoryDTO); + BigDecimal area = BigDecimal.ZERO; + if(String.valueOf(ajaxResult.get("code")).equals("200")) { + JSONArray data = JSONObject.parseArray(JSON.toJSONString(ajaxResult.get("data"))); + for (Object datum : data) { + JSONObject json = (JSONObject) datum; + BigDecimal area1 = json.getBigDecimal("area"); + if (area1 == null) { + area1 = BigDecimal.ZERO; + } + area = area.add(area1); + } + } + shipperLeaseDetails.setLeaseArea(area); + shipperLeaseDetailsList.add(shipperLeaseDetails); + } + // 保存货主租赁明细(新建表) + if (shipperLeaseDetailsList.size() > 0) { + shipperLeaseDetailsService.saveBatch(shipperLeaseDetailsList); + } + } + + /** + * 计算仓库出租率 + * warehouseId 仓库id + * businessDateStart 业务开始时间 + * businessDateEnd 业务结束时间 + */ + public List warehouseOccupancyRate(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + //仓库id 和 开始结束时间作为查询条件 查数据库 差出来当前仓库所有的 + List shipperLeaseDetailsList = shipperLeaseDetailsService.queryList(shipperLeaseDetailsDO); + ShipperLeaseDetailsPO shipperLeaseDetailsPO = shipperLeaseDetailsList.get(0); + //按业务日期分组,并按日期排序 + TreeMap> groupedByDate = shipperLeaseDetailsList.stream().collect( + Collectors.groupingBy( + ShipperLeaseDetailsPO::getBusinessDate, + TreeMap::new, + Collectors.toList() + ) + ); + //获取总面积 + BigDecimal totalArea = BigDecimal.ZERO; + StorageSectionDO storageSectionDO = new StorageSectionDO(); + storageSectionDO.setWarehouseId(shipperLeaseDetailsDO.getWarehouseId()); + storageSectionDO.setOpeningUp(1); + List storageSectionPOS = storageSectionApplicationService.queryList(storageSectionDO); + for (StorageSectionPO storageSectionPO : storageSectionPOS) { + totalArea = totalArea.add(storageSectionPO.getStorageRegion()); + } + + List warehouseOccupancyRatesList = new ArrayList<>(); + //组装仓库返回数据 + BigDecimal finalTotalArea = totalArea; + groupedByDate.forEach((date, shipperLeaseDetails) -> { + WarehouseOccupancyRate warehouseOccupancyRate = new WarehouseOccupancyRate(); + warehouseOccupancyRate.setBusinessDate(date); + BigDecimal entireLeaseArea = BigDecimal.ZERO; + BigDecimal fractionalLeaseArea = BigDecimal.ZERO; + //计算整租和散租 + for (ShipperLeaseDetailsPO shipperLeaseDetail : shipperLeaseDetails) { + if (shipperLeaseDetail.getLeaseType().equals("整租")){ + entireLeaseArea = entireLeaseArea.add(shipperLeaseDetail.getLeaseArea()); + }else { + fractionalLeaseArea = fractionalLeaseArea.add(shipperLeaseDetail.getLeaseArea()); + } + warehouseOccupancyRate.setWarehouseName(shipperLeaseDetail.getWarehouseName()); + warehouseOccupancyRate.setBusinessDate(date); + warehouseOccupancyRate.setWarehouseId(shipperLeaseDetail.getWarehouseId()); + } + warehouseOccupancyRate.setEntireLeaseArea(entireLeaseArea); + warehouseOccupancyRate.setFractionalLeaseArea(fractionalLeaseArea); + warehouseOccupancyRate.setTotalArea(finalTotalArea); + BigDecimal dailyRentalRate = entireLeaseArea.add(fractionalLeaseArea).divide(finalTotalArea, 2, BigDecimal.ROUND_HALF_UP); + warehouseOccupancyRate.setDailyRentalRate(dailyRentalRate); + warehouseOccupancyRatesList.add(warehouseOccupancyRate); + }); + return warehouseOccupancyRatesList; + } + // /** // * @description 设置数据字典键值 // * @author ZhouGY diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/shipperLeaseDetails/ShipperLeaseDetailsApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/shipperLeaseDetails/ShipperLeaseDetailsApplicationService.java new file mode 100644 index 000000000..2cfbe02e1 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/shipperLeaseDetails/ShipperLeaseDetailsApplicationService.java @@ -0,0 +1,160 @@ +package com.mhd.basic.application.service.shipperLeaseDetails; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.mhd.basic.application.service.storageSection.StorageSectionApplicationService; +import com.mhd.basic.domain.lease.entity.Lease; +import com.mhd.basic.domain.lease.repository.facade.ILeaseService; +import com.mhd.basic.domain.lease.repository.po.LeasePO; +import com.mhd.basic.domain.lease.repository.todo.LeaseDO; +import com.mhd.basic.domain.lease.service.LeaseDomainService; +import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails; +import com.mhd.basic.domain.shipperLeaseDetails.entity.WarehouseOccupancyRate; +import com.mhd.basic.domain.shipperLeaseDetails.repository.facade.IShipperLeaseDetailsService; +import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO; +import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO; +import com.mhd.basic.domain.shipperLeaseDetails.service.ShipperLeaseDetailsDomainService; +import com.mhd.basic.domain.storageSection.repository.po.StorageSectionPO; +import com.mhd.basic.domain.storageSection.repository.todo.StorageSectionDO; +import com.mhd.basic.interfaces.dto.lease.LeaseDTO; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.WmsServiceFeign; +import com.mhd.system.api.domain.MaterialInventoryDTO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.system.service.ISysDictTypeService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.TreeMap; +import java.util.stream.Collectors; + +/** + * 货主租赁明细ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class ShipperLeaseDetailsApplicationService { + + @Autowired + private ShipperLeaseDetailsDomainService shipperLeaseDetailsDomainService; + + @Autowired + private ISysDictTypeService dictTypeService; + + /** + * 分页查询货主租赁明细列表 + */ + + public List queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserPo() != null){ + Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + + // 数据权限:根据organizationId来设置查询权限 + // organizationId等于2827时查询全部,其他仅查询各自组织的信息 + if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId,使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (shipperLeaseDetailsDO.getOrganizationId() == null) { + shipperLeaseDetailsDO.setOrganizationId(null); + shipperLeaseDetailsDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + if (topOrganizationId != null && topOrganizationId != 1){ + shipperLeaseDetailsDO.setTopOrganizationId(topOrganizationId); + } + // 如果前端传递了organizationId,验证是否与当前登录用户的组织ID一致 + if (shipperLeaseDetailsDO.getOrganizationId() != null && !shipperLeaseDetailsDO.getOrganizationId().equals(loginUserOrganizationId)) { + // 前端传递了其他组织的organizationId,强制使用当前登录用户的组织ID,防止越权查询 + shipperLeaseDetailsDO.setOrganizationId(loginUserOrganizationId); + } + } + } + return shipperLeaseDetailsDomainService.queryList(shipperLeaseDetailsDO); + } + + + /** + * 新增货主租赁明细 + */ + public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + // 设置当前登录用户的组织信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserPo() != null) { + shipperLeaseDetailsDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + shipperLeaseDetailsDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + shipperLeaseDetailsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + return shipperLeaseDetailsDomainService.insert(shipperLeaseDetailsDO); + } + + + /** + * 修改货主租赁明细 + */ + public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + return shipperLeaseDetailsDomainService.update(shipperLeaseDetailsDO); + } + + /** + * 批量删除货主租赁明细 + */ + public boolean delete(Long[] shipperLeaseDetailsIds) { + return shipperLeaseDetailsDomainService.delete(shipperLeaseDetailsIds); + } + + /** + * 获取货主租赁明细详细信息 + */ + public ShipperLeaseDetailsPO getInfo(Long shipperLeaseDetailsId) + { + return shipperLeaseDetailsDomainService.getInfo(shipperLeaseDetailsId); + } + + /** + * @description 批量作废租赁 + * @author ZhouGY + * @date 2024/5/13 9:46 + * @return Boolean + */ + public Boolean nullifyByIds(List shipperLeaseDetailsIds){ + return shipperLeaseDetailsDomainService.nullifyByIds(shipperLeaseDetailsIds); + } + + +// /** +// * @description 设置数据字典键值 +// * @author ZhouGY +// * @date 2024/4/7 14:33 +// * @param containerDO +// */ +// private void setDataDict(LeaseDO leaseDO){ +// //翻译租赁类型 +// List storageTypeDictDataList = dictTypeService.selectDictDataByType(DictCode.CONTAINER_TYPE.getCode()); +// if (null == storageTypeDictDataList) { +// throw new ServiceException("租赁类型数据字典不存在 请联系管理员"); +// } +// SysDictData storageTypeDictData = storageTypeDictDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), containerDO.getContainerType())).findAny().orElse(null); +// if (null == storageTypeDictData) { +// throw new ServiceException("租赁类型【" + leaseDO.getContainerType() + "】数据字典不存在 请联系管理员"); +// } +// leaseDO.setContainerTypeName(storageTypeDictData.getDictLabel()); +// } +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java index 216395a29..34cd96eef 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java @@ -63,4 +63,8 @@ public class LeaseDO extends BaseVOEntity{ @ApiModelProperty("备注") private String remark; + + @ApiModelProperty("当前时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date time; } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/entity/ShipperLeaseDetails.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/entity/ShipperLeaseDetails.java new file mode 100644 index 000000000..5a041d453 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/entity/ShipperLeaseDetails.java @@ -0,0 +1,65 @@ +package com.mhd.basic.domain.shipperLeaseDetails.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 货主租赁明细 + * + */ + +@Data +public class ShipperLeaseDetails extends BaseVOEntity{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + private String cargoOwnerName; + + @ApiModelProperty(value = "租赁方式(整租/散租)") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + private BigDecimal leaseArea; + + @ApiModelProperty("业务日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDate; + + + +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/entity/WarehouseOccupancyRate.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/entity/WarehouseOccupancyRate.java new file mode 100644 index 000000000..31c008c60 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/entity/WarehouseOccupancyRate.java @@ -0,0 +1,58 @@ +package com.mhd.basic.domain.shipperLeaseDetails.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 仓库出租率返回类 没有表 + * + */ + +@Data +public class WarehouseOccupancyRate extends BaseVOEntity{ + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("业务日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDate; + + @ApiModelProperty("整租面积(m²)") + private BigDecimal entireLeaseArea; + + @ApiModelProperty("散租面积(m²)") + private BigDecimal fractionalLeaseArea; + + @ApiModelProperty("总面积(m²)") + private BigDecimal totalArea; + + @ApiModelProperty("日租率(%)") + private BigDecimal dailyRentalRate; + +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/facade/IShipperLeaseDetailsService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/facade/IShipperLeaseDetailsService.java new file mode 100644 index 000000000..d086cd185 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/facade/IShipperLeaseDetailsService.java @@ -0,0 +1,43 @@ +package com.mhd.basic.domain.shipperLeaseDetails.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails; +import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO; +import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO; + +import java.util.List; + +/** + * 货主租赁明细Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface IShipperLeaseDetailsService extends IService +{ + /** + * 分页查询货主租赁明细列表 + */ + public List queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO); + + /** + * 新增货主租赁明细 + */ + public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO); + + /** + * 修改货主租赁明细 + */ + public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO); + + /** + * 批量删除货主租赁明细 + */ + public Boolean delete(Long[] leaseIds); + + + /** + * 查询货主租赁明细 + */ + public ShipperLeaseDetailsPO getInfo(Long leaseId); +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/mapper/ShipperLeaseDetailsMapper.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/mapper/ShipperLeaseDetailsMapper.java new file mode 100644 index 000000000..09758148e --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/mapper/ShipperLeaseDetailsMapper.java @@ -0,0 +1,21 @@ +package com.mhd.basic.domain.shipperLeaseDetails.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails; +import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO; +import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO; + +import java.util.List; + +/** + * 货主租赁明细Mapper接口 + * + */ +public interface ShipperLeaseDetailsMapper extends BaseMapper +{ + /** + * 查询货主租赁明细列表 + */ + public List queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO); + +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/persistence/ShipperLeaseDetailsImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/persistence/ShipperLeaseDetailsImpl.java new file mode 100644 index 000000000..955922e4a --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/persistence/ShipperLeaseDetailsImpl.java @@ -0,0 +1,114 @@ +package com.mhd.basic.domain.shipperLeaseDetails.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails; +import com.mhd.basic.domain.shipperLeaseDetails.repository.facade.IShipperLeaseDetailsService; +import com.mhd.basic.domain.shipperLeaseDetails.repository.mapper.ShipperLeaseDetailsMapper; +import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO; +import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 货主租赁明细Service业务层处理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +public class ShipperLeaseDetailsImpl extends ServiceImpl implements IShipperLeaseDetailsService { + @Autowired + private ShipperLeaseDetailsMapper shipperLeaseDetailsMapper; + + /** + * 查询货主租赁明细列表 + */ + @Override + public List queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO) + { + return shipperLeaseDetailsMapper.queryList(shipperLeaseDetailsDO); + } + + /** + * 新增货主租赁明细 + */ + @Override + public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails(); + BeanUtils.copyProperties(shipperLeaseDetailsDO,shipperLeaseDetails); + return this.save(shipperLeaseDetails); + } + + /** + * 修改货主租赁明细 + */ + @Override + public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails(); + BeanUtils.copyProperties(shipperLeaseDetailsDO,shipperLeaseDetails); + return this.updateById(shipperLeaseDetails); + } + + /** + * 批量删除货主租赁明细 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean delete(Long[] leaseIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List list = new ArrayList<>(); + for (Long id : leaseIds) { + ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails(); + shipperLeaseDetails.setId(id); + shipperLeaseDetails.setDelFlag(2); + shipperLeaseDetails.setUpdateBy(loginUser.getUserid()); + shipperLeaseDetails.setUpdateByName(loginUser.getUsername()); + shipperLeaseDetails.setUpdateTime(new Date()); + list.add(shipperLeaseDetails); + } + return this.updateBatchById(list); + } + + /** + * 修改货主租赁明细 + */ + @Override + public ShipperLeaseDetailsPO getInfo(Long ShipperLeaseDetailsId) { + ShipperLeaseDetails shipperLeaseDetails = this.getById(ShipperLeaseDetailsId); + ShipperLeaseDetailsPO shipperLeaseDetailsPO = new ShipperLeaseDetailsPO(); + BeanUtils.copyProperties(shipperLeaseDetails,shipperLeaseDetailsPO); + return shipperLeaseDetailsPO; + } + +// /** +// * @description 校验唯一 +// * @author ZhouGY +// * @date 2024/5/9 21:10 +// * @param containerDO +// */ +// private void verifyUniqueness(ContainerDO containerDO){ +// LoginUser loginUser = SecurityUtils.getLoginUser(); +// Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); +// if (topOrganizationId == null || topOrganizationId == 0 ){ +// throw new ServiceException("获取当前登陆人组织失败!"); +// } +// int count = leaseMapper.selectCount(new QueryWrapper().lambda() +// .eq(Container::getTopOrganizationId, topOrganizationId) +// .eq(Container::getContainerCode,containerDO.getContainerCode()) +// .eq(Container::getOrganizationId, containerDO.getOrganizationId()) +// .ne(containerDO.getContainerId() != null, Container::getContainerId, containerDO.getContainerId() ) +// .eq(Container::getDelFlag,1)); +// if (count > 0){ +// throw new ServiceException("容器编码【" + containerDO.getContainerCode() + "】已存在"); +// } +// } +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/po/ShipperLeaseDetailsPO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/po/ShipperLeaseDetailsPO.java new file mode 100644 index 000000000..5d945a943 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/po/ShipperLeaseDetailsPO.java @@ -0,0 +1,65 @@ +package com.mhd.basic.domain.shipperLeaseDetails.repository.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 货主租赁明细 + * + */ + +@Data +public class ShipperLeaseDetailsPO extends BaseVOEntity{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + private String cargoOwnerName; + + @ApiModelProperty(value = "租赁方式(整租/散租)") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + private BigDecimal leaseArea; + + @ApiModelProperty("业务日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDate; + + + +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/todo/ShipperLeaseDetailsDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/todo/ShipperLeaseDetailsDO.java new file mode 100644 index 000000000..9e8d08373 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/repository/todo/ShipperLeaseDetailsDO.java @@ -0,0 +1,73 @@ +package com.mhd.basic.domain.shipperLeaseDetails.repository.todo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 货主租赁明细 + * + */ + +@Data +public class ShipperLeaseDetailsDO extends BaseVOEntity{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + private String cargoOwnerName; + + @ApiModelProperty(value = "租赁方式(整租/散租)") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + private BigDecimal leaseArea; + + @ApiModelProperty("业务日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDate; + + @ApiModelProperty("业务日期开始时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDateStart; + + @ApiModelProperty("业务日期结束时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDateEnd; + +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/service/ShipperLeaseDetailsDomainService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/service/ShipperLeaseDetailsDomainService.java new file mode 100644 index 000000000..ac63d9e88 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/shipperLeaseDetails/service/ShipperLeaseDetailsDomainService.java @@ -0,0 +1,87 @@ +package com.mhd.basic.domain.shipperLeaseDetails.service; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.basic.domain.lease.entity.Lease; +import com.mhd.basic.domain.lease.repository.facade.ILeaseService; +import com.mhd.basic.domain.lease.repository.po.LeasePO; +import com.mhd.basic.domain.lease.repository.todo.LeaseDO; +import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails; +import com.mhd.basic.domain.shipperLeaseDetails.repository.facade.IShipperLeaseDetailsService; +import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO; +import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 租赁管理 + * + */ +@Service +@Slf4j +public class ShipperLeaseDetailsDomainService { + + @Autowired + private IShipperLeaseDetailsService shipperLeaseDetailsService; + + + /** + * 分页查询租赁管理列表 + */ + public List queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + return shipperLeaseDetailsService.queryList(shipperLeaseDetailsDO); + } + + + /** + * 新增租赁管理 + */ + public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + + return shipperLeaseDetailsService.insert(shipperLeaseDetailsDO); + } + + /** + * 修改租赁管理 + */ + public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO) { + return shipperLeaseDetailsService.update(shipperLeaseDetailsDO); + } + + /** + * 批量删除租赁管理 + */ + public Boolean delete(Long[] shipperLeaseDetailsIds) { + return shipperLeaseDetailsService.delete(shipperLeaseDetailsIds); + } + + /** + * 获取租赁管理详细信息 + */ + public ShipperLeaseDetailsPO getInfo(Long shipperLeaseDetailsId) + { + return shipperLeaseDetailsService.getInfo(shipperLeaseDetailsId); + } + + + /** + * @description 批量作废租赁 + * @author ZhouGY + * @date 2024/5/13 9:46 + * @param leaseIds + * @return Boolean + */ + public Boolean nullifyByIds(List leaseIds) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return shipperLeaseDetailsService.update(new UpdateWrapper().lambda() + .set(ShipperLeaseDetails::getUpdateBy, loginUser.getUserid()) + .set(ShipperLeaseDetails::getUpdateTime, new Date()) + .in(ShipperLeaseDetails::getId, leaseIds) + .eq(ShipperLeaseDetails::getDelFlag, 1)); + } +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/shipperLeaseDetails/ShipperLeaseDetailsAssembler.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/shipperLeaseDetails/ShipperLeaseDetailsAssembler.java new file mode 100644 index 000000000..628823c5e --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/shipperLeaseDetails/ShipperLeaseDetailsAssembler.java @@ -0,0 +1,61 @@ +package com.mhd.basic.interfaces.assember.shipperLeaseDetails; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.basic.domain.lease.repository.todo.LeaseDO; +import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO; +import com.mhd.basic.interfaces.dto.lease.LeaseDTO; +import com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi.ShipperLeaseDetailsDTO; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 货主租赁明细Assembler + * + */ +@Component +public class ShipperLeaseDetailsAssembler { + + /** + * 转换实体 + */ + public ShipperLeaseDetailsDO toDO(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO) { + ShipperLeaseDetailsDO shipperLeaseDetailsDO = new ShipperLeaseDetailsDO(); + // 拷贝 + BeanUtils.copyProperties(shipperLeaseDetailsDTO, shipperLeaseDetailsDO, IgnoreNullUtil.getNullPropertyNames(shipperLeaseDetailsDTO)); + return shipperLeaseDetailsDO; + } + + /** + * 转换实体 + */ + public ShipperLeaseDetailsDO toDOByEdit(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO) { + ShipperLeaseDetailsDO shipperLeaseDetailsDO = new ShipperLeaseDetailsDO(); + // 拷贝 + BeanUtils.copyProperties(shipperLeaseDetailsDTO, shipperLeaseDetailsDO, IgnoreNullUtil.getNullPropertyNames(shipperLeaseDetailsDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + if(shipperLeaseDetailsDTO.getId() != null){ + shipperLeaseDetailsDO.setUpdateBy(loginUser.getUserid()); + shipperLeaseDetailsDO.setUpdateByName(loginUser.getUsername()); + shipperLeaseDetailsDO.setUpdateTime(new Date()); + }else { + shipperLeaseDetailsDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + shipperLeaseDetailsDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + shipperLeaseDetailsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + shipperLeaseDetailsDO.setCreateBy(loginUser.getUserid()); + shipperLeaseDetailsDO.setCreateByName(loginUser.getUsername()); + shipperLeaseDetailsDO.setCreateTime(new Date()); + } + return shipperLeaseDetailsDO; + } + +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/shipperLeaseDetailsApi/ShipperLeaseDetailsDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/shipperLeaseDetailsApi/ShipperLeaseDetailsDTO.java new file mode 100644 index 000000000..a1e5ef99b --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/shipperLeaseDetailsApi/ShipperLeaseDetailsDTO.java @@ -0,0 +1,74 @@ +package com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 货主租赁明细 + * + */ + +@Data +public class ShipperLeaseDetailsDTO extends BaseVOEntity{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库ID") + private Long warehouseId; + + @ApiModelProperty("仓库名字") + private String warehouseName; + + @ApiModelProperty("货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + private String cargoOwnerName; + + @ApiModelProperty(value = "租赁方式(整租/散租)") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + private BigDecimal leaseArea; + + @ApiModelProperty("业务日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDate; + + @ApiModelProperty("业务日期开始时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDateStart; + + @ApiModelProperty("业务日期结束时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date businessDateEnd; + + +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java index d8447f749..2da0ad39e 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java @@ -6,6 +6,7 @@ import com.mhd.basic.domain.container.repository.po.ContainerPO; import com.mhd.basic.domain.container.repository.todo.ContainerDO; import com.mhd.basic.domain.lease.repository.po.LeasePO; import com.mhd.basic.domain.lease.repository.todo.LeaseDO; +import com.mhd.basic.domain.shipperLeaseDetails.entity.WarehouseOccupancyRate; import com.mhd.basic.interfaces.assember.container.ContainerAssembler; import com.mhd.basic.interfaces.assember.lease.LeaseAssembler; import com.mhd.basic.interfaces.dto.container.ContainerDTO; diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/shipperLeaseDetails/ShipperLeaseDetailsApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/shipperLeaseDetails/ShipperLeaseDetailsApi.java new file mode 100644 index 000000000..158bad6e4 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/shipperLeaseDetails/ShipperLeaseDetailsApi.java @@ -0,0 +1,140 @@ +package com.mhd.basic.interfaces.facadeApi.shipperLeaseDetails; + +import com.mhd.basic.application.service.Lease.LeaseApplicationService; +import com.mhd.basic.application.service.shipperLeaseDetails.ShipperLeaseDetailsApplicationService; +import com.mhd.basic.domain.lease.repository.po.LeasePO; +import com.mhd.basic.domain.lease.repository.todo.LeaseDO; +import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails; +import com.mhd.basic.domain.shipperLeaseDetails.entity.WarehouseOccupancyRate; +import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO; +import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO; +import com.mhd.basic.interfaces.assember.lease.LeaseAssembler; +import com.mhd.basic.interfaces.assember.shipperLeaseDetails.ShipperLeaseDetailsAssembler; +import com.mhd.basic.interfaces.dto.lease.LeaseDTO; +import com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi.ShipperLeaseDetailsDTO; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 货主租赁明细Api + */ +@RestController +@RequestMapping("/ShipperLeaseDetailsApi") +public class ShipperLeaseDetailsApi extends BaseController{ + + @Autowired + private LeaseApplicationService leaseApplicationService; + + @Autowired + private ShipperLeaseDetailsApplicationService shipperLeaseDetailsApplicationService; + + @Resource + private ShipperLeaseDetailsAssembler shipperLeaseDetailsAssembler; + + /** + * 分页查询货主租赁明细列表 + */ + @ApiOperation("查询货主租赁明细列表") + @GetMapping("/list") + public TableDataInfo list(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO) + { + //转换实体 + ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDO(shipperLeaseDetailsDTO); + startPage(); + List list = shipperLeaseDetailsApplicationService.queryList(shipperLeaseDetailsDO); + return getDataTable(list); + } + + /** + * 分页查询货主租赁明细列表 + */ + @ApiOperation("查询货主租赁明细列表") + @GetMapping("/listByApp") + public AjaxResult listByApp(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO) + { + //转换实体 + ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDO(shipperLeaseDetailsDTO); + List list = shipperLeaseDetailsApplicationService.queryList(shipperLeaseDetailsDO); + return AjaxResult.success(list); + } + + /** + * 编辑货主租赁明细 + */ + @ApiOperation("编辑货主租赁明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ShipperLeaseDetailsDTO shipperLeaseDetailsDTO) + { + //转换实体 + ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDOByEdit(shipperLeaseDetailsDTO); + if(shipperLeaseDetailsDTO.getId() != null){ + return toAjax(shipperLeaseDetailsApplicationService.update(shipperLeaseDetailsDO)); + }else { + return toAjax(shipperLeaseDetailsApplicationService.insert(shipperLeaseDetailsDO)); + } + } + + /** + * 批量删除货主租赁明细 + */ + @ApiOperation("批量删除货主租赁明细") + @DeleteMapping("/deleteByIds/{shipperLeaseDetailsIds}") + public AjaxResult delete(@PathVariable Long[] shipperLeaseDetailsIds) + { + return toAjax(shipperLeaseDetailsApplicationService.delete(shipperLeaseDetailsIds)); + } + + /** + * 获取货主租赁明细详细信息 + */ + @ApiOperation("获取货主租赁明细") + @GetMapping(value = "/getInfo/{shipperLeaseDetailsId}") + public AjaxResult getInfo(@PathVariable("shipperLeaseDetailsId") Long shipperLeaseDetailsId) + { + return AjaxResult.success(shipperLeaseDetailsApplicationService.getInfo(shipperLeaseDetailsId)); + } + + + /** + * 批量作废租赁 + */ + @ApiOperation("批量作废租赁") + @GetMapping("/nullifyByIds/{shipperLeaseDetailsIds}") + public AjaxResult nullifyByIds(@PathVariable("shipperLeaseDetailsIds") List shipperLeaseDetailsIds) + { + return toAjax(shipperLeaseDetailsApplicationService.nullifyByIds(shipperLeaseDetailsIds)); + } + + /** + * 计算货主租赁明细 + */ + @ApiOperation("货主租赁明细") + @PostMapping("/shipperLeaseDetails") + public AjaxResult shipperLeaseDetails() + { + leaseApplicationService.shipperLeaseDetails(); + return AjaxResult.success(); + } + + /** + * 计算仓库出租率 + * warehouseId 仓库id + */ + @ApiOperation("仓库出租率") + @PostMapping("/warehouseOccupancyRate") + public TableDataInfo warehouseOccupancyRate(@RequestBody ShipperLeaseDetailsDTO shipperLeaseDetailsDTO) + { + ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDO(shipperLeaseDetailsDTO); + List warehouseOccupancyRates = leaseApplicationService.warehouseOccupancyRate(shipperLeaseDetailsDO); + return getDataTable(warehouseOccupancyRates); + } + + +} diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml index 745535951..60e23bde4 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml @@ -91,7 +91,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and start_date >= #{startDate} and start_date <= #{endDate} - + + AND start_date <= #{time} + AND end_date >= #{time} + and del_flag = #{delFlag} diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/shipperLeaseDetails/ShipperLeaseDetailsMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/shipperLeaseDetails/ShipperLeaseDetailsMapper.xml new file mode 100644 index 000000000..7e8aac7fc --- /dev/null +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/shipperLeaseDetails/ShipperLeaseDetailsMapper.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select + id, + organization_id, + organization_name, + top_organization_id, + warehouse_id, + warehouse_name, + shipper_id, + cargo_owner_name, + lease_type, + lease_area, + business_date, + create_by, + create_by_name, + create_time, + update_by, + update_by_name, + update_time, + del_flag + from shipper_lease_details + + + + + + + and organization_id = #{organizationId} + + + and top_organization_id = #{topOrganizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + + + and warehouse_id = #{warehouseId} + + + + + and business_date >= #{businessDateStart} + + + and business_date <= #{businessDateEnd} + + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + + + and shipper_id = #{shipperId} + + + and cargo_owner_name like concat('%', #{cargoOwnerName}, '%') + + + + + and lease_type = #{leaseType} + + + and lease_area = #{leaseArea} + + + + + and business_date = #{businessDate} + + + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java index e85d749c9..c1db0d4b0 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java @@ -165,4 +165,7 @@ public class MaterialInventoryDO extends MaterialBaseDO { @ApiModelProperty("面积") @Excel(name = "面积") private BigDecimal area; + + @ApiModelProperty("货主id") + private Long shipperId; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java index 3eaff01ac..3e0e1875b 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java @@ -144,4 +144,7 @@ public class MaterialInventoryDTO extends MaterialBaseDTO { @ApiModelProperty("物料/库位信息") @Excel(name = "物料/库位信息") private String storageInfo; + + @ApiModelProperty("货主id") + private Long shipperId; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventory/MaterialInventoryApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventory/MaterialInventoryApi.java index b1ce90493..04cc46430 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventory/MaterialInventoryApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventory/MaterialInventoryApi.java @@ -47,6 +47,16 @@ public class MaterialInventoryApi extends BaseController { return getDataTable(list); } + @ApiOperation("查询物料库存列表不分页") + @GetMapping("/listAll") + public TableDataInfo listAll(MaterialInventoryDTO materialInventoryDTO) + { + //转换实体 + MaterialInventoryDO materialInventoryDO = materialInventoryAssembler.toDO(materialInventoryDTO); + List list = materialInventoryApplicationService.queryList(materialInventoryDO); + return getDataTable(list); + } + /** * 编辑物料库存 */ diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml index 327971a66..8a0fbce63 100644 --- a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -70,6 +70,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.warehouse_id = #{warehouseId} + + and a.shipper_id = #{shipperId} + and a.warehouse_code = #{warehouseCode}