diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java new file mode 100644 index 000000000..40719bd6f --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java @@ -0,0 +1,167 @@ +package com.mhd.basic.application.service.Lease; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.mhd.basic.domain.container.repository.po.ContainerPO; +import com.mhd.basic.domain.container.repository.todo.ContainerDO; +import com.mhd.basic.domain.container.service.ContainerDomainService; +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.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.SysDictData; +import com.mhd.system.api.model.LoginUser; +import com.mhd.system.service.ISysDictTypeService; +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; + +/** + * 租赁管理ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class LeaseApplicationService { + + @Autowired + private LeaseDomainService leaseDomainService; + + @Autowired + private ILeaseService leaseService; + + @Autowired + private ISysDictTypeService dictTypeService; + + + /** + * 分页查询租赁管理列表 + */ + + public List queryList(LeaseDO leaseDO) { + 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 (leaseDO.getOrganizationId() == null) { + leaseDO.setOrganizationId(null); + leaseDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + if (topOrganizationId != null && topOrganizationId != 1){ + leaseDO.setTopOrganizationId(topOrganizationId); + } + // 如果前端传递了organizationId,验证是否与当前登录用户的组织ID一致 + if (leaseDO.getOrganizationId() != null && !leaseDO.getOrganizationId().equals(loginUserOrganizationId)) { + // 前端传递了其他组织的organizationId,强制使用当前登录用户的组织ID,防止越权查询 + leaseDO.setOrganizationId(loginUserOrganizationId); + } + } + } + return leaseDomainService.queryList(leaseDO); + } + + + /** + * 新增租赁管理 + */ + public Boolean insert(LeaseDO leaseDO) { + // 设置当前登录用户的组织信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserPo() != null) { + leaseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + leaseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + leaseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + List timeOverlapSimple = isTimeOverlapSimple(leaseDO.getCargoOwnerName(), leaseDO.getStartDate(), leaseDO.getEndDate(), null); + if (ObjectUtil.isNotEmpty(timeOverlapSimple)) { + throw new ServiceException("同一货主租赁信息时间不能重叠"); + } + return leaseDomainService.insert(leaseDO); + } + + private List isTimeOverlapSimple(String cargoOwnerName, Date startDate, Date endDate, Long excludeId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Lease::getCargoOwnerName, cargoOwnerName) + .eq(Lease::getDelFlag, 1) // 只查询正常状态 + .le(Lease::getStartDate, endDate) + .ge(Lease::getEndDate, startDate); + if (excludeId != null) { + wrapper.ne(Lease::getId, excludeId); + } + return leaseService.list(wrapper); + } + + /** + * 修改租赁管理 + */ + public Boolean update(LeaseDO leaseDO) { + List timeOverlapSimple = isTimeOverlapSimple(leaseDO.getCargoOwnerName(), leaseDO.getStartDate(), leaseDO.getEndDate(), leaseDO.getId()); + if (ObjectUtil.isNotEmpty(timeOverlapSimple)) { + throw new ServiceException("同一货主租赁信息时间不能重叠"); + } + return leaseDomainService.update(leaseDO); + } + + /** + * 批量删除租赁管理 + */ + public boolean delete(Long[] leaseIds) { + return leaseDomainService.delete(leaseIds); + } + + /** + * 获取租赁管理详细信息 + */ + public LeasePO getInfo(Long leaseId) + { + return leaseDomainService.getInfo(leaseId); + } + + /** + * @description 批量作废租赁 + * @author ZhouGY + * @date 2024/5/13 9:46 + * @param leaseIds + * @return Boolean + */ + public Boolean nullifyByIds(List leaseIds){ + return leaseDomainService.nullifyByIds(leaseIds); + } + +// /** +// * @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/application/service/container/ContainerApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/container/ContainerApplicationService.java index ca2a60370..f5c8a2160 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/container/ContainerApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/container/ContainerApplicationService.java @@ -79,8 +79,6 @@ public class ContainerApplicationService { containerDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); containerDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); } - //翻译库区类型 - setDataDict(containerDO); return containerDomainService.insert(containerDO); } @@ -117,22 +115,4 @@ public class ContainerApplicationService { return containerDomainService.nullifyByIds(containerIds); } - /** - * @description 设置数据字典键值 - * @author ZhouGY - * @date 2024/4/7 14:33 - * @param containerDO - */ - private void setDataDict(ContainerDO containerDO){ - //翻译容器类型 - 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("容器类型【" + containerDO.getContainerType() + "】数据字典不存在 请联系管理员"); - } - containerDO.setContainerTypeName(storageTypeDictData.getDictLabel()); - } } 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 new file mode 100644 index 000000000..ccb4c61c9 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java @@ -0,0 +1,55 @@ +package com.mhd.basic.domain.lease.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 租赁管理对象 container + * + */ + +@Data +public class Lease 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("货主名称") + private String cargoOwnerName; + + @ApiModelProperty(value = "租赁方式(整租/散租)") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + private BigDecimal leaseArea; + + @ApiModelProperty("开始日期") + private Date startDate; + + @ApiModelProperty("结束日期") + private Date endDate; + + @ApiModelProperty("备注") + private String remark; +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/facade/ILeaseService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/facade/ILeaseService.java new file mode 100644 index 000000000..a7de83151 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/facade/ILeaseService.java @@ -0,0 +1,43 @@ +package com.mhd.basic.domain.lease.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.basic.domain.lease.entity.Lease; +import com.mhd.basic.domain.lease.repository.po.LeasePO; +import com.mhd.basic.domain.lease.repository.todo.LeaseDO; + +import java.util.List; + +/** + * 租赁管理Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface ILeaseService extends IService +{ + /** + * 分页查询租赁管理列表 + */ + public List queryList(LeaseDO leaseDO); + + /** + * 新增租赁管理 + */ + public Boolean insert(LeaseDO leaseDO); + + /** + * 修改租赁管理 + */ + public Boolean update(LeaseDO leaseDO); + + /** + * 批量删除租赁管理 + */ + public Boolean delete(Long[] leaseIds); + + + /** + * 查询租赁管理 + */ + public LeasePO getInfo(Long leaseId); +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/mapper/LeaseMapper.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/mapper/LeaseMapper.java new file mode 100644 index 000000000..2d38584a2 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/mapper/LeaseMapper.java @@ -0,0 +1,21 @@ +package com.mhd.basic.domain.lease.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.basic.domain.lease.entity.Lease; +import com.mhd.basic.domain.lease.repository.po.LeasePO; +import com.mhd.basic.domain.lease.repository.todo.LeaseDO; + +import java.util.List; + +/** + * 租赁管理Mapper接口 + * + */ +public interface LeaseMapper extends BaseMapper +{ + /** + * 查询租赁管理列表 + */ + public List queryList(LeaseDO leaseDO); + +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/persistence/LeaseImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/persistence/LeaseImpl.java new file mode 100644 index 000000000..208ba54a7 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/persistence/LeaseImpl.java @@ -0,0 +1,114 @@ +package com.mhd.basic.domain.lease.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.basic.domain.lease.entity.Lease; +import com.mhd.basic.domain.lease.repository.facade.ILeaseService; +import com.mhd.basic.domain.lease.repository.mapper.LeaseMapper; +import com.mhd.basic.domain.lease.repository.po.LeasePO; +import com.mhd.basic.domain.lease.repository.todo.LeaseDO; +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 LeaseImpl extends ServiceImpl implements ILeaseService { + @Autowired + private LeaseMapper leaseMapper; + + /** + * 查询容器管理列表 + */ + @Override + public List queryList(LeaseDO leaseDO) + { + return leaseMapper.queryList(leaseDO); + } + + /** + * 新增容器管理 + */ + @Override + public Boolean insert(LeaseDO leaseDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + Lease lease = new Lease(); + BeanUtils.copyProperties(leaseDO,lease); + return this.save(lease); + } + + /** + * 修改容器管理 + */ + @Override + public Boolean update(LeaseDO leaseDO) { + Lease lease = new Lease(); + BeanUtils.copyProperties(leaseDO,lease); + return this.updateById(lease); + } + + /** + * 批量删除容器管理 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean delete(Long[] leaseIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List list = new ArrayList<>(); + for (Long id : leaseIds) { + Lease lease = new Lease(); + lease.setId(id); + lease.setDelFlag(2); + lease.setUpdateBy(loginUser.getUserid()); + lease.setUpdateByName(loginUser.getUsername()); + lease.setUpdateTime(new Date()); + list.add(lease); + } + return this.updateBatchById(list); + } + + /** + * 修改容器管理 + */ + @Override + public LeasePO getInfo(Long leaseId) { + Lease lease = this.getById(leaseId); + LeasePO leasePO = new LeasePO(); + BeanUtils.copyProperties(lease,leasePO); + return leasePO; + } + +// /** +// * @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/lease/repository/po/LeasePO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java new file mode 100644 index 000000000..63b928e12 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java @@ -0,0 +1,58 @@ +package com.mhd.basic.domain.lease.repository.po; + +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; + +/** + * 租赁管理对象 container + * + */ + +@Data +public class LeasePO extends BaseVOEntity{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + 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("货主名称") + private String cargoOwnerName; + + @ApiModelProperty(value = "租赁方式(整租/散租)") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + private BigDecimal leaseArea; + + @ApiModelProperty("开始日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startDate; + + @ApiModelProperty("结束日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endDate; + + @ApiModelProperty("备注") + private String remark; +} 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 new file mode 100644 index 000000000..22755ecd4 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java @@ -0,0 +1,57 @@ +package com.mhd.basic.domain.lease.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 java.math.BigDecimal; +import java.util.Date; + +/** + * 租赁管理对象 container + * + */ + +@Data +public class LeaseDO extends BaseVOEntity{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + 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("货主名称") + private String cargoOwnerName; + + @ApiModelProperty(value = "租赁方式(整租/散租)") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + private BigDecimal leaseArea; + + @ApiModelProperty("开始日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startDate; + + @ApiModelProperty("结束日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endDate; + + @ApiModelProperty("备注") + private String remark; +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/service/LeaseDomainService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/service/LeaseDomainService.java new file mode 100644 index 000000000..20c5cff06 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/service/LeaseDomainService.java @@ -0,0 +1,87 @@ +package com.mhd.basic.domain.lease.service; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.basic.domain.container.entity.Container; +import com.mhd.basic.domain.container.repository.facade.IContainerService; +import com.mhd.basic.domain.container.repository.po.ContainerPO; +import com.mhd.basic.domain.container.repository.todo.ContainerDO; +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.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 LeaseDomainService { + + @Autowired + private ILeaseService leaseService; + + + /** + * 分页查询租赁管理列表 + */ + public List queryList(LeaseDO leaseDO) { + return leaseService.queryList(leaseDO); + } + + + /** + * 新增租赁管理 + */ + public Boolean insert(LeaseDO leaseDO) { + + return leaseService.insert(leaseDO); + } + + /** + * 修改租赁管理 + */ + public Boolean update(LeaseDO leaseDO) { + return leaseService.update(leaseDO); + } + + /** + * 批量删除租赁管理 + */ + public Boolean delete(Long[] leaseIds) { + return leaseService.delete(leaseIds); + } + + /** + * 获取租赁管理详细信息 + */ + public LeasePO getInfo(Long leaseId) + { + return leaseService.getInfo(leaseId); + } + + + /** + * @description 批量作废租赁 + * @author ZhouGY + * @date 2024/5/13 9:46 + * @param leaseIds + * @return Boolean + */ + public Boolean nullifyByIds(List leaseIds) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return leaseService.update(new UpdateWrapper().lambda() + .set(Lease::getUpdateBy, loginUser.getUserid()) + .set(Lease::getUpdateTime, new Date()) + .in(Lease::getId, leaseIds) + .eq(Lease::getDelFlag, 1)); + } +} diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/lease/LeaseAssembler.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/lease/LeaseAssembler.java new file mode 100644 index 000000000..c67c39942 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/assember/lease/LeaseAssembler.java @@ -0,0 +1,61 @@ +package com.mhd.basic.interfaces.assember.lease; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.basic.domain.container.repository.todo.ContainerDO; +import com.mhd.basic.domain.lease.repository.todo.LeaseDO; +import com.mhd.basic.interfaces.dto.container.ContainerDTO; +import com.mhd.basic.interfaces.dto.lease.LeaseDTO; +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 LeaseAssembler { + + /** + * 转换实体 + */ + public LeaseDO toDO(LeaseDTO leaseDTO) { + LeaseDO leaseDO = new LeaseDO(); + // 拷贝 + BeanUtils.copyProperties(leaseDTO, leaseDO, IgnoreNullUtil.getNullPropertyNames(leaseDTO)); + return leaseDO; + } + + /** + * 转换实体 + */ + public LeaseDO toDOByEdit(LeaseDTO leaseDTO) { + LeaseDO leaseDO = new LeaseDO(); + // 拷贝 + BeanUtils.copyProperties(leaseDTO, leaseDO, IgnoreNullUtil.getNullPropertyNames(leaseDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + if(leaseDTO.getId() != null){ + leaseDO.setUpdateBy(loginUser.getUserid()); + leaseDO.setUpdateByName(loginUser.getUsername()); + leaseDO.setUpdateTime(new Date()); + }else { + leaseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + leaseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + leaseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + leaseDO.setCreateBy(loginUser.getUserid()); + leaseDO.setCreateByName(loginUser.getUsername()); + leaseDO.setCreateTime(new Date()); + } + return leaseDO; + } + +} \ No newline at end of file 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 new file mode 100644 index 000000000..b41954c13 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java @@ -0,0 +1,53 @@ +package com.mhd.basic.interfaces.dto.lease; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 租赁管理对象 container + * + */ + +@Data +public class LeaseDTO extends BaseVOEntity{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + 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("货主名称") + private String cargoOwnerName; + + @ApiModelProperty(value = "租赁方式(整租/散租)") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + private BigDecimal leaseArea; + + @ApiModelProperty("开始日期") + private Date startDate; + + @ApiModelProperty("结束日期") + private Date endDate; + + @ApiModelProperty("备注") + private String remark; +} 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 new file mode 100644 index 000000000..d8447f749 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java @@ -0,0 +1,111 @@ +package com.mhd.basic.interfaces.facadeApi.lease; + +import com.mhd.basic.application.service.Lease.LeaseApplicationService; +import com.mhd.basic.application.service.container.ContainerApplicationService; +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.interfaces.assember.container.ContainerAssembler; +import com.mhd.basic.interfaces.assember.lease.LeaseAssembler; +import com.mhd.basic.interfaces.dto.container.ContainerDTO; +import com.mhd.basic.interfaces.dto.lease.LeaseDTO; +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("/LeaseApi") +public class LeaseApi extends BaseController{ + + @Autowired + private LeaseApplicationService leaseApplicationService; + + @Resource + private LeaseAssembler leaseAssembler; + + /** + * 分页查询租赁管理列表 + */ + @ApiOperation("查询租赁管理列表") + @GetMapping("/list") + public TableDataInfo list(LeaseDTO leaseDTO) + { + //转换实体 + LeaseDO leaseDO = leaseAssembler.toDO(leaseDTO); + startPage(); + List list = leaseApplicationService.queryList(leaseDO); + return getDataTable(list); + } + + /** + * 分页查询租赁管理列表 + */ + @ApiOperation("查询租赁管理列表") + @GetMapping("/listByApp") + public AjaxResult listByApp(LeaseDTO leaseDTO) + { + //转换实体 + LeaseDO leaseDO = leaseAssembler.toDO(leaseDTO); + List list = leaseApplicationService.queryList(leaseDO); + return AjaxResult.success(list); + } + + /** + * 编辑租赁管理 + */ + @ApiOperation("编辑租赁管理") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody LeaseDTO leaseDTO) + { + //转换实体 + LeaseDO leaseDO = leaseAssembler.toDOByEdit(leaseDTO); + if(leaseDTO.getId() != null){ + return toAjax(leaseApplicationService.update(leaseDO)); + }else { + return toAjax(leaseApplicationService.insert(leaseDO)); + } + } + + /** + * 批量删除租赁管理 + */ + @ApiOperation("批量删除租赁管理") + @DeleteMapping("/deleteByIds/{leaseIds}") + public AjaxResult delete(@PathVariable Long[] leaseIds) + { + return toAjax(leaseApplicationService.delete(leaseIds)); + } + + /** + * 获取租赁管理详细信息 + */ + @ApiOperation("获取租赁管理") + @GetMapping(value = "/getInfo/{leaseId}") + public AjaxResult getInfo(@PathVariable("leaseId") Long leaseId) + { + return AjaxResult.success(leaseApplicationService.getInfo(leaseId)); + } + + + /** + * 批量作废租赁 + */ + @ApiOperation("批量作废租赁") + @GetMapping("/nullifyByIds/{leaseIds}") + public AjaxResult nullifyByIds(@PathVariable("leaseIds") List leaseIds) + { + return toAjax(leaseApplicationService.nullifyByIds(leaseIds)); + } + + +} 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 new file mode 100644 index 000000000..99ce74d42 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select + id, + organization_id, + organization_name, + top_organization_id, + cargo_owner_name, + lease_type, + lease_area, + start_date, + end_date, + remark, + create_time, + create_by, + create_by_name, + update_time, + update_by, + update_by_name, + del_flag + from lease + + + + + + + and organization_id = #{organizationId} + + + and top_organization_id = #{topOrganizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and cargo_owner_name like concat('%', #{cargoOwnerName}, '%') + + + and lease_type = #{leaseType} + + + and lease_area = #{leaseArea} + + + and remark like concat('%', #{remark}, '%') + + + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + and start_date >= #{startDate} and start_date <= #{endDate} + + + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file