设备关键件明细的保存更新删除

main
liutao 3 weeks ago
parent cae6e64c65
commit 6c47b7a529

@ -41,12 +41,12 @@ public interface ErrorCodeConstants {
ErrorCode DEVICE_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_001, "采集设备模型不存在");
ErrorCode DEVICE_MODEL_CODE_EXISTS = new ErrorCode(1_003_000_002, "采集设备模型编码已存在");
ErrorCode DEVICE_CODE_ALREADY_EXISTS = new ErrorCode(1_003_000_002, "采集设备编码已存在");
ErrorCode DEVICE_CODE_CHECK_EXISTS = new ErrorCode(1_003_001_004, "采集设备编码只能包含字母、数字、下划线");
ErrorCode DEVICE_ID_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_003, "该设备模型ID不能为空");
ErrorCode POINT_ID_MODEL_NOT_EXISTS = new ErrorCode(1_003_000_004, "该点位参数ID不能为空");
ErrorCode DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS = new ErrorCode(1_003_000_005, "采集设备模型点位不存在");
ErrorCode DEVICE_MODEL_POINT_CODE_EXISTS = new ErrorCode(1_003_000_005, "采集设备采集点位编码已存在");
ErrorCode DEVICE_MODEL_ATTRIBUTE_POTIN_CODE_EXISTS = new ErrorCode(1_003_000_005, "采集设备模型点位编码已存在");
ErrorCode DEVICE_ATTRIBUTE_NOT_EXISTS = new ErrorCode(1_003_000_006, "设备属性不存在");

