From e7944993be42d47e7ca1091a34541ed27ba9a318 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Tue, 20 Feb 2024 21:56:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=92=E6=A1=A3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CoalAnalysisController.java | 13 ++++++ .../coalAnalysis/dto/CoalAnalysisDto.java | 12 ++++++ .../entity/CoalAnalysisEntity.java | 15 +++++++ .../service/CoalAnalysisService.java | 35 +++++++++++++++ .../entity/CoalAnalysisHisEntity.java | 6 +++ .../CoalWashingDailyAnalysisController.java | 14 ++++++ .../dto/CoalWashingDailyAnalysisDto.java | 13 ++++++ .../CoalWashingDailyAnalysisEntity.java | 38 ++++++++-------- .../CoalWashingDailyAnalysisService.java | 39 ++++++++++++++++- .../lihongjie/coal/common/ArchiveUtils.java | 43 +++++++++++++++++++ src/main/resources/config/dictionary.json | 14 ++++++ .../db/migration/V28__archiveStatus.sql | 8 ++++ 12 files changed, 228 insertions(+), 22 deletions(-) create mode 100644 src/main/java/cn/lihongjie/coal/common/ArchiveUtils.java create mode 100644 src/main/resources/db/migration/V28__archiveStatus.sql diff --git a/src/main/java/cn/lihongjie/coal/coalAnalysis/controller/CoalAnalysisController.java b/src/main/java/cn/lihongjie/coal/coalAnalysis/controller/CoalAnalysisController.java index 5fd332e6..5ebc81fe 100644 --- a/src/main/java/cn/lihongjie/coal/coalAnalysis/controller/CoalAnalysisController.java +++ b/src/main/java/cn/lihongjie/coal/coalAnalysis/controller/CoalAnalysisController.java @@ -47,6 +47,19 @@ public class CoalAnalysisController { return true; } + @PostMapping("/archive") + @SysLog(action = "归档") + public Object archive(@RequestBody IdRequest dto) { + this.service.archive(dto); + return true; + } + + @PostMapping("/unarchive") + @SysLog(action = "取消归档") + public Object unarchive(@RequestBody IdRequest dto) { + this.service.unarchive(dto); + return true; + } @PostMapping("/getById") public CoalAnalysisDto getById(@RequestBody IdRequest request) { return this.service.getById(request.getId()); diff --git a/src/main/java/cn/lihongjie/coal/coalAnalysis/dto/CoalAnalysisDto.java b/src/main/java/cn/lihongjie/coal/coalAnalysis/dto/CoalAnalysisDto.java index 5579e3dc..1acab536 100644 --- a/src/main/java/cn/lihongjie/coal/coalAnalysis/dto/CoalAnalysisDto.java +++ b/src/main/java/cn/lihongjie/coal/coalAnalysis/dto/CoalAnalysisDto.java @@ -8,6 +8,7 @@ import cn.lihongjie.coal.coalInfo.entity.CoalInfoEntity; import lombok.Data; import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; import java.util.HashMap; import java.util.Map; @@ -17,6 +18,17 @@ public class CoalAnalysisDto extends OrgCommonDto { @Comment("关联的煤源信息") private CoalInfoEntity coalInfo; + @Comment("归档状态") + private String archiveStatus; + + @Formula( + "(select i.name\n" + + "from t_dictionary d,\n" + + " t_dictionary_item i\n" + + "where d.id = i.dictionary_id\n" + + " and d.code = 'archiveStatus'\n" + + " and i.code = archive_status)") + private String archiveStatusName; @Comment("参数 1 ") // @DecimalMin(value = "0.1", inclusive = true, message = "参数不能小于0.1") private Double param1; diff --git a/src/main/java/cn/lihongjie/coal/coalAnalysis/entity/CoalAnalysisEntity.java b/src/main/java/cn/lihongjie/coal/coalAnalysis/entity/CoalAnalysisEntity.java index 1c8b4998..ddf1fcdc 100644 --- a/src/main/java/cn/lihongjie/coal/coalAnalysis/entity/CoalAnalysisEntity.java +++ b/src/main/java/cn/lihongjie/coal/coalAnalysis/entity/CoalAnalysisEntity.java @@ -9,7 +9,9 @@ import jakarta.persistence.ManyToOne; import lombok.Data; +import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; @Data @Entity @@ -18,6 +20,19 @@ public class CoalAnalysisEntity extends OrgCommonEntity { @Comment("关联的煤源信息") private CoalInfoEntity coalInfo; + + @Comment("归档状态") + @ColumnDefault("'0'") + private String archiveStatus; + + @Formula( + "(select i.name\n" + + "from t_dictionary d,\n" + + " t_dictionary_item i\n" + + "where d.id = i.dictionary_id\n" + + " and d.code = 'archiveStatus'\n" + + " and i.code = archive_status)") + private String archiveStatusName; @Comment("参数 1 ") // @DecimalMin(value = "0.1", inclusive = true, message = "参数不能小于0.1") private Double param1; diff --git a/src/main/java/cn/lihongjie/coal/coalAnalysis/service/CoalAnalysisService.java b/src/main/java/cn/lihongjie/coal/coalAnalysis/service/CoalAnalysisService.java index dd9a5eaa..bffdf786 100644 --- a/src/main/java/cn/lihongjie/coal/coalAnalysis/service/CoalAnalysisService.java +++ b/src/main/java/cn/lihongjie/coal/coalAnalysis/service/CoalAnalysisService.java @@ -12,6 +12,7 @@ import cn.lihongjie.coal.coalAnalysis.repository.CoalAnalysisRepository; import cn.lihongjie.coal.coalAnalysisHis.service.CoalAnalysisHisService; import cn.lihongjie.coal.coalParameterDef.entity.CoalParameterDefEntity; import cn.lihongjie.coal.coalParameterDef.repository.CoalParameterDefRepository; +import cn.lihongjie.coal.common.ArchiveUtils; import cn.lihongjie.coal.common.Ctx; import cn.lihongjie.coal.common.GroovyScriptUtils; import cn.lihongjie.coal.exception.BizException; @@ -97,6 +98,13 @@ class CoalAnalysisService extends BaseService "0", + (e, actual, expected) -> { + throw new BizException("化验报告 " + e.getName() + "已归档,无法编辑"); + }); hisService.saveHis(entity); this.mapper.updateEntity(entity, request); @@ -107,6 +115,14 @@ class CoalAnalysisService extends BaseService "0", + (e, actual, expected) -> { + throw new BizException("化验报告 " + e.getName() + "已归档,无法删除"); + }); this.repository.deleteAllById(request.getIds()); } @@ -127,4 +143,23 @@ class CoalAnalysisService extends BaseService ArchiveUtils.checkArchiveStatus(x, CoalAnalysisEntity::getArchiveStatus, y -> "0", (e, actual, expected) -> { + throw new BizException("化验报告 " + e.getName() + "已归档,无法再次归档"); + })) + .peek(x -> x.setArchiveStatus("1")) + .forEach(this.repository::save); + } + + public void unarchive(IdRequest dto) { + this.repository.findAllById(dto.getIds()).stream() + .peek(x->ArchiveUtils.checkArchiveStatus(x, CoalAnalysisEntity::getArchiveStatus, y -> "1", (e, actual, expected) -> { + throw new BizException("化验报告 " + e.getName() + "未归档,无法取消归档"); + })) + .peek(x -> x.setArchiveStatus("0")) + .forEach(this.repository::save); + } } diff --git a/src/main/java/cn/lihongjie/coal/coalAnalysisHis/entity/CoalAnalysisHisEntity.java b/src/main/java/cn/lihongjie/coal/coalAnalysisHis/entity/CoalAnalysisHisEntity.java index c28b5317..4dc72f96 100644 --- a/src/main/java/cn/lihongjie/coal/coalAnalysisHis/entity/CoalAnalysisHisEntity.java +++ b/src/main/java/cn/lihongjie/coal/coalAnalysisHis/entity/CoalAnalysisHisEntity.java @@ -10,6 +10,7 @@ import jakarta.persistence.ManyToOne; import lombok.Data; +import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.Comment; @Data @@ -19,6 +20,11 @@ public class CoalAnalysisHisEntity extends OrgCommonEntity { @Comment("关联的煤源信息") private CoalInfoEntity coalInfo; + + @Comment("归档状态") + @ColumnDefault("'0'") + private String archiveStatus; + @ManyToOne @Comment("关联化验数据") private CoalAnalysisEntity src; diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/controller/CoalWashingDailyAnalysisController.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/controller/CoalWashingDailyAnalysisController.java index c76bd5cd..454b64bb 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/controller/CoalWashingDailyAnalysisController.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/controller/CoalWashingDailyAnalysisController.java @@ -57,6 +57,20 @@ public class CoalWashingDailyAnalysisController extends BaseController { return true; } + @PostMapping("/archive") + @SysLog(action = "归档") + public Object archive(@RequestBody IdRequest dto) { + this.service.archive(dto); + return true; + } + + @PostMapping("/unarchive") + @SysLog(action = "取消归档") + public Object unarchive(@RequestBody IdRequest dto) { + this.service.unarchive(dto); + return true; + } + @PostMapping("/list") public Page list(@RequestBody CommonQuery dto) { return this.service.list(dto); diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java index a841eb22..2c49f233 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/dto/CoalWashingDailyAnalysisDto.java @@ -13,6 +13,7 @@ import jakarta.persistence.ForeignKey; import lombok.Data; import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; import java.time.LocalDate; import java.util.List; @@ -25,6 +26,18 @@ public class CoalWashingDailyAnalysisDto extends OrgCommonDto { @Comment("日期") private LocalDate date; + @Comment("归档状态") + private String archiveStatus; + + @Formula( + "(select i.name\n" + + "from t_dictionary d,\n" + + " t_dictionary_item i\n" + + "where d.id = i.dictionary_id\n" + + " and d.code = 'archiveStatus'\n" + + " and i.code = archive_status)") + private String archiveStatusName; + @ElementCollection @Comment("用户手动录入的记录") @CollectionTable(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/entity/CoalWashingDailyAnalysisEntity.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/entity/CoalWashingDailyAnalysisEntity.java index c5950b40..7538fbff 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/entity/CoalWashingDailyAnalysisEntity.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/entity/CoalWashingDailyAnalysisEntity.java @@ -12,7 +12,9 @@ import lombok.Data; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Formula; import java.time.LocalDate; import java.time.LocalTime; @@ -26,6 +28,19 @@ import java.util.stream.Collectors; @Comment("洗煤报告表") public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { + @Comment("归档状态") + private String archiveStatus; + + @Formula( + "(select i.name\n" + + "from t_dictionary d,\n" + + " t_dictionary_item i\n" + + "where d.id = i.dictionary_id\n" + + " and d.code = 'archiveStatus'\n" + + " and i.code = archive_status)") + @ColumnDefault("'0'") + private String archiveStatusName; + @Comment("日期") private LocalDate date; @@ -103,21 +118,19 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { inputItems.sort( Comparator.comparing(x -> ObjectUtils.defaultIfNull(x.getTime(), LocalTime.MIN))); - for(int i = 1; i < inputItems.size(); i++) { + for (int i = 1; i < inputItems.size(); i++) { var c = inputItems.get(i); var p = inputItems.get(i - 1); - if (c.getTime() == null || p.getTime() == null){ + if (c.getTime() == null || p.getTime() == null) { throw new BizException("时间不能为空"); } - if (c.getTime().equals(p.getTime())){ + if (c.getTime().equals(p.getTime())) { throw new BizException("时间重复 " + c.getTime()); } } - - for (int i = 0; i < inputItems.size(); i++) { CoalWashingDailyAnalysisItemVo coalWashingDailyAnalysisItemVo = inputItems.get(i); if (StringUtils.equals(type, "2") && i == inputItems.size() - 1) { @@ -162,7 +175,6 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { getWeight, (x, v) -> x.setRollingAvgDdp1(v == null ? null : v.doubleValue())); - cn.lihongjie.coal.common.CollectionUtils.rollingAvg( inputItems, Comparator.comparing(CoalWashingDailyAnalysisItemVo::getTime), @@ -177,7 +189,6 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { getWeight, (x, v) -> x.setFddAvgP1(v == null ? null : v.doubleValue())); - cn.lihongjie.coal.common.CollectionUtils.rollingAvg( inputItems, Comparator.comparing(CoalWashingDailyAnalysisItemVo::getTime), @@ -185,8 +196,6 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { getWeight, (x, v) -> x.setFddAvgP2(v == null ? null : v.doubleValue())); - - cn.lihongjie.coal.common.CollectionUtils.rollingAvg( inputItems, Comparator.comparing(CoalWashingDailyAnalysisItemVo::getTime), @@ -194,8 +203,6 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { getWeight, (x, v) -> x.setSysDdAvgP1(v == null ? null : v.doubleValue())); - - cn.lihongjie.coal.common.CollectionUtils.rollingAvg( inputItems, Comparator.comparing(CoalWashingDailyAnalysisItemVo::getTime), @@ -203,8 +210,6 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { getWeight, (x, v) -> x.setSysDdAvgP2(v == null ? null : v.doubleValue())); - - cn.lihongjie.coal.common.CollectionUtils.rollingAvg( inputItems, Comparator.comparing(CoalWashingDailyAnalysisItemVo::getTime), @@ -212,18 +217,11 @@ public class CoalWashingDailyAnalysisEntity extends OrgCommonEntity { getWeight, (x, v) -> x.setDdAvgP1(v == null ? null : v.doubleValue())); - - cn.lihongjie.coal.common.CollectionUtils.rollingAvg( inputItems, Comparator.comparing(CoalWashingDailyAnalysisItemVo::getTime), CoalWashingDailyAnalysisItemVo::getDdp2, getWeight, (x, v) -> x.setDdAvgP2(v == null ? null : v.doubleValue())); - - - - - } } diff --git a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/service/CoalWashingDailyAnalysisService.java b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/service/CoalWashingDailyAnalysisService.java index dbaa0ae8..a6d034ff 100644 --- a/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/service/CoalWashingDailyAnalysisService.java +++ b/src/main/java/cn/lihongjie/coal/coalWashingDailyAnalysis/service/CoalWashingDailyAnalysisService.java @@ -10,7 +10,9 @@ import cn.lihongjie.coal.coalWashingDailyAnalysis.entity.CoalWashingDailyAnalysi import cn.lihongjie.coal.coalWashingDailyAnalysis.mapper.CoalWashingDailyAnalysisMapper; import cn.lihongjie.coal.coalWashingDailyAnalysis.mapper.RoundMapper; import cn.lihongjie.coal.coalWashingDailyAnalysis.repository.CoalWashingDailyAnalysisRepository; +import cn.lihongjie.coal.common.ArchiveUtils; import cn.lihongjie.coal.common.Ctx; +import cn.lihongjie.coal.exception.BizException; import jakarta.annotation.PostConstruct; @@ -27,8 +29,8 @@ import org.springframework.transaction.annotation.Transactional; @Service @Slf4j @Transactional -public -class CoalWashingDailyAnalysisService extends BaseService { +public class CoalWashingDailyAnalysisService + extends BaseService { @Autowired CoalWashingDailyAnalysisRepository repository; @@ -58,7 +60,14 @@ class CoalWashingDailyAnalysisService extends BaseService "0", (e, actual, expected) -> { + throw new BizException("生产报表 " + e.getName() + "已归档,无法编辑"); + }); + this.mapper.updateEntity(entity, request); entity.setOrganizationId(Ctx.currentUser().getOrganizationId()); this.repository.save(entity); @@ -68,6 +77,15 @@ class CoalWashingDailyAnalysisService extends BaseService "0", + (e, actual, expected) -> { + throw new BizException("生产报表 " + e.getName() + "已归档,无法删除"); + }); + this.repository.deleteAllById(request.getIds()); } @@ -91,5 +109,22 @@ class CoalWashingDailyAnalysisService extends BaseService ArchiveUtils.checkArchiveStatus(x, CoalWashingDailyAnalysisEntity::getArchiveStatus, y -> "0", (e, actual, expected) -> { + throw new BizException("生产报表 " + e.getName() + "已归档,无法再次归档"); + })) + .peek(x -> x.setArchiveStatus("1")) + .forEach(this.repository::save); + } + + public void unarchive(IdRequest dto) { + this.repository.findAllById(dto.getIds()).stream() + .peek(x->ArchiveUtils.checkArchiveStatus(x, CoalWashingDailyAnalysisEntity::getArchiveStatus, y -> "1", (e, actual, expected) -> { + throw new BizException("生产报表 " + e.getName() + "未归档,无法取消归档"); + })) + .peek(x -> x.setArchiveStatus("0")) + .forEach(this.repository::save); + } } diff --git a/src/main/java/cn/lihongjie/coal/common/ArchiveUtils.java b/src/main/java/cn/lihongjie/coal/common/ArchiveUtils.java new file mode 100644 index 00000000..e3108368 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/common/ArchiveUtils.java @@ -0,0 +1,43 @@ +package cn.lihongjie.coal.common; + + +import io.vavr.Function3; + +import lombok.experimental.UtilityClass; + +import org.apache.poi.ss.formula.functions.T; + +import java.util.*; +import java.util.function.Function; + +@UtilityClass +public class ArchiveUtils { + public static void checkArchiveStatus(Function, Iterable> mapper, Iterable ids, Function statusGetter, Function expectedStatusGetter, Function3 handler) { + + mapper.apply(ids) + .forEach( + e -> { + String actual = statusGetter.apply(e); + String expected = expectedStatusGetter.apply(e); + if (!Objects.equals(actual, expected)) { + + handler.apply(e, actual, expected); + } + }); + } + + public static void checkArchiveStatus(E entity, Function statusGetter, Function expectedStatusGetter, Function3 handler) { + + + checkArchiveStatus( + x -> Collections.singletonList(entity), + Collections.singletonList(entity), + statusGetter, + expectedStatusGetter, + handler); + } + + + + +} diff --git a/src/main/resources/config/dictionary.json b/src/main/resources/config/dictionary.json index eb256637..c9424cec 100644 --- a/src/main/resources/config/dictionary.json +++ b/src/main/resources/config/dictionary.json @@ -1930,7 +1930,21 @@ ] }, + { + "code": "archiveStatus", + "name": "归档状态", + "item": [ + { + "code": "0", + "name": "未归档" + }, + { + "code": "1", + "name": "已归档" + } + ] + }, { "code": "coalBlend.coalType", "name": "配煤-煤类型", diff --git a/src/main/resources/db/migration/V28__archiveStatus.sql b/src/main/resources/db/migration/V28__archiveStatus.sql new file mode 100644 index 00000000..62d06f1d --- /dev/null +++ b/src/main/resources/db/migration/V28__archiveStatus.sql @@ -0,0 +1,8 @@ +update t_coal_analysis +set archive_status = '0'; + +update t_coal_analysis_his +set archive_status = '0'; + + +update t_coal_washing_daily_analysis set archive_status = '0'; \ No newline at end of file