diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/controller/TzDeviceController.java b/src/main/java/cn/lihongjie/coal/tzDevice/controller/TzDeviceController.java new file mode 100644 index 00000000..e47d17f7 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/controller/TzDeviceController.java @@ -0,0 +1,66 @@ +package cn.lihongjie.coal.tzDevice.controller; + +import cn.lihongjie.coal.annotation.OrgScope; +import cn.lihongjie.coal.annotation.SysLog; +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.tzDevice.dto.CreateTzDeviceDto; +import cn.lihongjie.coal.tzDevice.dto.TzDeviceDto; +import cn.lihongjie.coal.tzDevice.dto.UpdateTzDeviceDto; +import cn.lihongjie.coal.tzDevice.service.TzDeviceService; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/tzDevice") +@SysLog(module = "特种设备") +@Slf4j +@OrgScope +public class TzDeviceController { + @Autowired private TzDeviceService service; + + @PostMapping("/create") + public TzDeviceDto create(@RequestBody CreateTzDeviceDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public TzDeviceDto update(@RequestBody UpdateTzDeviceDto request) { + return this.service.update(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public TzDeviceDto getById(@RequestBody IdRequest request) { + return this.service.getById(request.getId()); + } + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery request) { + return this.service.list(request); + } + + @PostMapping("/archive") + public Object archive(@RequestBody IdRequest request) { + this.service.archive(request); + return true; + } + + @PostMapping("/unarchive") + public Object unarchive(@RequestBody IdRequest request) { + this.service.unarchive(request); + return true; + } +} diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/dto/CreateTzDeviceDto.java b/src/main/java/cn/lihongjie/coal/tzDevice/dto/CreateTzDeviceDto.java new file mode 100644 index 00000000..50cce8d3 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/dto/CreateTzDeviceDto.java @@ -0,0 +1,104 @@ +package cn.lihongjie.coal.tzDevice.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; +import cn.lihongjie.coal.tzDevice.entity.TzDevicePartVo; + +import jakarta.persistence.CollectionTable; +import jakarta.persistence.ConstraintMode; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.ForeignKey; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class CreateTzDeviceDto extends OrgCommonDto { + + @Comment("设计单位") + private String designUnit; + + @Comment("制造单位") + private String manufacturingUnit; + + @Comment("制造年月") + private LocalDateTime manufacturingDate; + + @Comment("投用日期") + private LocalDateTime commissioningDate; + + @Comment("设备型号") + private String equipmentModel; + + @Comment("主体材质") + private String mainMaterial; + + @Comment("设备原值") + private Double equipmentOriginalValue; + + @Comment("总重量") + private Double totalWeight; + + @Comment("壳体重量") + private Double shellWeight; + + @Comment("内件重量") + private Double internalPartsWeight; + + @Comment("检验周期") + private String inspectionCycle; + + @Comment("容器类别") + private String containerCategory; + + @Comment("压力等级") + private Double pressureLevel; + + @Comment("注册编号") + private String registrationNumber; + + @Comment("使用证编号") + private String certificateNumber; + + @Comment("安全状况等级") + private String safetyConditionLevel; + + @Comment("使用寿命") + private String serviceLife; + + @Comment("报废时间") + private LocalDateTime scrapTime; + + @Comment("容器规格 - 内径长度") + private Double internalDiameterLength; + + @Comment("容器规格 - 厚度") + private Double thickness; + + @Comment("容器规格 - 容积") + private Double volume; + + @Comment("操作条件 - 温度") + private Double operatingTemperature; + + @Comment("操作条件 - 最高工作压力") + private Double maxWorkingPressure; + + @Comment("操作条件 - 介质") + private String medium; + + @Comment("检验日期") + private LocalDateTime inspectionDate; + + @Comment("下次检验日期") + private LocalDateTime nextInspectionDate; + + + @ElementCollection + @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + // 设备配件 + private List devicePart; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/dto/TzDeviceDto.java b/src/main/java/cn/lihongjie/coal/tzDevice/dto/TzDeviceDto.java new file mode 100644 index 00000000..019623ab --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/dto/TzDeviceDto.java @@ -0,0 +1,109 @@ +package cn.lihongjie.coal.tzDevice.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; +import cn.lihongjie.coal.common.DictCode; +import cn.lihongjie.coal.pojoProcessor.DictTranslate; +import cn.lihongjie.coal.tzDevice.entity.TzDevicePartVo; +import cn.lihongjie.coal.tzDeviceSupplier.dto.TzDeviceSupplierDto; + +import jakarta.persistence.*; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class TzDeviceDto extends OrgCommonDto { + private String archiveStatus; + + @DictTranslate(dictKey = DictCode.ARCHIVESTATUS) + private String archiveStatusName; + + + @Comment("设计单位") + private TzDeviceSupplierDto designUnit; + + @Comment("制造单位") + private TzDeviceSupplierDto manufacturingUnit; + + @Comment("制造年月") + private LocalDateTime manufacturingDate; + + @Comment("投用日期") + private LocalDateTime commissioningDate; + + @Comment("设备型号") + private String equipmentModel; + + @Comment("主体材质") + private String mainMaterial; + + @Comment("设备原值") + private Double equipmentOriginalValue; + + @Comment("总重量") + private Double totalWeight; + + @Comment("壳体重量") + private Double shellWeight; + + @Comment("内件重量") + private Double internalPartsWeight; + + @Comment("检验周期") + private String inspectionCycle; + + @Comment("容器类别") + private String containerCategory; + + @Comment("压力等级") + private Double pressureLevel; + + @Comment("注册编号") + private String registrationNumber; + + @Comment("使用证编号") + private String certificateNumber; + + @Comment("安全状况等级") + private String safetyConditionLevel; + + @Comment("使用寿命") + private String serviceLife; + + @Comment("报废时间") + private LocalDateTime scrapTime; + + @Comment("容器规格 - 内径长度") + private Double internalDiameterLength; + + @Comment("容器规格 - 厚度") + private Double thickness; + + @Comment("容器规格 - 容积") + private Double volume; + + @Comment("操作条件 - 温度") + private Double operatingTemperature; + + @Comment("操作条件 - 最高工作压力") + private Double maxWorkingPressure; + + @Comment("操作条件 - 介质") + private String medium; + + @Comment("检验日期") + private LocalDateTime inspectionDate; + + @Comment("下次检验日期") + private LocalDateTime nextInspectionDate; + + + @ElementCollection + @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + // 设备配件 + private List devicePart; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/dto/UpdateTzDeviceDto.java b/src/main/java/cn/lihongjie/coal/tzDevice/dto/UpdateTzDeviceDto.java new file mode 100644 index 00000000..6a7661c9 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/dto/UpdateTzDeviceDto.java @@ -0,0 +1,104 @@ +package cn.lihongjie.coal.tzDevice.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; +import cn.lihongjie.coal.tzDevice.entity.TzDevicePartVo; + +import jakarta.persistence.CollectionTable; +import jakarta.persistence.ConstraintMode; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.ForeignKey; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class UpdateTzDeviceDto extends OrgCommonDto { + + @Comment("设计单位") + private String designUnit; + + @Comment("制造单位") + private String manufacturingUnit; + + @Comment("制造年月") + private LocalDateTime manufacturingDate; + + @Comment("投用日期") + private LocalDateTime commissioningDate; + + @Comment("设备型号") + private String equipmentModel; + + @Comment("主体材质") + private String mainMaterial; + + @Comment("设备原值") + private Double equipmentOriginalValue; + + @Comment("总重量") + private Double totalWeight; + + @Comment("壳体重量") + private Double shellWeight; + + @Comment("内件重量") + private Double internalPartsWeight; + + @Comment("检验周期") + private String inspectionCycle; + + @Comment("容器类别") + private String containerCategory; + + @Comment("压力等级") + private Double pressureLevel; + + @Comment("注册编号") + private String registrationNumber; + + @Comment("使用证编号") + private String certificateNumber; + + @Comment("安全状况等级") + private String safetyConditionLevel; + + @Comment("使用寿命") + private String serviceLife; + + @Comment("报废时间") + private LocalDateTime scrapTime; + + @Comment("容器规格 - 内径长度") + private Double internalDiameterLength; + + @Comment("容器规格 - 厚度") + private Double thickness; + + @Comment("容器规格 - 容积") + private Double volume; + + @Comment("操作条件 - 温度") + private Double operatingTemperature; + + @Comment("操作条件 - 最高工作压力") + private Double maxWorkingPressure; + + @Comment("操作条件 - 介质") + private String medium; + + @Comment("检验日期") + private LocalDateTime inspectionDate; + + @Comment("下次检验日期") + private LocalDateTime nextInspectionDate; + + + @ElementCollection + @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + // 设备配件 + private List devicePart; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/entity/TzDeviceEntity.java b/src/main/java/cn/lihongjie/coal/tzDevice/entity/TzDeviceEntity.java new file mode 100644 index 00000000..55225bd5 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/entity/TzDeviceEntity.java @@ -0,0 +1,119 @@ +package cn.lihongjie.coal.tzDevice.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; +import cn.lihongjie.coal.tzDeviceSupplier.entity.TzDeviceSupplierEntity; + +import jakarta.persistence.*; + +import lombok.Data; + +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@Entity +@Table( + indexes = + @jakarta.persistence.Index( + name = "idx_tzDevice_org_id", + columnList = "organization_id")) +public class TzDeviceEntity extends OrgCommonEntity { + @Comment("归档状态") + @ColumnDefault("'0'") + private String archiveStatus = "0"; + +// @Comment("设备名称") +// private String equipmentName; +// +// @Comment("设备编号") +// private String equipmentNumber; + + @Comment("设计单位") + @ManyToOne + private TzDeviceSupplierEntity designUnit; + + @Comment("制造单位") + @ManyToOne + private TzDeviceSupplierEntity manufacturingUnit; + + @Comment("制造年月") + private LocalDateTime manufacturingDate; + + @Comment("投用日期") + private LocalDateTime commissioningDate; + + @Comment("设备型号") + private String equipmentModel; + + @Comment("主体材质") + private String mainMaterial; + + @Comment("设备原值") + private Double equipmentOriginalValue; + + @Comment("总重量") + private Double totalWeight; + + @Comment("壳体重量") + private Double shellWeight; + + @Comment("内件重量") + private Double internalPartsWeight; + + @Comment("检验周期") + private String inspectionCycle; + + @Comment("容器类别") + private String containerCategory; + + @Comment("压力等级") + private Double pressureLevel; + + @Comment("注册编号") + private String registrationNumber; + + @Comment("使用证编号") + private String certificateNumber; + + @Comment("安全状况等级") + private String safetyConditionLevel; + + @Comment("使用寿命") + private String serviceLife; + + @Comment("报废时间") + private LocalDateTime scrapTime; + + @Comment("容器规格 - 内径长度") + private Double internalDiameterLength; + + @Comment("容器规格 - 厚度") + private Double thickness; + + @Comment("容器规格 - 容积") + private Double volume; + + @Comment("操作条件 - 温度") + private Double operatingTemperature; + + @Comment("操作条件 - 最高工作压力") + private Double maxWorkingPressure; + + @Comment("操作条件 - 介质") + private String medium; + + @Comment("检验日期") + private LocalDateTime inspectionDate; + + @Comment("下次检验日期") + private LocalDateTime nextInspectionDate; + + + @ElementCollection + @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + // 设备配件 + private List devicePart; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/entity/TzDevicePartVo.java b/src/main/java/cn/lihongjie/coal/tzDevice/entity/TzDevicePartVo.java new file mode 100644 index 00000000..80e35bfe --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/entity/TzDevicePartVo.java @@ -0,0 +1,48 @@ +package cn.lihongjie.coal.tzDevice.entity; + +import jakarta.persistence.Embeddable; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; +import java.util.*; + +@Data +@Embeddable +public class TzDevicePartVo { + + @Comment("配套附件型号") + private String partModel; + + @Comment("配套附件工作介质") + private String partMedium; + + @Comment("配套附件要求整定压力") + private Double partSetPressure; + + @Comment("配套附件安装部位") + private String partInstallationPart; + + @Comment("配套附件出厂编号") + private String partSerialNumber; + + @Comment("配套附件公称压力") + private Double partNominalPressure; + + @Comment("配套附件厂内编号") + private String partFactoryNumber; + + @Comment("配套附件检验日期") + private LocalDateTime partInspectionDate; + + @Comment("配套附件下次检验日期") + private LocalDateTime partNextInspectionDate; + + @Comment("配套附件使用时间") + private String partUsageTime; + + @Comment("使用单位") + private String usingUnit; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/mapper/TzDeviceMapper.java b/src/main/java/cn/lihongjie/coal/tzDevice/mapper/TzDeviceMapper.java new file mode 100644 index 00000000..680992fb --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/mapper/TzDeviceMapper.java @@ -0,0 +1,19 @@ +package cn.lihongjie.coal.tzDevice.mapper; + +import cn.lihongjie.coal.base.mapper.BaseMapper; +import cn.lihongjie.coal.base.mapper.CommonEntityMapper; +import cn.lihongjie.coal.base.mapper.CommonMapper; +import cn.lihongjie.coal.tzDevice.dto.CreateTzDeviceDto; +import cn.lihongjie.coal.tzDevice.dto.TzDeviceDto; +import cn.lihongjie.coal.tzDevice.dto.UpdateTzDeviceDto; +import cn.lihongjie.coal.tzDevice.entity.TzDeviceEntity; + +import org.mapstruct.Mapper; +import org.mapstruct.control.DeepClone; + +@Mapper( + componentModel = org.mapstruct.MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class, CommonEntityMapper.class}, + mappingControl = DeepClone.class) +public interface TzDeviceMapper + extends BaseMapper {} diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/repository/TzDeviceRepository.java b/src/main/java/cn/lihongjie/coal/tzDevice/repository/TzDeviceRepository.java new file mode 100644 index 00000000..13d520bd --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/repository/TzDeviceRepository.java @@ -0,0 +1,15 @@ +package cn.lihongjie.coal.tzDevice.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.tzDevice.entity.TzDeviceEntity; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface TzDeviceRepository extends BaseRepository { + @Query("select false") + boolean isLinked(List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/tzDevice/service/TzDeviceService.java b/src/main/java/cn/lihongjie/coal/tzDevice/service/TzDeviceService.java new file mode 100644 index 00000000..b607acaf --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDevice/service/TzDeviceService.java @@ -0,0 +1,93 @@ +package cn.lihongjie.coal.tzDevice.service; + +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.base.service.BaseService; +import cn.lihongjie.coal.dbFunctions.DbFunctionService; +import cn.lihongjie.coal.exception.BizException; +import cn.lihongjie.coal.tzDevice.dto.CreateTzDeviceDto; +import cn.lihongjie.coal.tzDevice.dto.TzDeviceDto; +import cn.lihongjie.coal.tzDevice.dto.UpdateTzDeviceDto; +import cn.lihongjie.coal.tzDevice.entity.TzDeviceEntity; +import cn.lihongjie.coal.tzDevice.mapper.TzDeviceMapper; +import cn.lihongjie.coal.tzDevice.repository.TzDeviceRepository; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional +public class TzDeviceService extends BaseService { + @Autowired private TzDeviceRepository repository; + + @Autowired private TzDeviceMapper mapper; + + @Autowired private ConversionService conversionService; + + @Autowired private DbFunctionService dbFunctionService; + + public TzDeviceDto create(CreateTzDeviceDto request) { + TzDeviceEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public TzDeviceDto update(UpdateTzDeviceDto request) { + TzDeviceEntity entity = this.repository.get(request.getId()); + if (this.repository.containArchived(request.getId())) { + throw new BizException("部分数据已归档,无法编辑或删除"); + } + this.mapper.updateEntity(entity, request); + + this.repository.save(entity); + + return getById(entity.getId()); + } + + public void delete(IdRequest request) { + if (this.repository.containArchived(request)) { + throw new BizException("部分数据已归档,无法编辑或删除"); + } + boolean linked = this.repository.isLinked(request.getIds()); + + if (linked) { + throw new BizException("数据已被关联,无法删除"); + } + this.repository.deleteAllById(request.getIds()); + } + + public TzDeviceDto getById(String id) { + TzDeviceEntity entity = repository.get(id); + + return mapper.toDto(entity); + } + + public Page list(CommonQuery query) { + Page page = + repository.findAll( + query.specification(conversionService), + PageRequest.of( + query.getPageNo(), + query.getPageSize(), + Sort.by(query.getOrders()))); + + return page.map(this.mapper::toDto); + } + + public void archive(IdRequest dto) { + this.repository.archive(dto); + } + + public void unarchive(IdRequest dto) { + this.repository.unArchive(dto); + } +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/controller/TzDeviceCategoryController.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/controller/TzDeviceCategoryController.java new file mode 100644 index 00000000..e429aea8 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/controller/TzDeviceCategoryController.java @@ -0,0 +1,67 @@ +package cn.lihongjie.coal.tzDeviceCategory.controller; + +import cn.lihongjie.coal.annotation.OrgScope; +import cn.lihongjie.coal.annotation.SysLog; +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.tzDeviceCategory.dto.CreateTzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.TzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.TzDeviceCategoryTreeDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.UpdateTzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.service.TzDeviceCategoryService; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/tzDeviceCategory") +@SysLog(module = "特种设备分类") +@Slf4j +@OrgScope +public class TzDeviceCategoryController { + @Autowired private TzDeviceCategoryService service; + + @PostMapping("/create") + public TzDeviceCategoryDto create(@RequestBody CreateTzDeviceCategoryDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public TzDeviceCategoryDto update(@RequestBody UpdateTzDeviceCategoryDto request) { + return this.service.update(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public TzDeviceCategoryDto getById(@RequestBody IdRequest request) { + return this.service.getById(request.getId()); + } + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery request) { + return this.service.list(request); + } + + @PostMapping("/roots") + public List roots(@RequestBody CommonQuery request) { + return this.service.getRoots(request); + } + + @PostMapping("/treeByIds") + public List treeByIds(@RequestBody IdRequest request) { + return this.service.getTreeByIds(request); + } +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/CreateTzDeviceCategoryDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/CreateTzDeviceCategoryDto.java new file mode 100644 index 00000000..9cc86265 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/CreateTzDeviceCategoryDto.java @@ -0,0 +1,10 @@ +package cn.lihongjie.coal.tzDeviceCategory.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class CreateTzDeviceCategoryDto extends OrgCommonDto { + private String parent; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/TzDeviceCategoryDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/TzDeviceCategoryDto.java new file mode 100644 index 00000000..79c6815c --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/TzDeviceCategoryDto.java @@ -0,0 +1,10 @@ +package cn.lihongjie.coal.tzDeviceCategory.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class TzDeviceCategoryDto extends OrgCommonDto { + private String parent; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/TzDeviceCategoryTreeDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/TzDeviceCategoryTreeDto.java new file mode 100644 index 00000000..459388d0 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/TzDeviceCategoryTreeDto.java @@ -0,0 +1,14 @@ +package cn.lihongjie.coal.tzDeviceCategory.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +import java.util.List; + +@Data +public class TzDeviceCategoryTreeDto extends OrgCommonDto { + private List children; + + private String parent; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/UpdateTzDeviceCategoryDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/UpdateTzDeviceCategoryDto.java new file mode 100644 index 00000000..70b16151 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/dto/UpdateTzDeviceCategoryDto.java @@ -0,0 +1,10 @@ +package cn.lihongjie.coal.tzDeviceCategory.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class UpdateTzDeviceCategoryDto extends OrgCommonDto { + private String parent; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/entity/TzDeviceCategoryEntity.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/entity/TzDeviceCategoryEntity.java new file mode 100644 index 00000000..1cf514e9 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/entity/TzDeviceCategoryEntity.java @@ -0,0 +1,27 @@ +package cn.lihongjie.coal.tzDeviceCategory.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; + +import lombok.Data; + +import java.util.List; + +@Data +@Entity +@Table( + indexes = + @jakarta.persistence.Index( + name = "idx_tzDeviceCategory_org_id", + columnList = "organization_id")) +public class TzDeviceCategoryEntity extends OrgCommonEntity { + @ManyToOne private TzDeviceCategoryEntity parent; + + @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) + private List children; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/mapper/TzDeviceCategoryMapper.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/mapper/TzDeviceCategoryMapper.java new file mode 100644 index 00000000..31308406 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/mapper/TzDeviceCategoryMapper.java @@ -0,0 +1,34 @@ +package cn.lihongjie.coal.tzDeviceCategory.mapper; + +import cn.lihongjie.coal.base.mapper.BaseMapper; +import cn.lihongjie.coal.base.mapper.CommonEntityMapper; +import cn.lihongjie.coal.base.mapper.CommonMapper; +import cn.lihongjie.coal.tzDeviceCategory.dto.CreateTzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.TzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.TzDeviceCategoryTreeDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.UpdateTzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.entity.TzDeviceCategoryEntity; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.Named; +import org.mapstruct.control.DeepClone; + +@Mapper( + componentModel = org.mapstruct.MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class, CommonEntityMapper.class}, + mappingControl = DeepClone.class) +public interface TzDeviceCategoryMapper + extends BaseMapper< + TzDeviceCategoryEntity, + TzDeviceCategoryDto, + CreateTzDeviceCategoryDto, + UpdateTzDeviceCategoryDto> { + @Mappings({@Mapping(target = "children", qualifiedByName = "toTreeDto")}) + @Named("toTreeDto") + TzDeviceCategoryTreeDto toTreeDto(TzDeviceCategoryEntity entity); + + @Mappings({@Mapping(target = "children", ignore = true)}) + TzDeviceCategoryTreeDto toTreeDtoExcludeChildren(TzDeviceCategoryEntity entity); +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/repository/TzDeviceCategoryRepository.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/repository/TzDeviceCategoryRepository.java new file mode 100644 index 00000000..e880fb1d --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/repository/TzDeviceCategoryRepository.java @@ -0,0 +1,15 @@ +package cn.lihongjie.coal.tzDeviceCategory.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.tzDeviceCategory.entity.TzDeviceCategoryEntity; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface TzDeviceCategoryRepository extends BaseRepository { + @Query("select false") + boolean isLinked(List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceCategory/service/TzDeviceCategoryService.java b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/service/TzDeviceCategoryService.java new file mode 100644 index 00000000..3160fad4 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceCategory/service/TzDeviceCategoryService.java @@ -0,0 +1,145 @@ +package cn.lihongjie.coal.tzDeviceCategory.service; + +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.base.service.BaseService; +import cn.lihongjie.coal.common.TreeUtils; +import cn.lihongjie.coal.dbFunctions.DbFunctionService; +import cn.lihongjie.coal.exception.BizException; +import cn.lihongjie.coal.tzDeviceCategory.dto.CreateTzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.TzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.TzDeviceCategoryTreeDto; +import cn.lihongjie.coal.tzDeviceCategory.dto.UpdateTzDeviceCategoryDto; +import cn.lihongjie.coal.tzDeviceCategory.entity.TzDeviceCategoryEntity; +import cn.lihongjie.coal.tzDeviceCategory.mapper.TzDeviceCategoryMapper; +import cn.lihongjie.coal.tzDeviceCategory.repository.TzDeviceCategoryRepository; + +import lombok.extern.slf4j.Slf4j; + +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +@Service +@Slf4j +@Transactional +public class TzDeviceCategoryService + extends BaseService { + @Autowired private TzDeviceCategoryRepository repository; + + @Autowired private TzDeviceCategoryMapper mapper; + + @Autowired private ConversionService conversionService; + + @Autowired private DbFunctionService dbFunctionService; + + public TzDeviceCategoryDto create(CreateTzDeviceCategoryDto request) { + TzDeviceCategoryEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public TzDeviceCategoryDto update(UpdateTzDeviceCategoryDto request) { + TzDeviceCategoryEntity entity = this.repository.get(request.getId()); + this.mapper.updateEntity(entity, request); + + this.repository.save(entity); + + return getById(entity.getId()); + } + + public void delete(IdRequest request) { + boolean linked = this.repository.isLinked(request.getIds()); + + if (linked) { + throw new BizException("数据已被关联,无法删除"); + } + + this.repository.deleteAllById(request.getIds()); + } + + public TzDeviceCategoryDto getById(String id) { + TzDeviceCategoryEntity entity = repository.get(id); + + return mapper.toDto(entity); + } + + public Page list(CommonQuery query) { + Page page = + repository.findAll( + query.specification(conversionService), + PageRequest.of( + query.getPageNo(), + query.getPageSize(), + Sort.by(query.getOrders()))); + + return page.map(this.mapper::toDto); + } + + public List getRoots(CommonQuery request) { + + if (CollectionUtils.isEmpty(request.getItems())) { + List roots = + this.repository.findAll( + (root, query, criteriaBuilder) -> + criteriaBuilder.isNull(root.get("parent"))); + return roots.stream().map(de -> this.mapper.toTreeDto(de)).collect(Collectors.toList()); + } else { + Page page = + repository.findAll( + request.specification(conversionService), + PageRequest.of( + request.getPageNo(), + request.getPageSize(), + Sort.by(request.getOrders()))); + + List selfAndParentIds = + this.dbFunctionService.selfAndParentIds( + dbFunctionService.entityToTableName(TzDeviceCategoryEntity.class), + page.stream().map(x -> x.getId()).collect(Collectors.toList()), + true); + + List selfAndParent = + this.findAllByIds(selfAndParentIds).stream() + .map(x -> (this.mapper.toTreeDtoExcludeChildren(x))) + .collect(Collectors.toList()); + + return StreamSupport.stream( + TreeUtils.buildTreeFromList( + selfAndParent, + TzDeviceCategoryTreeDto::getId, + x -> x.getParent(), + (x, y) -> { + if (x.getChildren() == null) { + x.setChildren(new ArrayList<>()); + } + x.getChildren().add(y); + return null; + }) + .spliterator(), + false) + .collect(Collectors.toList()); + } + } + + public List getTreeByIds(IdRequest request) { + if (request.getIds().isEmpty()) { + return new ArrayList<>(); + } + var roots = + this.repository.findAll( + (root, query, criteriaBuilder) -> root.get("id").in(request.getIds())); + return roots.stream().map(de -> this.mapper.toTreeDto(de)).collect(Collectors.toList()); + } +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/controller/TzDeviceMaintenanceRecordController.java b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/controller/TzDeviceMaintenanceRecordController.java new file mode 100644 index 00000000..7957a4dc --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/controller/TzDeviceMaintenanceRecordController.java @@ -0,0 +1,68 @@ +package cn.lihongjie.coal.tzDeviceMaintenanceRecord.controller; + +import cn.lihongjie.coal.annotation.OrgScope; +import cn.lihongjie.coal.annotation.SysLog; +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.CreateTzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.TzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.UpdateTzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.service.TzDeviceMaintenanceRecordService; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/tzDeviceMaintenanceRecord") +@SysLog(module = "特种设备检修记录") +@Slf4j +@OrgScope +public class TzDeviceMaintenanceRecordController { + @Autowired private TzDeviceMaintenanceRecordService service; + + @PostMapping("/create") + public TzDeviceMaintenanceRecordDto create( + @RequestBody CreateTzDeviceMaintenanceRecordDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public TzDeviceMaintenanceRecordDto update( + @RequestBody UpdateTzDeviceMaintenanceRecordDto request) { + return this.service.update(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public TzDeviceMaintenanceRecordDto getById(@RequestBody IdRequest request) { + return this.service.getById(request.getId()); + } + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery request) { + return this.service.list(request); + } + + @PostMapping("/archive") + public Object archive(@RequestBody IdRequest request) { + this.service.archive(request); + return true; + } + + @PostMapping("/unarchive") + public Object unarchive(@RequestBody IdRequest request) { + this.service.unarchive(request); + return true; + } +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/CreateTzDeviceMaintenanceRecordDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/CreateTzDeviceMaintenanceRecordDto.java new file mode 100644 index 00000000..cd46c450 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/CreateTzDeviceMaintenanceRecordDto.java @@ -0,0 +1,28 @@ +package cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; + +@Data +public class CreateTzDeviceMaintenanceRecordDto extends OrgCommonDto { + + @Comment("检维修时间") + private LocalDateTime maintenanceDate; + + @Comment("检维修原因") + private String maintenanceReason; + + @Comment("检维修内容") + private String maintenanceContent; + + @Comment("更换备品备件") + private String replacedSpareParts; + + @Comment("检维修人员") + private String maintenancePersonnel; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/TzDeviceMaintenanceRecordDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/TzDeviceMaintenanceRecordDto.java new file mode 100644 index 00000000..5197b3bf --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/TzDeviceMaintenanceRecordDto.java @@ -0,0 +1,35 @@ +package cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; +import cn.lihongjie.coal.common.DictCode; +import cn.lihongjie.coal.pojoProcessor.DictTranslate; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; + +@Data +public class TzDeviceMaintenanceRecordDto extends OrgCommonDto { + private String archiveStatus; + + @DictTranslate(dictKey = DictCode.ARCHIVESTATUS) + private String archiveStatusName; + + + @Comment("检维修时间") + private LocalDateTime maintenanceDate; + + @Comment("检维修原因") + private String maintenanceReason; + + @Comment("检维修内容") + private String maintenanceContent; + + @Comment("更换备品备件") + private String replacedSpareParts; + + @Comment("检维修人员") + private String maintenancePersonnel; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/UpdateTzDeviceMaintenanceRecordDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/UpdateTzDeviceMaintenanceRecordDto.java new file mode 100644 index 00000000..707f1bf6 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/dto/UpdateTzDeviceMaintenanceRecordDto.java @@ -0,0 +1,28 @@ +package cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; + +@Data +public class UpdateTzDeviceMaintenanceRecordDto extends OrgCommonDto { + + @Comment("检维修时间") + private LocalDateTime maintenanceDate; + + @Comment("检维修原因") + private String maintenanceReason; + + @Comment("检维修内容") + private String maintenanceContent; + + @Comment("更换备品备件") + private String replacedSpareParts; + + @Comment("检维修人员") + private String maintenancePersonnel; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/entity/TzDeviceMaintenanceRecordEntity.java b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/entity/TzDeviceMaintenanceRecordEntity.java new file mode 100644 index 00000000..0384ff93 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/entity/TzDeviceMaintenanceRecordEntity.java @@ -0,0 +1,41 @@ +package cn.lihongjie.coal.tzDeviceMaintenanceRecord.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import jakarta.persistence.Entity; +import jakarta.persistence.Table; + +import lombok.Data; + +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; + +@Data +@Entity +@Table( + indexes = + @jakarta.persistence.Index( + name = "idx_tzDeviceMaintenanceRecord_org_id", + columnList = "organization_id")) +public class TzDeviceMaintenanceRecordEntity extends OrgCommonEntity { + @Comment("归档状态") + @ColumnDefault("'0'") + private String archiveStatus = "0"; + + @Comment("检维修时间") + private LocalDateTime maintenanceDate; + + @Comment("检维修原因") + private String maintenanceReason; + + @Comment("检维修内容") + private String maintenanceContent; + + @Comment("更换备品备件") + private String replacedSpareParts; + + @Comment("检维修人员") + private String maintenancePersonnel; +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/mapper/TzDeviceMaintenanceRecordMapper.java b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/mapper/TzDeviceMaintenanceRecordMapper.java new file mode 100644 index 00000000..813a4ffa --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/mapper/TzDeviceMaintenanceRecordMapper.java @@ -0,0 +1,23 @@ +package cn.lihongjie.coal.tzDeviceMaintenanceRecord.mapper; + +import cn.lihongjie.coal.base.mapper.BaseMapper; +import cn.lihongjie.coal.base.mapper.CommonEntityMapper; +import cn.lihongjie.coal.base.mapper.CommonMapper; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.CreateTzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.TzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.UpdateTzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.entity.TzDeviceMaintenanceRecordEntity; + +import org.mapstruct.Mapper; +import org.mapstruct.control.DeepClone; + +@Mapper( + componentModel = org.mapstruct.MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class, CommonEntityMapper.class}, + mappingControl = DeepClone.class) +public interface TzDeviceMaintenanceRecordMapper + extends BaseMapper< + TzDeviceMaintenanceRecordEntity, + TzDeviceMaintenanceRecordDto, + CreateTzDeviceMaintenanceRecordDto, + UpdateTzDeviceMaintenanceRecordDto> {} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/repository/TzDeviceMaintenanceRecordRepository.java b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/repository/TzDeviceMaintenanceRecordRepository.java new file mode 100644 index 00000000..1ac68d57 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/repository/TzDeviceMaintenanceRecordRepository.java @@ -0,0 +1,16 @@ +package cn.lihongjie.coal.tzDeviceMaintenanceRecord.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.entity.TzDeviceMaintenanceRecordEntity; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface TzDeviceMaintenanceRecordRepository + extends BaseRepository { + @Query("select false") + boolean isLinked(List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/service/TzDeviceMaintenanceRecordService.java b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/service/TzDeviceMaintenanceRecordService.java new file mode 100644 index 00000000..69cadf45 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceMaintenanceRecord/service/TzDeviceMaintenanceRecordService.java @@ -0,0 +1,94 @@ +package cn.lihongjie.coal.tzDeviceMaintenanceRecord.service; + +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.base.service.BaseService; +import cn.lihongjie.coal.dbFunctions.DbFunctionService; +import cn.lihongjie.coal.exception.BizException; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.CreateTzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.TzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.dto.UpdateTzDeviceMaintenanceRecordDto; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.entity.TzDeviceMaintenanceRecordEntity; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.mapper.TzDeviceMaintenanceRecordMapper; +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.repository.TzDeviceMaintenanceRecordRepository; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional +public class TzDeviceMaintenanceRecordService + extends BaseService { + @Autowired private TzDeviceMaintenanceRecordRepository repository; + + @Autowired private TzDeviceMaintenanceRecordMapper mapper; + + @Autowired private ConversionService conversionService; + + @Autowired private DbFunctionService dbFunctionService; + + public TzDeviceMaintenanceRecordDto create(CreateTzDeviceMaintenanceRecordDto request) { + TzDeviceMaintenanceRecordEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public TzDeviceMaintenanceRecordDto update(UpdateTzDeviceMaintenanceRecordDto request) { + TzDeviceMaintenanceRecordEntity entity = this.repository.get(request.getId()); + if (this.repository.containArchived(request.getId())) { + throw new BizException("部分数据已归档,无法编辑或删除"); + } + this.mapper.updateEntity(entity, request); + + this.repository.save(entity); + + return getById(entity.getId()); + } + + public void delete(IdRequest request) { + if (this.repository.containArchived(request)) { + throw new BizException("部分数据已归档,无法编辑或删除"); + } + boolean linked = this.repository.isLinked(request.getIds()); + + if (linked) { + throw new BizException("数据已被关联,无法删除"); + } + this.repository.deleteAllById(request.getIds()); + } + + public TzDeviceMaintenanceRecordDto getById(String id) { + TzDeviceMaintenanceRecordEntity entity = repository.get(id); + + return mapper.toDto(entity); + } + + public Page list(CommonQuery query) { + Page page = + repository.findAll( + query.specification(conversionService), + PageRequest.of( + query.getPageNo(), + query.getPageSize(), + Sort.by(query.getOrders()))); + + return page.map(this.mapper::toDto); + } + + public void archive(IdRequest dto) { + this.repository.archive(dto); + } + + public void unarchive(IdRequest dto) { + this.repository.unArchive(dto); + } +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/controller/TzDeviceSupplierController.java b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/controller/TzDeviceSupplierController.java new file mode 100644 index 00000000..58e1accb --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/controller/TzDeviceSupplierController.java @@ -0,0 +1,66 @@ +package cn.lihongjie.coal.tzDeviceSupplier.controller; + +import cn.lihongjie.coal.annotation.OrgScope; +import cn.lihongjie.coal.annotation.SysLog; +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.tzDeviceSupplier.dto.CreateTzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.dto.TzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.dto.UpdateTzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.service.TzDeviceSupplierService; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/tzDeviceSupplier") +@SysLog(module = "特种设备厂家") +@Slf4j +@OrgScope +public class TzDeviceSupplierController { + @Autowired private TzDeviceSupplierService service; + + @PostMapping("/create") + public TzDeviceSupplierDto create(@RequestBody CreateTzDeviceSupplierDto request) { + return this.service.create(request); + } + + @PostMapping("/update") + public TzDeviceSupplierDto update(@RequestBody UpdateTzDeviceSupplierDto request) { + return this.service.update(request); + } + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest request) { + this.service.delete(request); + return true; + } + + @PostMapping("/getById") + public TzDeviceSupplierDto getById(@RequestBody IdRequest request) { + return this.service.getById(request.getId()); + } + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery request) { + return this.service.list(request); + } + + @PostMapping("/archive") + public Object archive(@RequestBody IdRequest request) { + this.service.archive(request); + return true; + } + + @PostMapping("/unarchive") + public Object unarchive(@RequestBody IdRequest request) { + this.service.unarchive(request); + return true; + } +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/CreateTzDeviceSupplierDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/CreateTzDeviceSupplierDto.java new file mode 100644 index 00000000..f967d560 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/CreateTzDeviceSupplierDto.java @@ -0,0 +1,18 @@ +package cn.lihongjie.coal.tzDeviceSupplier.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class CreateTzDeviceSupplierDto extends OrgCommonDto { + + + + private String contact; + + private String contactPhone; + + private String address; + +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/TzDeviceSupplierDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/TzDeviceSupplierDto.java new file mode 100644 index 00000000..addd1513 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/TzDeviceSupplierDto.java @@ -0,0 +1,24 @@ +package cn.lihongjie.coal.tzDeviceSupplier.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; +import cn.lihongjie.coal.common.DictCode; +import cn.lihongjie.coal.pojoProcessor.DictTranslate; + +import lombok.Data; + +@Data +public class TzDeviceSupplierDto extends OrgCommonDto { + private String archiveStatus; + + @DictTranslate(dictKey = DictCode.ARCHIVESTATUS) + private String archiveStatusName; + + + + private String contact; + + private String contactPhone; + + private String address; + +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/UpdateTzDeviceSupplierDto.java b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/UpdateTzDeviceSupplierDto.java new file mode 100644 index 00000000..abf2d9cb --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/dto/UpdateTzDeviceSupplierDto.java @@ -0,0 +1,18 @@ +package cn.lihongjie.coal.tzDeviceSupplier.dto; + +import cn.lihongjie.coal.base.dto.OrgCommonDto; + +import lombok.Data; + +@Data +public class UpdateTzDeviceSupplierDto extends OrgCommonDto { + + + + private String contact; + + private String contactPhone; + + private String address; + +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/entity/TzDeviceSupplierEntity.java b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/entity/TzDeviceSupplierEntity.java new file mode 100644 index 00000000..15a6250d --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/entity/TzDeviceSupplierEntity.java @@ -0,0 +1,37 @@ +package cn.lihongjie.coal.tzDeviceSupplier.entity; + +import cn.lihongjie.coal.base.entity.OrgCommonEntity; + +import jakarta.persistence.Entity; +import jakarta.persistence.Table; + +import lombok.Data; + +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.Comment; + +@Data +@Entity +@Table( + indexes = + @jakarta.persistence.Index( + name = "idx_tzDeviceSupplier_org_id", + columnList = "organization_id")) +public class TzDeviceSupplierEntity extends OrgCommonEntity { + @Comment("归档状态") + @ColumnDefault("'0'") + private String archiveStatus = "0"; + + + + + private String contact; + + private String contactPhone; + + private String address; + + + + +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/mapper/TzDeviceSupplierMapper.java b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/mapper/TzDeviceSupplierMapper.java new file mode 100644 index 00000000..361f2f33 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/mapper/TzDeviceSupplierMapper.java @@ -0,0 +1,23 @@ +package cn.lihongjie.coal.tzDeviceSupplier.mapper; + +import cn.lihongjie.coal.base.mapper.BaseMapper; +import cn.lihongjie.coal.base.mapper.CommonEntityMapper; +import cn.lihongjie.coal.base.mapper.CommonMapper; +import cn.lihongjie.coal.tzDeviceSupplier.dto.CreateTzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.dto.TzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.dto.UpdateTzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.entity.TzDeviceSupplierEntity; + +import org.mapstruct.Mapper; +import org.mapstruct.control.DeepClone; + +@Mapper( + componentModel = org.mapstruct.MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class, CommonEntityMapper.class}, + mappingControl = DeepClone.class) +public interface TzDeviceSupplierMapper + extends BaseMapper< + TzDeviceSupplierEntity, + TzDeviceSupplierDto, + CreateTzDeviceSupplierDto, + UpdateTzDeviceSupplierDto> {} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/repository/TzDeviceSupplierRepository.java b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/repository/TzDeviceSupplierRepository.java new file mode 100644 index 00000000..36f9ebd0 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/repository/TzDeviceSupplierRepository.java @@ -0,0 +1,15 @@ +package cn.lihongjie.coal.tzDeviceSupplier.repository; + +import cn.lihongjie.coal.base.dao.BaseRepository; +import cn.lihongjie.coal.tzDeviceSupplier.entity.TzDeviceSupplierEntity; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface TzDeviceSupplierRepository extends BaseRepository { + @Query("select false") + boolean isLinked(List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/service/TzDeviceSupplierService.java b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/service/TzDeviceSupplierService.java new file mode 100644 index 00000000..1078f511 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/tzDeviceSupplier/service/TzDeviceSupplierService.java @@ -0,0 +1,94 @@ +package cn.lihongjie.coal.tzDeviceSupplier.service; + +import cn.lihongjie.coal.base.dto.CommonQuery; +import cn.lihongjie.coal.base.dto.IdRequest; +import cn.lihongjie.coal.base.service.BaseService; +import cn.lihongjie.coal.dbFunctions.DbFunctionService; +import cn.lihongjie.coal.exception.BizException; +import cn.lihongjie.coal.tzDeviceSupplier.dto.CreateTzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.dto.TzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.dto.UpdateTzDeviceSupplierDto; +import cn.lihongjie.coal.tzDeviceSupplier.entity.TzDeviceSupplierEntity; +import cn.lihongjie.coal.tzDeviceSupplier.mapper.TzDeviceSupplierMapper; +import cn.lihongjie.coal.tzDeviceSupplier.repository.TzDeviceSupplierRepository; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional +public class TzDeviceSupplierService + extends BaseService { + @Autowired private TzDeviceSupplierRepository repository; + + @Autowired private TzDeviceSupplierMapper mapper; + + @Autowired private ConversionService conversionService; + + @Autowired private DbFunctionService dbFunctionService; + + public TzDeviceSupplierDto create(CreateTzDeviceSupplierDto request) { + TzDeviceSupplierEntity entity = mapper.toEntity(request); + + this.repository.save(entity); + return getById(entity.getId()); + } + + public TzDeviceSupplierDto update(UpdateTzDeviceSupplierDto request) { + TzDeviceSupplierEntity entity = this.repository.get(request.getId()); + if (this.repository.containArchived(request.getId())) { + throw new BizException("部分数据已归档,无法编辑或删除"); + } + this.mapper.updateEntity(entity, request); + + this.repository.save(entity); + + return getById(entity.getId()); + } + + public void delete(IdRequest request) { + if (this.repository.containArchived(request)) { + throw new BizException("部分数据已归档,无法编辑或删除"); + } + boolean linked = this.repository.isLinked(request.getIds()); + + if (linked) { + throw new BizException("数据已被关联,无法删除"); + } + this.repository.deleteAllById(request.getIds()); + } + + public TzDeviceSupplierDto getById(String id) { + TzDeviceSupplierEntity entity = repository.get(id); + + return mapper.toDto(entity); + } + + public Page list(CommonQuery query) { + Page page = + repository.findAll( + query.specification(conversionService), + PageRequest.of( + query.getPageNo(), + query.getPageSize(), + Sort.by(query.getOrders()))); + + return page.map(this.mapper::toDto); + } + + public void archive(IdRequest dto) { + this.repository.archive(dto); + } + + public void unarchive(IdRequest dto) { + this.repository.unArchive(dto); + } +} diff --git a/src/main/resources/scripts/dict/enum/tzDeviceDict.groovy b/src/main/resources/scripts/dict/enum/tzDeviceDict.groovy new file mode 100644 index 00000000..c6f9ef30 --- /dev/null +++ b/src/main/resources/scripts/dict/enum/tzDeviceDict.groovy @@ -0,0 +1,17 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.tzDevice.controller.TzDeviceController +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(TzDeviceController.class) + + + + +return controller.list(new CommonQuery()) + + diff --git a/src/main/resources/scripts/dict/enum/tzDeviceMaintenanceRecordDict.groovy b/src/main/resources/scripts/dict/enum/tzDeviceMaintenanceRecordDict.groovy new file mode 100644 index 00000000..849ff977 --- /dev/null +++ b/src/main/resources/scripts/dict/enum/tzDeviceMaintenanceRecordDict.groovy @@ -0,0 +1,17 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.tzDeviceMaintenanceRecord.controller.TzDeviceMaintenanceRecordController +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(TzDeviceMaintenanceRecordController.class) + + + + +return controller.list(new CommonQuery()) + + diff --git a/src/main/resources/scripts/dict/enum/tzDeviceSupplierDict.groovy b/src/main/resources/scripts/dict/enum/tzDeviceSupplierDict.groovy new file mode 100644 index 00000000..1ad05a4f --- /dev/null +++ b/src/main/resources/scripts/dict/enum/tzDeviceSupplierDict.groovy @@ -0,0 +1,17 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.tzDeviceSupplier.controller.TzDeviceSupplierController +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(TzDeviceSupplierController.class) + + + + +return controller.list(new CommonQuery()) + + diff --git a/src/main/resources/scripts/dict/tree/tzDeviceCategoryTree.groovy b/src/main/resources/scripts/dict/tree/tzDeviceCategoryTree.groovy new file mode 100644 index 00000000..af82a67d --- /dev/null +++ b/src/main/resources/scripts/dict/tree/tzDeviceCategoryTree.groovy @@ -0,0 +1,17 @@ + +package scripts.dict + +import cn.lihongjie.coal.base.dto.CommonQuery +import cn.lihongjie.coal.tzDeviceCategory.controller.TzDeviceCategoryController +import org.springframework.context.ApplicationContext + +ApplicationContext ioc = ioc + +def controller = ioc.getBean(TzDeviceCategoryController.class) + + + + +return controller.roots(new CommonQuery()) + +