仓库出租率功能模块

This commit is contained in:
zhou-hongcheng
2026-01-29 14:44:27 +08:00
parent b72134a936
commit db86df135a
25 changed files with 1426 additions and 8 deletions
@@ -63,4 +63,8 @@ public class LeaseDO extends BaseVOEntity{
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("当前时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date time;
}
@@ -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;
}
@@ -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;
}
@@ -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<ShipperLeaseDetails>
{
/**
* 分页查询货主租赁明细列表
*/
public List<ShipperLeaseDetailsPO> queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO);
/**
* 新增货主租赁明细
*/
public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO);
/**
* 修改货主租赁明细
*/
public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO);
/**
* 批量删除货主租赁明细
*/
public Boolean delete(Long[] leaseIds);
/**
* 查询货主租赁明细
*/
public ShipperLeaseDetailsPO getInfo(Long leaseId);
}
@@ -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<ShipperLeaseDetails>
{
/**
* 查询货主租赁明细列表
*/
public List<ShipperLeaseDetailsPO> queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO);
}
@@ -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<ShipperLeaseDetailsMapper, ShipperLeaseDetails> implements IShipperLeaseDetailsService {
@Autowired
private ShipperLeaseDetailsMapper shipperLeaseDetailsMapper;
/**
* 查询货主租赁明细列表
*/
@Override
public List<ShipperLeaseDetailsPO> 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<ShipperLeaseDetails> 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<Container>().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() + "】已存在");
// }
// }
}
@@ -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;
}
@@ -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;
}
@@ -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<ShipperLeaseDetailsPO> 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<Long> leaseIds) {
LoginUser loginUser = SecurityUtils.getLoginUser();
return shipperLeaseDetailsService.update(new UpdateWrapper<ShipperLeaseDetails>().lambda()
.set(ShipperLeaseDetails::getUpdateBy, loginUser.getUserid())
.set(ShipperLeaseDetails::getUpdateTime, new Date())
.in(ShipperLeaseDetails::getId, leaseIds)
.eq(ShipperLeaseDetails::getDelFlag, 1));
}
}