@ -1293,7 +1293,7 @@ public class TDengineService {
// 3. 只能包含字母、数字、下划线
if (!tableName.matches("^[a-zA-Z][a-zA-Z0-9_]*$")) {
throw exception(DEVICE_MODEL_POINT_CODE_EXISTS,
throw exception(DEVICE_CODE_CHECK_EXISTS,
"表名只能包含字母、数字和下划线: " + tableName);
}

@ -213,4 +213,5 @@ public interface ErrorCodeConstants {
ErrorCode DEVICE_LINE_EXITS_CHILDREN = new ErrorCode(100_501_0005, "存在子设备产线,无法删除");
ErrorCode DEVICE_LINE_CODE_EXISTS = new ErrorCode(100_501_0006, "设备产线编码已存在,请重新提交");
ErrorCode DEVICE_LINE_CODE_NOT_EXISTS = new ErrorCode(100_501_0007, "设备产线编码不能为空");
ErrorCode DEVICE_CRITICAL_COMPONENT_NOT_EXISTS = new ErrorCode(100_501_0008, "设备关键件明细不存在");
}

@ -0,0 +1,103 @@
package cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicecriticalcomponent.DeviceCriticalComponentDO;
import cn.iocoder.yudao.module.mes.service.devicecriticalcomponent.DeviceCriticalComponentService;
@Tag(name = "管理后台 - 设备关键件明细")
@RestController
@RequestMapping("/mes/device-critical-component")
@Validated
public class DeviceCriticalComponentController {
@Resource
private DeviceCriticalComponentService deviceCriticalComponentService;
@PostMapping("/create")
@Operation(summary = "创建设备关键件明细")
@PreAuthorize("@ss.hasPermission('mes:device-critical-component:create')")
public CommonResult<Long> createDeviceCriticalComponent(@Valid @RequestBody DeviceCriticalComponentSaveReqVO createReqVO) {
return success(deviceCriticalComponentService.createDeviceCriticalComponent(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新设备关键件明细")
@PreAuthorize("@ss.hasPermission('mes:device-critical-component:update')")
public CommonResult<Boolean> updateDeviceCriticalComponent(@Valid @RequestBody DeviceCriticalComponentSaveReqVO updateReqVO) {
deviceCriticalComponentService.updateDeviceCriticalComponent(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除设备关键件明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:device-critical-component:delete')")
public CommonResult<Boolean> deleteDeviceCriticalComponent(@RequestParam("id") Long id) {
deviceCriticalComponentService.deleteDeviceCriticalComponent(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得设备关键件明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:device-critical-component:query')")
public CommonResult<DeviceCriticalComponentRespVO> getDeviceCriticalComponent(@RequestParam("id") Long id) {
DeviceCriticalComponentDO deviceCriticalComponent = deviceCriticalComponentService.getDeviceCriticalComponent(id);
return success(BeanUtils.toBean(deviceCriticalComponent, DeviceCriticalComponentRespVO.class));
}
@GetMapping("/getDetails")
@Operation(summary = "获得设备关键件明细")
@Parameter(name = "id", description = "设备id", required = true, example = "1024")
public CommonResult<List<DeviceCriticalComponentDO>> getDetails(@RequestParam("deviceId") Long deviceId) {
List<DeviceCriticalComponentDO> details=deviceCriticalComponentService.getDetails(deviceId);
return success(details);
}
@GetMapping("/page")
@Operation(summary = "获得设备关键件明细分页")
@PreAuthorize("@ss.hasPermission('mes:device-critical-component:query')")
public CommonResult<PageResult<DeviceCriticalComponentRespVO>> getDeviceCriticalComponentPage(@Valid DeviceCriticalComponentPageReqVO pageReqVO) {
PageResult<DeviceCriticalComponentDO> pageResult = deviceCriticalComponentService.getDeviceCriticalComponentPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DeviceCriticalComponentRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出设备关键件明细 Excel")
@PreAuthorize("@ss.hasPermission('mes:device-critical-component:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportDeviceCriticalComponentExcel(@Valid DeviceCriticalComponentPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<DeviceCriticalComponentDO> list = deviceCriticalComponentService.getDeviceCriticalComponentPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "设备关键件明细.xls", "数据", DeviceCriticalComponentRespVO.class,
BeanUtils.toBean(list, DeviceCriticalComponentRespVO.class));
}
}

@ -0,0 +1,46 @@
package cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 设备关键件明细分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class DeviceCriticalComponentPageReqVO extends PageParam {
@Schema(description = "编码(唯一标识)")
private String code;
@Schema(description = "名称", example = "王五")
private String name;
@Schema(description = "描述", example = "你猜")
private String description;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "数量", example = "32204")
private Integer count;
@Schema(description = "设备id", example = "27281")
private Long deviceId;
@Schema(description = "规格型号")
private String deviceSpec;
@Schema(description = "图片")
private String images;
}

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 设备关键件明细 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DeviceCriticalComponentRespVO {
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8330")
@ExcelProperty("主键ID")
private Long id;
@Schema(description = "编码(唯一标识)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("编码(唯一标识)")
private String code;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@ExcelProperty("名称")
private String name;
@Schema(description = "描述", example = "你猜")
@ExcelProperty("描述")
private String description;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "数量", example = "32204")
@ExcelProperty("数量")
private Integer count;
@Schema(description = "设备id", example = "27281")
@ExcelProperty("设备id")
private Long deviceId;
@Schema(description = "规格型号")
@ExcelProperty("规格型号")
private String deviceSpec;
@Schema(description = "图片")
@ExcelProperty("图片")
private String images;
}

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 设备关键件明细新增/修改 Request VO")
@Data
public class DeviceCriticalComponentSaveReqVO {
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8330")
private Long id;
@Schema(description = "编码(唯一标识)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "编码(唯一标识)不能为空")
private String code;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotEmpty(message = "名称不能为空")
private String name;
@Schema(description = "描述", example = "你猜")
private String description;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "数量", example = "32204")
private Integer count;
@Schema(description = "设备id", example = "27281")
private Long deviceId;
@Schema(description = "规格型号")
private String deviceSpec;
@Schema(description = "图片")
private String images;
}

@ -1,10 +1,14 @@
package cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo;
import cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo.DeviceCriticalComponentRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicecriticalcomponent.DeviceCriticalComponentDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 设备类型新增/修改 Request VO")
@Data
@ -96,4 +100,7 @@ public class DeviceLedgerSaveReqVO {
@Schema(description = "数据采集产能")
private Integer dataCollectionCapacity;
@Schema(description = "设备关键件")
private List<DeviceCriticalComponentRespVO> componentList;
}

@ -0,0 +1,63 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.devicecriticalcomponent;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_device_critical_component")
@KeySequence("mes_device_critical_component_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DeviceCriticalComponentDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
*
*/
private String name;
/**
*
*/
private String description;
/**
*
*/
private String remark;
/**
*
*/
private Integer count;
/**
* id
*/
private Long deviceId;
/**
*
*/
private String deviceSpec;
/**
*
*/
private String images;
}

@ -4,6 +4,7 @@ import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicecriticalcomponent.DeviceCriticalComponentDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import lombok.*;
@ -155,7 +156,7 @@ public class DeviceLedgerDO extends BaseDO {
*
*/
@TableField(exist = false)
private List<CriticalComponentDO> componentList;
private List<DeviceCriticalComponentDO> componentList;
/**
* id

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.mes.dal.mysql.devicecriticalcomponent;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicecriticalcomponent.DeviceCriticalComponentDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface DeviceCriticalComponentMapper extends BaseMapperX<DeviceCriticalComponentDO> {
default PageResult<DeviceCriticalComponentDO> selectPage(DeviceCriticalComponentPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DeviceCriticalComponentDO>()
.eqIfPresent(DeviceCriticalComponentDO::getCode, reqVO.getCode())
.likeIfPresent(DeviceCriticalComponentDO::getName, reqVO.getName())
.eqIfPresent(DeviceCriticalComponentDO::getDescription, reqVO.getDescription())
.eqIfPresent(DeviceCriticalComponentDO::getRemark, reqVO.getRemark())
.betweenIfPresent(DeviceCriticalComponentDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(DeviceCriticalComponentDO::getCount, reqVO.getCount())
.eqIfPresent(DeviceCriticalComponentDO::getDeviceId, reqVO.getDeviceId())
.eqIfPresent(DeviceCriticalComponentDO::getDeviceSpec, reqVO.getDeviceSpec())
.eqIfPresent(DeviceCriticalComponentDO::getImages, reqVO.getImages())
.orderByDesc(DeviceCriticalComponentDO::getId));
}
}

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.mes.service.devicecriticalcomponent;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicecriticalcomponent.DeviceCriticalComponentDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface DeviceCriticalComponentService {
/**
*
*
* @param createReqVO
* @return
*/
Long createDeviceCriticalComponent(@Valid DeviceCriticalComponentSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateDeviceCriticalComponent(@Valid DeviceCriticalComponentSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteDeviceCriticalComponent(Long id);
/**
*
*
* @param id
* @return
*/
DeviceCriticalComponentDO getDeviceCriticalComponent(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<DeviceCriticalComponentDO> getDeviceCriticalComponentPage(DeviceCriticalComponentPageReqVO pageReqVO);
List<DeviceCriticalComponentDO> getDetails(Long deviceId);
}

@ -0,0 +1,80 @@
package cn.iocoder.yudao.module.mes.service.devicecriticalcomponent;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicecriticalcomponent.DeviceCriticalComponentDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.devicecriticalcomponent.DeviceCriticalComponentMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class DeviceCriticalComponentServiceImpl implements DeviceCriticalComponentService {
@Resource
private DeviceCriticalComponentMapper deviceCriticalComponentMapper;
@Override
public Long createDeviceCriticalComponent(DeviceCriticalComponentSaveReqVO createReqVO) {
// 插入
DeviceCriticalComponentDO deviceCriticalComponent = BeanUtils.toBean(createReqVO, DeviceCriticalComponentDO.class);
deviceCriticalComponentMapper.insert(deviceCriticalComponent);
// 返回
return deviceCriticalComponent.getId();
}
@Override
public void updateDeviceCriticalComponent(DeviceCriticalComponentSaveReqVO updateReqVO) {
// 校验存在
validateDeviceCriticalComponentExists(updateReqVO.getId());
// 更新
DeviceCriticalComponentDO updateObj = BeanUtils.toBean(updateReqVO, DeviceCriticalComponentDO.class);
deviceCriticalComponentMapper.updateById(updateObj);
}
@Override
public void deleteDeviceCriticalComponent(Long id) {
// 校验存在
validateDeviceCriticalComponentExists(id);
// 删除
deviceCriticalComponentMapper.deleteById(id);
}
private void validateDeviceCriticalComponentExists(Long id) {
if (deviceCriticalComponentMapper.selectById(id) == null) {
throw exception(DEVICE_CRITICAL_COMPONENT_NOT_EXISTS);
}
}
@Override
public DeviceCriticalComponentDO getDeviceCriticalComponent(Long id) {
return deviceCriticalComponentMapper.selectById(id);
}
@Override
public PageResult<DeviceCriticalComponentDO> getDeviceCriticalComponentPage(DeviceCriticalComponentPageReqVO pageReqVO) {
return deviceCriticalComponentMapper.selectPage(pageReqVO);
}
@Override
public List<DeviceCriticalComponentDO> getDetails(Long deviceId) {
return deviceCriticalComponentMapper.selectList(new LambdaQueryWrapper<DeviceCriticalComponentDO>().eq(DeviceCriticalComponentDO::getDeviceId, deviceId));
}
}

@ -14,12 +14,15 @@ import cn.iocoder.yudao.module.erp.dal.mysql.productdevicerel.ProductDeviceRelMa
import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.iot.service.device.DeviceService;
import cn.iocoder.yudao.module.iot.service.device.TDengineService;
import cn.iocoder.yudao.module.mes.controller.admin.devicecriticalcomponent.vo.DeviceCriticalComponentRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicecriticalcomponent.DeviceCriticalComponentDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicetype.DeviceTypeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceline.DeviceLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.mes.dal.mysql.devicecriticalcomponent.DeviceCriticalComponentMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.devicetype.DeviceTypeMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
@ -35,6 +38,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairLineMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.ticketresults.TicketResultsMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.workreportplan.ReportPlanSummaryMapper;
import cn.iocoder.yudao.module.mes.service.criticalcomponent.CriticalComponentService;
import cn.iocoder.yudao.module.mes.service.organization.OrganizationService;
import cn.iocoder.yudao.module.mes.service.deviceline.DeviceLineService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -153,6 +157,9 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
@Resource
private TDengineService tdengineService;
@Resource
private DeviceCriticalComponentMapper deviceCriticalComponentMapper;
@Override
public Long createDeviceLedger(DeviceLedgerSaveReqVO createReqVO) throws UnsupportedEncodingException {
DeviceLedgerDO deviceLedger = BeanUtils.toBean(createReqVO, DeviceLedgerDO.class);
@ -222,6 +229,8 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
if (count > 0) {
throw exception(DEVICE_LEDGER_EXISTS);
}
//更新设备关键件
if(CollUtil.isNotEmpty(updateReqVO.getComponentList()))addOrUpdateCriticalComponent(updateReqVO.getComponentList(),updateReqVO.getId());
// 更新
DeviceLedgerDO updateObj = BeanUtils.toBean(updateReqVO, DeviceLedgerDO.class);
updateObj.setComponentId(updateObj.getComponentId()==null?"":updateObj.getComponentId());
@ -231,6 +240,25 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
deviceLedgerSpareRelService.replaceByDeviceLedgerId(updateObj.getId(), updateReqVO.getBeijianId());
}
private void addOrUpdateCriticalComponent(List<DeviceCriticalComponentRespVO> componentList, Long deviceId) {
componentList.forEach(component -> component.setDeviceId(deviceId));
componentList.forEach(component -> component.setId(null));
Map<Boolean, List<DeviceCriticalComponentRespVO>> result =
componentList.stream()
.collect(Collectors.partitioningBy(c -> c.getId() == null));
List<DeviceCriticalComponentRespVO> insertList = result.get(true); // id == null → 新增
List<DeviceCriticalComponentRespVO> updateList = result.get(false);
List<DeviceCriticalComponentDO> deviceCriticalComponentDOS = new ArrayList<>();
componentList.forEach(component -> {
DeviceCriticalComponentDO deviceLedger = BeanUtils.toBean(component, DeviceCriticalComponentDO.class);
deviceCriticalComponentDOS.add(deviceLedger);
});
deviceCriticalComponentMapper.delete(new LambdaQueryWrapper<DeviceCriticalComponentDO>().eq(DeviceCriticalComponentDO::getDeviceId,deviceId));
if(CollUtil.isNotEmpty(componentList))deviceCriticalComponentMapper.insertBatch(deviceCriticalComponentDOS);
//if(CollUtil.isNotEmpty(updateList))deviceCriticalComponentMapper.updateBatch(updateList);
// criticalComponentService.saveOrUpdateBatch(componentList);
}
@Override
public void deleteDeviceLedger(List<Long> idList ) {
@ -292,7 +320,7 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
// }
List<CriticalComponentDO> componentList = new ArrayList<>();
//List<CriticalComponentDO> componentList = new ArrayList<>();
List<DeviceLedgerComponentRelDO> componentRelList = deviceLedgerComponentRelService.getListByDeviceLedgerId(id);
if (CollUtil.isNotEmpty(componentRelList)) {
Set<Long> componentIds = componentRelList.stream().map(DeviceLedgerComponentRelDO::getComponentId)
@ -303,15 +331,16 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
for (DeviceLedgerComponentRelDO relDO : componentRelList) {
CriticalComponentDO criticalComponentDO = componentMap.get(relDO.getComponentId());
if (criticalComponentDO != null) {
componentList.add(criticalComponentDO);
//componentList.add(criticalComponentDO);
continue;
}
CriticalComponentDO deletedComponent = new CriticalComponentDO();
deletedComponent.setId(relDO.getComponentId());
deletedComponent.setName(buildDeletedName(relDO.getComponentNameSnapshot()));
componentList.add(deletedComponent);
// componentList.add(deletedComponent);
}
deviceLedgerDO.setComponentList(componentList);
List<DeviceCriticalComponentDO> deviceCriticalComponentDOS = deviceCriticalComponentMapper.selectList(new LambdaQueryWrapper<DeviceCriticalComponentDO>().eq(DeviceCriticalComponentDO::getDeviceId, id));
deviceLedgerDO.setComponentList(deviceCriticalComponentDOS);
deviceLedgerDO.setComponentId(componentRelList.stream()
.map(DeviceLedgerComponentRelDO::getComponentId)
.filter(Objects::nonNull)

Loading…
Cancel
Save