shiyunteng
8 天以前 cc59b65bc63b839127c29775bcd410dd407de66d
设备采购计划与设备照片
5个文件已修改
11个文件已添加
607 ■■■■■ 已修改文件
platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/MaxSizeContant.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/DevicePurchasePlanQueryDTO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlan.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlanItem.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DevicePurchasePlanPageVo.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryDetailVo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanItemMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanItemMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/constant/MaxSizeContant.java
@@ -38,7 +38,10 @@
     * 租赁台账编号
     */
    String LEDGER_CODE = "LEDGER_CODE";
    /**
     * 设备采购计划编号
     */
    String DEVICE_PURCHASE_CODE = "DEVICE_PURCHASE_CODE";
platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/DevicePurchasePlanQueryDTO.java
New file
@@ -0,0 +1,20 @@
package com.by4cloud.platformx.device.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class DevicePurchasePlanQueryDTO {
    /**
     * 采购计划名称
     */
    @Schema(description = "采购计划名称")
    private String planName;
    /**
     * 采购计划编号
     */
    @Schema(description = "采购计划编号")
    private String planCode;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceInventory.java
@@ -51,4 +51,8 @@
    @Schema(description = "关联台账明细ID")
    @Column(columnDefinition="bigint comment '关联台账明细ID'")
    private Long ledgerItemId;
    @Schema(description = "设备照片地址")
    @Column(columnDefinition="varchar(256) comment '设备照片地址'")
    private String filePath;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlan.java
New file
@@ -0,0 +1,72 @@
package com.by4cloud.platformx.device.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
@Data
@Entity
@TableName("device_purchase_plan")
@javax.persistence.Table(name = "device_purchase_plan")
@Table(appliesTo = "device_purchase_plan", comment = "设备采购计划")
public class DevicePurchasePlan extends BaseModel<DevicePurchasePlan> {
    /**
     * 采购计划名称
     */
    @Schema(description = "采购计划名称")
    @Column(columnDefinition="VARCHAR(128) comment '采购计划名称'")
    private String planName;
    /**
     * 采购计划编号
     */
    @Schema(description = "采购计划编号")
    @Column(columnDefinition="VARCHAR(128) comment '采购计划编号'")
    private String planCode;
    /**
     * 申请人
     */
    @Schema(description = "申请人")
    @Column(columnDefinition="bigint comment '申请人'")
    private Long releaseId;
    /**
     * 申请单位
     */
    @Schema(description = "申请单位")
    @Column(columnDefinition="bigint comment '申请单位'")
    private Long releaseCompId;
    /**
     * 申请时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "申请时间")
    @Column(columnDefinition="datetime comment '申请时间'")
    private Date releaseTime;
    /**
     * 状态
     */
    @Schema(description = "状态")
    @Column(columnDefinition="int comment '类型 0待审批,1已审批'")
    private Integer status;
    @Transient
    @TableField(exist = false)
    private List<DevicePurchasePlanItem> planItemList;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DevicePurchasePlanItem.java
New file
@@ -0,0 +1,89 @@
package com.by4cloud.platformx.device.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import java.math.BigDecimal;
@Data
@Entity
@TableName("device_purchase_plan_item")
@javax.persistence.Table(name = "device_purchase_plan_item")
@Table(appliesTo = "device_purchase_plan_item", comment = "设备采购计划子项")
public class DevicePurchasePlanItem extends BaseModel<DevicePurchasePlanItem> {
    /**
     * 计划ID
     */
    @Schema(description="计划ID")
    @Column(columnDefinition="bigint comment '计划ID'")
    private Long planId;
    /**
     * 设备ID
     */
    @Schema(description="设备ID")
    @Column(columnDefinition="bigint comment '设备ID'")
    private Long deviceId;
    /**
     * 设备编码
     */
    @Schema(description="设备编码")
    @Column(columnDefinition="VARCHAR(32) comment '设备编码'")
    private String deviceCode;
    /**
     * 设备名称
     */
    @Schema(description="设备名称")
    @Column(columnDefinition="VARCHAR(256) comment '设备名称'")
    private String deviceName;
    /**
     * 规格型号
     */
    @Schema(description="规格型号")
    @Column(columnDefinition="VARCHAR(256) comment '规格型号'")
    private String deviceModels;
    /**
     * 关键参数
     */
    @Schema(description="关键参数")
    @Column(columnDefinition="VARCHAR(256) comment '关键参数'")
    private String keyParameter;
    /**
     * 计量单位
     */
    @Schema(description="计量单位")
    @Column(columnDefinition="VARCHAR(32) comment '计量单位'")
    private String meteringUnit;
    /**
     * 数量
     */
    @Schema(description = "数量")
    @Column(columnDefinition="INTEGER comment '数量'")
    private Integer num;
    /**
     * 单价
     */
    @Schema(description = "单价")
    @Column(columnDefinition="decimal(10,2) comment '单价'")
    private BigDecimal unitPrice;
    /**
     * 金额
     */
    @Schema(description = "金额")
    @Column(columnDefinition="decimal(10,2) comment '金额'")
    private BigDecimal amount;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/DevicePurchasePlanPageVo.java
New file
@@ -0,0 +1,55 @@
package com.by4cloud.platformx.device.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class DevicePurchasePlanPageVo {
    private Long id;
    /**
     * 采购计划名称
     */
    @Schema(description = "采购计划名称")
    private String planName;
    /**
     * 采购计划编号
     */
    @Schema(description = "采购计划编号")
    private String planCode;
    /**
     * 申请人
     */
    @Schema(description = "申请人")
    private Long releaseId;
    /**
     * 申请单位
     */
    @Schema(description = "申请单位")
    private Long releaseCompId;
    /**
     * 申请时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "申请时间")
    private Date releaseTime;
    /**
     * 状态
     */
    @Schema(description = "状态")
    private Integer status;
    private String userName;
    private String deptName;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryDetailVo.java
@@ -26,4 +26,6 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date deliveryDate;
    @Schema(description = "图片地址")
    private String filePath;
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceInventoryController.java
@@ -166,4 +166,15 @@
    public R getReleaseDetail(@PathVariable("id")Long id) {
        return deviceInventoryService.getReleaseDetail(id);
    }
    /**
     * 修改库存表
     * @param deviceInventory 库存表
     * @return R
     */
    @SysLog("修改库存表" )
    @PutMapping("/uploadPic")
    public R uploadPic(@RequestBody DeviceInventory deviceInventory) {
        return R.ok(deviceInventoryService.updateById(deviceInventory));
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DevicePurchasePlanController.java
New file
@@ -0,0 +1,137 @@
package com.by4cloud.platformx.device.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.common.security.util.SecurityUtils;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
import com.by4cloud.platformx.device.service.DevicePurchasePlanService;
import com.by4cloud.platformx.device.service.JcMaxSizeService;
import org.springframework.security.access.prepost.PreAuthorize;
import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import org.springdoc.api.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 设备采购计划
 *
 * @author syt
 * @date 2025-04-21 14:43:13
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/devicePurchasePlan" )
@Tag(description = "devicePurchasePlan" , name = "设备采购计划管理" )
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class DevicePurchasePlanController {
    private final  DevicePurchasePlanService devicePurchasePlanService;
    /**
     * 分页查询
     * @param page 分页对象
     * @param devicePurchasePlan 设备采购计划
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/page" )
    @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_view')" )
    public R getDevicePurchasePlanPage(@ParameterObject Page page, @ParameterObject DevicePurchasePlanQueryDTO queryDTO) {
        return R.ok(devicePurchasePlanService.pageNew(page, queryDTO));
    }
    /**
     * 通过id查询设备采购计划
     * @param id id
     * @return R
     */
    @Operation(summary = "通过id查询" , description = "通过id查询" )
    @GetMapping("/{id}" )
    @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_view')" )
    public R getById(@PathVariable("id" ) Long id) {
        return R.ok(devicePurchasePlanService.getByIdNew(id));
    }
    /**
     * 新增设备采购计划
     * @param devicePurchasePlan 设备采购计划
     * @return R
     */
    @Operation(summary = "新增设备采购计划" , description = "新增设备采购计划" )
    @SysLog("新增设备采购计划" )
    @PostMapping
    @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_add')" )
    public R save(@RequestBody DevicePurchasePlan devicePurchasePlan) {
        return R.ok(devicePurchasePlanService.saveNew(devicePurchasePlan));
    }
    /**
     * 修改设备采购计划
     * @param devicePurchasePlan 设备采购计划
     * @return R
     */
    @Operation(summary = "修改设备采购计划" , description = "修改设备采购计划" )
    @SysLog("修改设备采购计划" )
    @PutMapping
    @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_edit')" )
    public R updateById(@RequestBody DevicePurchasePlan devicePurchasePlan) {
        return R.ok(devicePurchasePlanService.updateByIdNew(devicePurchasePlan));
    }
    /**
     * 通过id删除设备采购计划
     * @param ids id列表
     * @return R
     */
    @Operation(summary = "通过id删除设备采购计划" , description = "通过id删除设备采购计划" )
    @SysLog("通过id删除设备采购计划" )
    @DeleteMapping
    @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_del')" )
    public R removeById(@RequestBody Long[] ids) {
        return R.ok(devicePurchasePlanService.removeBatchByIds(CollUtil.toList(ids)));
    }
    /**
     * 导出excel 表格
     * @param devicePurchasePlan 查询条件
        * @param ids 导出指定ID
     * @return excel 文件流
     */
    @ResponseExcel
    @GetMapping("/export")
    @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_export')" )
    public List<DevicePurchasePlan> export(DevicePurchasePlan devicePurchasePlan,Long[] ids) {
        return devicePurchasePlanService.list(Wrappers.lambdaQuery(devicePurchasePlan).in(ArrayUtil.isNotEmpty(ids), DevicePurchasePlan::getId, ids));
    }
    /**
     * 通过id通过设备采购计划
     * @param id id
     * @return R
     */
    @Operation(summary = "通过id通过设备采购计划" , description = "通过id通过设备采购计划" )
    @GetMapping("/approved/{id}" )
    @PreAuthorize("@pms.hasPermission('device_devicePurchasePlan_approved')" )
    public R approved(@PathVariable("id" ) Long id) {
        return R.ok(devicePurchasePlanService.approved(id));
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanItemMapper.java
New file
@@ -0,0 +1,11 @@
package com.by4cloud.platformx.device.mapper;
import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
import com.by4cloud.platformx.device.entity.DevicePurchasePlanItem;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DevicePurchasePlanItemMapper extends PlatformxBaseMapper<DevicePurchasePlanItem> {
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/DevicePurchasePlanMapper.java
New file
@@ -0,0 +1,16 @@
package com.by4cloud.platformx.device.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
import com.by4cloud.platformx.device.entity.vo.DevicePurchasePlanPageVo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DevicePurchasePlanMapper extends PlatformxBaseMapper<DevicePurchasePlan> {
    IPage<DevicePurchasePlanPageVo> page(Page page, DevicePurchasePlanQueryDTO queryDTO);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DevicePurchasePlanService.java
New file
@@ -0,0 +1,20 @@
package com.by4cloud.platformx.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
public interface DevicePurchasePlanService extends IService<DevicePurchasePlan> {
    boolean saveNew(DevicePurchasePlan devicePurchasePlan);
    IPage pageNew(Page page, DevicePurchasePlanQueryDTO queryDTO);
    boolean approved(Long id);
    DevicePurchasePlan getByIdNew(Long id);
    boolean updateByIdNew(DevicePurchasePlan devicePurchasePlan);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DevicePurchasePlanServiceImpl.java
New file
@@ -0,0 +1,91 @@
package com.by4cloud.platformx.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.common.security.util.SecurityUtils;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
import com.by4cloud.platformx.device.dto.DevicePurchasePlanQueryDTO;
import com.by4cloud.platformx.device.entity.DevicePurchasePlan;
import com.by4cloud.platformx.device.entity.DevicePurchasePlanItem;
import com.by4cloud.platformx.device.mapper.DevicePurchasePlanItemMapper;
import com.by4cloud.platformx.device.mapper.DevicePurchasePlanMapper;
import com.by4cloud.platformx.device.service.DevicePurchasePlanService;
import com.by4cloud.platformx.device.service.JcMaxSizeService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
 * 设备采购计划
 *
 * @author syt
 * @date 2025-04-21 14:43:13
 */
@Service
@AllArgsConstructor
public class DevicePurchasePlanServiceImpl extends ServiceImpl<DevicePurchasePlanMapper, DevicePurchasePlan> implements DevicePurchasePlanService {
    private final JcMaxSizeService maxSizeService;
    private final DevicePurchasePlanItemMapper itemMapper;
    @Override
    public boolean saveNew(DevicePurchasePlan devicePurchasePlan) {
        devicePurchasePlan.setPlanCode(maxSizeService.nextNo(MaxSizeContant.DEVICE_PURCHASE_CODE));
        devicePurchasePlan.setReleaseCompId(SecurityUtils.getUser().getCompId());
        devicePurchasePlan.setReleaseId(SecurityUtils.getUser().getId());
        devicePurchasePlan.setReleaseTime(new Date());
        devicePurchasePlan.setStatus(0);
        baseMapper.insert(devicePurchasePlan);
        if (devicePurchasePlan.getPlanItemList() != null&&devicePurchasePlan.getPlanItemList().size()>0) {
            devicePurchasePlan.getPlanItemList().forEach(item->{
                item.setPlanId(devicePurchasePlan.getId());
                itemMapper.insert(item);
            });
        }
        return true;
    }
    @Override
    public IPage pageNew(Page page, DevicePurchasePlanQueryDTO queryDTO) {
        return baseMapper.page(page,queryDTO);
    }
    @Override
    public boolean approved(Long id) {
        DevicePurchasePlan plan = baseMapper.selectById(id);
        plan.setStatus(1);
        baseMapper.updateById(plan);
        return true;
    }
    @Override
    public DevicePurchasePlan getByIdNew(Long id) {
        DevicePurchasePlan plan = baseMapper.selectById(id);
        QueryWrapper<DevicePurchasePlanItem> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("plan_id",id);
        List<DevicePurchasePlanItem> planItemList = itemMapper.selectList(queryWrapper);
        plan.setPlanItemList(planItemList);
        return plan;
    }
    @Override
    public boolean updateByIdNew(DevicePurchasePlan devicePurchasePlan) {
        baseMapper.updateById(devicePurchasePlan);
        if (devicePurchasePlan.getPlanItemList() != null&&devicePurchasePlan.getPlanItemList().size()>0) {
            devicePurchasePlan.getPlanItemList().forEach(item->{
                item.setPlanId(devicePurchasePlan.getId());
                if (item.getId()==null) {
                    itemMapper.insert(item);
                }else {
                    itemMapper.updateById(item);
                }
            });
        }
        return true;
    }
}
platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanItemMapper.xml
New file
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.by4cloud.platformx.device.mapper.DevicePurchasePlanItemMapper">
  <resultMap id="devicePurchasePlanItemMap" type="com.by4cloud.platformx.device.entity.DevicePurchasePlanItem">
        <id property="id" column="id"/>
        <result property="compId" column="comp_id"/>
        <result property="deviceCode" column="device_code"/>
        <result property="deviceId" column="device_id"/>
        <result property="deviceModels" column="device_models"/>
        <result property="deviceName" column="device_name"/>
        <result property="keyParameter" column="key_parameter"/>
        <result property="meteringUnit" column="metering_unit"/>
        <result property="num" column="num"/>
        <result property="planId" column="plan_id"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
  </resultMap>
</mapper>
platformx-device-biz/src/main/resources/mapper/DevicePurchasePlanMapper.xml
New file
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.by4cloud.platformx.device.mapper.DevicePurchasePlanMapper">
  <resultMap id="devicePurchasePlanMap" type="com.by4cloud.platformx.device.entity.DevicePurchasePlan">
        <id property="id" column="id"/>
        <result property="compId" column="comp_id"/>
        <result property="planCode" column="plan_code"/>
        <result property="planName" column="plan_name"/>
        <result property="releaseCompId" column="release_comp_id"/>
        <result property="releaseId" column="release_id"/>
        <result property="status" column="status"/>
        <result property="releaseTime" column="release_time"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
  </resultMap>
    <select id="page" resultType="com.by4cloud.platformx.device.entity.vo.DevicePurchasePlanPageVo">
        select
            dpp.id,
            dpp.plan_code,
            dpp.plan_name,
            dpp.release_comp_id,
            dpp.release_id,
            dpp.status,
            dpp.release_time,
            su.name userName,
            sd.name deptName
        from
            platformxx_device.device_purchase_plan dpp
        join platformxx_boot.sys_user su on
        su.user_id = dpp.release_id
        join platformxx_boot.sys_dept sd on
        sd.dept_id = dpp.release_comp_id
        where
            dpp.del_flag = '0'
        <if test="queryDTO.planName != null and queryDTO.planName!=''">
            and dpp.plan_name like CONCAT('%', #{queryDTO.planName}, '%')
        </if>
        <if test="queryDTO.planCode != null and queryDTO.planCode!=''">
            and dpp.plan_code like CONCAT('%', #{queryDTO.planCode}, '%')
        </if>
        order by dpp.create_time desc
    </select>
</mapper>
platformx-device-biz/src/main/resources/mapper/deviceInventoryMapper.xml
@@ -24,7 +24,8 @@
            sd.name rentName,
            di.device_number,
            di.serial_no,
            dll.delivery_date
            dll.delivery_date,
            di.file_path
        from
            device_inventory di
                join device_leasing_ledger_item dlli on