设备线体管理系统:批量导入设备线体数据

实体类:ApsProcessConfig

@Data
@EqualsAndHashCode(callSuper = true)
@TableName('APS_PROCESS_CONFIG')
public class ApsProcessConfig extends BaseEntity {

    private static final long serialVersionUID=1L;

    /**
     *
     */
    @TableId(value = 'id', type=IdType.AUTO)
    private Long id;
    /**
     * 设备编号
     */
    private Long deviceCode;
    /**
     * wiotCode
     */
    private Long wiotCode;
    /**
     * 设备名称
     */
    private String wiotDeviceName;
    /**
     * mes设备编号
     */
    private String mesDeviceNo;
    /**
     * aps系统内设备名称
     */
    private String apsDeviceName;
    /**
     * 工序编号
     */
    private Integer processNo;
    /**
     * 工序名称
     */
    private String processName;
    /**
     * 工作中心
     */
    private String workStation;
    /**
     * 月度产能
     */
    private String monthlyCapacity;
    /**
     * 单位
     */
    private String unit;
    /**
     * 是否删除
     */
    @TableLogic
    private Boolean isDeleted;
    /**
     * 产线分组
     */
    private String processGroup;
    /**
     *  公司编码
     */
    private String companyCode;

}

说明:

  • wiotCode 在系统中是唯一的。
  • 同一个产线分组下,设备名称是唯一的。

数据传输对象:ApsProcessConfigDTO

public class ApsProcessConfigDTO {

    /**
     * 设备编号
     */
    private Long deviceCode;
    /**
     * wiotCode
     */
    private Long wiotCode;
    /**
     * 设备名称
     */
    private String wiotDeviceName;
    /**
     * mes设备编号
     */
    private String mesDeviceNo;
    /**
     * aps系统内设备名称
     */
    private String apsDeviceName;
    /**
     * 工序编号
     */
    private Integer processNo;
    /**
     * 工序名称
     */
    private String processName;
    /**
     * 工作中心
     */
    private String workStation;
    /**
     * 月度产能
     */
    private String monthlyCapacity;
    /**
     * 单位
     */
    private String unit;
    /**
     * 产线分组
     */
    private String processGroup;
    /**
     *  公司编码
     */
    private String companyCode;
}

批量导入设备线体接口

接口参数: List<ApsProcessConfigDTO>

接口返回值: boolean

接口实现逻辑:

  1. 遍历传入的设备线体列表,对于每个设备线体,进行以下判断:
    • 判断 wiotCode 是否为空,如果为空,则返回导入失败。
    • 判断 wiotCode 是否已存在于数据库中,如果存在,则返回导入失败。
    • 判断设备名称是否已存在于同一个产线分组中,如果存在,则返回导入失败。
  2. 验证通过后,将设备线体数据插入数据库中。可以使用 MyBatis-Plus 提供的 saveBatch 方法,可以批量插入设备线体数据,提高插入效率。
  3. 返回导入成功的结果。

示例代码:

public boolean importProcessConfig(List<ApsProcessConfigDTO> processConfigDTOs) {
    // 遍历设备线体列表
    for (ApsProcessConfigDTO processConfigDTO : processConfigDTOs) {
        // 判断wiotCode是否为空
        if (processConfigDTO.getWiotCode() == null) {
            return false;
        }
        // 判断wiotCode是否已存在于数据库中
        if (processConfigDao.existsByWiotCode(processConfigDTO.getWiotCode())) {
            return false;
        }
        // 判断设备名称是否已存在于同一个产线分组中
        if (processConfigDao.existsByWiotDeviceNameAndProcessGroup(
                processConfigDTO.getWiotDeviceName(), processConfigDTO.getProcessGroup())) {
            return false;
        }
    }
    // 验证通过后,将设备线体数据插入数据库中
    List<ApsProcessConfig> processConfigs = processConfigDTOs.stream()
            .map(this::convertDtoToEntity)
            .collect(Collectors.toList());
    processConfigDao.saveBatch(processConfigs);
    return true;
}

private ApsProcessConfig convertDtoToEntity(ApsProcessConfigDTO dto) {
    // 将数据传输对象转换为实体类
    ApsProcessConfig entity = new ApsProcessConfig();
    // ...
    return entity;
}

注意:

  • 以上代码仅供参考,具体的实现逻辑需要根据实际需求进行调整。
  • 在插入数据库时,需要确保数据库表结构与实体类属性一致。
  • 可以根据实际情况添加其他验证逻辑,例如验证设备编号是否为空等。
  • 为了提高导入效率,建议使用异步任务或多线程来处理批量导入操作。

希望以上内容对您有所帮助。如果您还有其他问题,请随时提出。


原文地址: https://www.cveoy.top/t/topic/pIv2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录