diff --git a/cf-gateway/src/main/resources/bootstrap.yaml b/cf-gateway/src/main/resources/bootstrap.yaml index 3eed7be68..35745b83b 100644 --- a/cf-gateway/src/main/resources/bootstrap.yaml +++ b/cf-gateway/src/main/resources/bootstrap.yaml @@ -7,6 +7,11 @@ spring: server: port: 48080 + # 开启Gzip压缩,默认只压缩超过2048字节的数据 + compression: + enabled: true + min-response-size: 2048 + mime-types: application/json # 日志文件配置。注意,如果 logging.file.name 不放在 bootstrap.yaml 配置文件,而是放在 application.yaml 中,会导致出现 LOG_FILE_IS_UNDEFINED 文件 logging: diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanRespVO.java index 30deb9c86..3dd72074f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanRespVO.java @@ -34,9 +34,9 @@ public class PlanRespVO { @ExcelProperty("排单状态:0 新单,1 板材已申请,2 开料中,3 已开料") private Integer status; - @Schema(description = "是否支付:0 否,1 是", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("是否支付:0 否,1 是") - private Boolean isPay; +// @Schema(description = "是否支付:0 否,1 是", requiredMode = Schema.RequiredMode.REQUIRED) +// @ExcelProperty("是否支付:0 否,1 是") +// private Boolean isPay; @Schema(description = "机台 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16707") @ExcelProperty("机台 ID") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plan/PlanDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plan/PlanDO.java index e5e2f490b..508d4b30b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plan/PlanDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plan/PlanDO.java @@ -49,10 +49,10 @@ public class PlanDO extends BaseDO { * 排单状态:0 新单,1 板材已申请,2 开料中,3 已开料 */ private Integer status; - /** - * 是否支付:0 否,1 是 - */ - private Boolean isPay; +// /** +// * 是否支付:0 否,1 是 +// */ +// private Boolean isPay; /** * 机台 ID */ @@ -65,14 +65,14 @@ public class PlanDO extends BaseDO { * 生产单号 */ private String orderNos; - /** - * 排单优化文件地址 - */ - private String placeDateFileUrl; - /** - * 排单优化文件地址 - */ - private String placeOrderFileUrl; +// /** +// * 排单优化文件地址 +// */ +// private String placeDateFileUrl; +// /** +// * 排单优化文件地址 +// */ +// private String placeOrderFileUrl; /** * 备注 */ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java index 0e371c3d3..918a0fc26 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java @@ -165,40 +165,41 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { @Override public Boolean savePlanPlateResult(SavePlanPlateResult result) { - PlanDO planDO = planMapper.selectById(result.getPlanId()); - if (Objects.isNull(planDO)) { - throw exception(PLAN_NOT_EXISTS); - } - try { - String placeDateFileUrlSource = planDO.getPlaceDateFileUrl(); - String placeOrderFileUrlSource = planDO.getPlaceOrderFileUrl(); - if (StrUtil.isNotBlank(placeDateFileUrlSource)) { - fileApi.deleteFileByPath(placeDateFileUrlSource).checkError(); - } - if (StrUtil.isNotBlank(placeOrderFileUrlSource)) { - fileApi.deleteFileByPath(placeOrderFileUrlSource).checkError(); - } - FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); - - fileCreateReqDTO.setContent(result.getPlaceData().getBytes()); - fileCreateReqDTO.setName(result.getPlaceData().getOriginalFilename()); - String placeDateFileUrl = fileApi.createFile(fileCreateReqDTO).getCheckedData(); - - fileCreateReqDTO.setContent(result.getPlaceOrder().getBytes()); - fileCreateReqDTO.setName(result.getPlaceOrder().getOriginalFilename()); - String placeOrderFileUrl = fileApi.createFile(fileCreateReqDTO).getCheckedData(); - - PlanDO updateDO = PlanDO.builder() - .id(result.getPlanId()) - .placeDateFileUrl(placeOrderFileUrl) - .placeOrderFileUrl(placeDateFileUrl) - .build(); - planMapper.updateById(updateDO); - - } catch (IOException e) { - throw exception(UNKNOWN); - } - return Boolean.TRUE; + return null; +// PlanDO planDO = planMapper.selectById(result.getPlanId()); +// if (Objects.isNull(planDO)) { +// throw exception(PLAN_NOT_EXISTS); +// } +// try { +// String placeDateFileUrlSource = planDO.getPlaceDateFileUrl(); +// String placeOrderFileUrlSource = planDO.getPlaceOrderFileUrl(); +// if (StrUtil.isNotBlank(placeDateFileUrlSource)) { +// fileApi.deleteFileByPath(placeDateFileUrlSource).checkError(); +// } +// if (StrUtil.isNotBlank(placeOrderFileUrlSource)) { +// fileApi.deleteFileByPath(placeOrderFileUrlSource).checkError(); +// } +// FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); +// +// fileCreateReqDTO.setContent(result.getPlaceData().getBytes()); +// fileCreateReqDTO.setName(result.getPlaceData().getOriginalFilename()); +// String placeDateFileUrl = fileApi.createFile(fileCreateReqDTO).getCheckedData(); +// +// fileCreateReqDTO.setContent(result.getPlaceOrder().getBytes()); +// fileCreateReqDTO.setName(result.getPlaceOrder().getOriginalFilename()); +// String placeOrderFileUrl = fileApi.createFile(fileCreateReqDTO).getCheckedData(); +// +// PlanDO updateDO = PlanDO.builder() +// .id(result.getPlanId()) +// .placeDateFileUrl(placeOrderFileUrl) +// .placeOrderFileUrl(placeDateFileUrl) +// .build(); +// planMapper.updateById(updateDO); +// +// } catch (IOException e) { +// throw exception(UNKNOWN); +// } +// return Boolean.TRUE; } @Override diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index 94c95e732..e32646fb8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -159,7 +159,7 @@ public class PlanServiceImpl implements PlanService { validatePlanExists(updateReqVO.getId()); // 更新 PlanDO plan = BeanUtils.toBean(updateReqVO, PlanDO.class); - plan.setIsPay(Boolean.FALSE); + planMapper.updateById(plan); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/api/pack/vo/PrintOrderPackReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/api/pack/vo/PrintOrderPackReqVO.java deleted file mode 100644 index cf73efd73..000000000 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/api/pack/vo/PrintOrderPackReqVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.cf.imes.module.manage.api.pack.vo; - - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "管理后台 - 生产单包裹信息") -@Data -public class PrintOrderPackReqVO { - - - - @Schema(description = "生产单id") - private Long orderId; - - - @Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED) - private String packNo; - - - @Schema(description = "包裹ID", requiredMode = Schema.RequiredMode.REQUIRED) - private Long packId; - - - @Schema(description = "包裹数量", requiredMode = Schema.RequiredMode.REQUIRED) - private Long packNum; - - -} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OtherPackReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OtherPackReqVO.java index 8b9fc8dfd..af4bf291e 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OtherPackReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OtherPackReqVO.java @@ -27,6 +27,9 @@ public class OtherPackReqVO { private String name; + @Schema(description = "配件数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "9822") + private Double num; + @Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9822") private String packNo; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/query/OrderItemDO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/query/OrderItemDO.java index c82b4bab1..7f74629d2 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/query/OrderItemDO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/query/OrderItemDO.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; +import java.math.BigDecimal; + @TableName("order_item") @Data @ToString(callSuper = true) @@ -44,7 +46,7 @@ public class OrderItemDO { private Long packageId; // 部件数量 - private Float num; + private Double num; // 组织 ID @TableField(fill = FieldFill.INSERT_UPDATE) diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/enums/OrderPackStatusEnums.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/enums/OrderPackStatusEnums.java new file mode 100644 index 000000000..2087ee2a6 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/enums/OrderPackStatusEnums.java @@ -0,0 +1,29 @@ +package com.cf.imes.module.manage.enums; + + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum OrderPackStatusEnums { + + + UNPACKAGED(0,"未打包"), + INPACKAGING(1, "打包中"), + PACKAGED(1, "打包完成"); + private Integer status; + private String description; + + + public boolean equals(Integer status) { + return this.status .equals(status) ; + } + + public boolean equals(OrderPackStatusEnums enableStatusEnum) { + return enableStatusEnum != null && enableStatusEnum.status .equals(this.getStatus()) ; + } + + + +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java index 11059f599..d8fc46c8e 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java @@ -565,7 +565,7 @@ public class PackServiceImpl implements PackService { orderItemDO.setOrderId(reqVO.getOrderId()); orderItemDO.setPartsId(orderParts.getId()); orderItemDO.setPackageId(orderPackageDO.getId()); - orderItemDO.setNum(Float.valueOf(1)); + orderItemDO.setNum(reqVO.getNum()); // 在生产单明细表中新增数据 @@ -591,12 +591,6 @@ public class PackServiceImpl implements PackService { throw exception(THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT); } - // 判断配件名称是否重复 - OrderPartsNDO orderPartsNDO = orderPartsMapper.selectOneParts(reqVO.getName(),getUserOrganId()); - - if (orderPartsNDO != null) { - throw exception(THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED); - } // 配件表新增数据 OrderPartsNDO orderParts = BeanUtils.toBean(reqVO, OrderPartsNDO.class); @@ -609,7 +603,7 @@ public class PackServiceImpl implements PackService { orderItemDO.setOrderId(reqVO.getOrderId()); orderItemDO.setPartsId(orderParts.getId()); orderItemDO.setPackageId(orderPackageDO.getId()); - orderItemDO.setNum(Float.valueOf(1)); + orderItemDO.setNum(reqVO.getNum()); // 在生产单明细表中新增数据 orderItemMapper.insert(orderItemDO); diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/MinuteCounter.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/MinuteCounter.java new file mode 100644 index 000000000..34f949136 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/MinuteCounter.java @@ -0,0 +1,25 @@ +package com.cf.imes.module.manage.util; + +import java.util.concurrent.atomic.AtomicInteger; + +public class MinuteCounter { + private static final int MASK = 0x7FFFFFFF; + private final AtomicInteger atom; + + public MinuteCounter() { + atom = new AtomicInteger(0); + } + + public final int incrementAndGet() { + return atom.incrementAndGet() & MASK; + } + + public int get() { + return atom.get() & MASK; + } + + public void set(int newValue) { + atom.set(newValue & MASK); + } + +} \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/SnowflakeIdWorker3rd.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/SnowflakeIdWorker3rd.java new file mode 100644 index 000000000..83977afa2 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/SnowflakeIdWorker3rd.java @@ -0,0 +1,129 @@ +package com.cf.imes.module.manage.util; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; + +/** + * @ClassName: SnowflakeIdWorker3rd + * @Description:snowflake算法改进 + * @author: yonnie + * @date: 2024/06/18 14:10:47 + * @version V1.0 + * + * 将产生的Id类型更改为Integer 32bit
+ * 把时间戳的单位改为分钟,使用25bit的时间戳 + * 7bit作为自增值即 2^7 = 128 + */ +@Slf4j +@Component +public class SnowflakeIdWorker3rd { + /** 初始时间 (2024-01-01: 1704038400) */ + // private final int twepoch = 28400640;// 1704038400000L/1000/60; + private final int twepoch = 1704038400; + /** 序列在id中占位数 */ + private final long sequenceBits = 7L; + /** 时间截向左移7bit */ + private final long timestampLeftShift = sequenceBits; + /** 生成序列的MASK (0x7F) */ + private final int sequenceMask = -1 ^ (-1 << sequenceBits); + /** 分钟内序 (0~127) */ + private int sequence = 0; + private int laterSequence = 0; + /** 上次生成ID的时间戳 */ + private int lastTimestamp = -1; + private final MinuteCounter counter = new MinuteCounter(); + /** 预支时间标志 */ + boolean isAdvance = false; + + // ==============================Constructors===================================== + + public SnowflakeIdWorker3rd() { + } + + // ==============================Test============================================= + + /** 测试 */ + public static void main(String[] args) { + SnowflakeIdWorker3rd idWorker = new SnowflakeIdWorker3rd(); + for (int i = 0; i < 1000; i++) { + long id = idWorker.nextId(); + System.out.println(i + ": " + id + " " + "2406" + Long.toString(id).substring(2)); + } + // long id = idWorker.nextId(); + // System.out.println(id); + } + + // ==============================Methods========================================== + /** + * 获取当前年月 + * @return null + */ + public static int obtainingTime() { + LocalDate now = LocalDate.now(); + int year = now.getYear(); + String year_last_two_digits = String.valueOf(year).substring(2); + int month = now.getMonthValue(); + String formatted_date = year_last_two_digits + String.format("%02d", month); + return Integer.parseInt(formatted_date); + } + + /** + * 获得下一个ID (该方法是线程安全) + * + * @return SnowflakeId + */ + public synchronized int nextId() { + int timestamp = timeGen(); + // 如果当前时间小于上一次ID生成的时间戳,说明系统时钟修改过 + if (timestamp < lastTimestamp) { + throw new RuntimeException(String.format( + "Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp)); + } + + if (timestamp > counter.get()) { + counter.set(timestamp); + isAdvance = false; + } + + // 如果是同时间生成的,则进行分钟内序列 + if (lastTimestamp == timestamp || isAdvance) { + if (!isAdvance) { + sequence = (sequence + 1) & sequenceMask; + } + + // 分钟内自增列溢出 + if (sequence == 0) { + // 预支下一分获得新的时间戳 + isAdvance = true; + int laterTimestamp = counter.get(); + if (laterSequence == 0) { + laterTimestamp = counter.incrementAndGet(); + } + int nextId = ((laterTimestamp - twepoch) << timestampLeftShift) | laterSequence; + laterSequence = (laterSequence + 1) & sequenceMask; + return nextId; + } + } else { // 时间戳改变,分钟内序列置0 + sequence = 0; + laterSequence = 0; + } + // 上次生成ID的时间截 + lastTimestamp = timestamp; + // 移位并或运算拼成32位的ID + return ((timestamp - twepoch) << timestampLeftShift) | sequence; + } + + /** + * 返回以分钟为单位的当前时 + * + * @return 当前时间(分钟) + */ + protected int timeGen() { + // String timestamp = String.valueOf(System.currentTimeMillis() / 1000 / 60); + String timestamp = String.valueOf(System.currentTimeMillis() / 1000); + return Integer.valueOf(timestamp); + } + +} diff --git a/cf-module-report/cf-module-report-biz/pom.xml b/cf-module-report/cf-module-report-biz/pom.xml index eef2d3137..84ad88f49 100644 --- a/cf-module-report/cf-module-report-biz/pom.xml +++ b/cf-module-report/cf-module-report-biz/pom.xml @@ -110,6 +110,26 @@ system ${project.basedir}/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar + + dom4j + dom4j + ${dom4j.version} + + + commons-io + commons-io + ${commons-io.version} + + + org.antlr + antlr4-runtime + ${antlr4.version} + + + org.apache.commons + commons-text + ${commons-text.version} + diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/dataset/vo/ReportDatasetRespVO.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/dataset/vo/ReportDatasetRespVO.java index dc88d8a7a..c837beb69 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/dataset/vo/ReportDatasetRespVO.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/dataset/vo/ReportDatasetRespVO.java @@ -29,6 +29,9 @@ public class ReportDatasetRespVO { @Schema(description = "动态查询SQL") private String sql; + @Schema(description = "bean数据源方法名") + private String method; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) private LocalDateTime createTime; diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java index 3c458a2ee..209a0cd3c 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java @@ -1,11 +1,13 @@ package com.cf.imes.module.report.controller.admin.template; +import com.bstek.designer.bean.ReportDefinitionWrapper; +import com.bstek.ureport.export.html.HtmlReport; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.util.object.BeanUtils; +import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplatePreviewPageParametersVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateRespVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO; -import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO; import com.cf.imes.module.report.service.template.ReportTemplateService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -63,9 +65,8 @@ public class ReportTemplateController { @Operation(summary = "获得报表模板信息") @Parameter(name = "id", description = "编号", required = true, example = "1") @PreAuthorize("@ss.hasPermission('report:template:query')") - public CommonResult getReportTemplate(@PathVariable("id") Long id) { - ReportTemplateDO template = templateService.getReportTemplate(id); - return success(BeanUtils.toBean(template, ReportTemplateRespVO.class)); + public CommonResult getReportTemplate(@PathVariable("id") Long id) { + return success(templateService.getReportTemplateDefinition(id)); } @GetMapping("/templates") @@ -75,4 +76,11 @@ public class ReportTemplateController { ReportTemplateReqVO reqVO = new ReportTemplateReqVO(name, null); return success(BeanUtils.toBean(templateService.getReportTemplateList(reqVO), ReportTemplateRespVO.class)); } + + @PostMapping("/template/preview") + @Operation(summary = "模板预览") + @PreAuthorize("@ss.hasPermission('report:template:query')") + public CommonResult preview(@Valid @RequestBody ReportTemplatePreviewPageParametersVO pageParametersVO) { + return success(templateService.preview(pageParametersVO)); + } } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/vo/ReportTemplatePreviewPageParametersVO.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/vo/ReportTemplatePreviewPageParametersVO.java new file mode 100644 index 000000000..8875547af --- /dev/null +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/vo/ReportTemplatePreviewPageParametersVO.java @@ -0,0 +1,18 @@ +package com.cf.imes.module.report.controller.admin.template.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author Gqr + * @since 2024/7/19 9:22 + */ +@Data +@Schema(description = "管理后台 - 报表模板预览分页参数 Request VO") +public class ReportTemplatePreviewPageParametersVO { + @Schema(description = "页码",example = "1") + private int pageIndex; + + @Schema(description = "预览参数") + private ReportTemplatePreviewParametersVO params; +} \ No newline at end of file diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/vo/ReportTemplatePreviewParametersVO.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/vo/ReportTemplatePreviewParametersVO.java new file mode 100644 index 000000000..429024e9e --- /dev/null +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/vo/ReportTemplatePreviewParametersVO.java @@ -0,0 +1,48 @@ +package com.cf.imes.module.report.controller.admin.template.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Gqr + * @since 2024/7/19 9:22 + */ +@Schema(description = "管理后台 - 报表模板预览参数 Request VO") +@Data +public class ReportTemplatePreviewParametersVO { + /** + * 报表内容 + */ + @Schema(description = "报表内容") + @NotNull(message = "预览报表内容不能为空") + private String content; + + /** + * 报表名称 + */ + @Schema(description = "报表名称") + private String reportName; + + /** + * 表单参数 + */ + @Schema(description = "表单参数") + private Map query = new HashMap<>(); + + /** + * 表单对应组件唯一标识 + */ + @Schema(description = "表单对应组件唯一标识") + private Map component = new HashMap<>(); + + /** + * 图表图片目前用于PDF导出 + */ + @Schema(description = "图表图片目前用于PDF导出") + private Map chartImages = new HashMap<>(); + +} diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/dataobject/dataset/ReportDatasetDO.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/dataobject/dataset/ReportDatasetDO.java index d998f5446..3f1cade56 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/dataobject/dataset/ReportDatasetDO.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/dataobject/dataset/ReportDatasetDO.java @@ -46,6 +46,11 @@ public class ReportDatasetDO extends BaseDO { * 数据源id */ private Long datasourceId; + + /** + * bean数据源方法名 + */ + private String method; /** * 动态查询SQL */ diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateService.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateService.java index 232057d53..dbf45136f 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateService.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateService.java @@ -1,5 +1,8 @@ package com.cf.imes.module.report.service.template; +import com.bstek.designer.bean.ReportDefinitionWrapper; +import com.bstek.ureport.export.html.HtmlReport; +import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplatePreviewPageParametersVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO; import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO; @@ -37,13 +40,21 @@ public interface ReportTemplateService { void deleteReportTemplate(Long id); /** - * 获得报表模板信息 + * 获取报表模板信息 * * @param id 编号 * @return 报表模板信息 */ ReportTemplateDO getReportTemplate(Long id); + /** + * 获取模板定义信息(xml+数据源) + * + * @param id + * @return + */ + ReportDefinitionWrapper getReportTemplateDefinition(Long id); + /** * 获得报表模板信息列表 * @@ -51,4 +62,12 @@ public interface ReportTemplateService { * @return 报表模板信息列表 */ List getReportTemplateList(ReportTemplateReqVO pageReqVO); + + /** + * 模板预览 + * + * @param pageParametersVO + * @return + */ + HtmlReport preview(ReportTemplatePreviewPageParametersVO pageParametersVO); } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java index bbe73c9fe..c696a9e4f 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java @@ -1,14 +1,36 @@ package com.cf.imes.module.report.service.template; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.URLUtil; +import com.bstek.designer.bean.PreviewPageParameters; +import com.bstek.designer.bean.PreviewParameters; +import com.bstek.designer.bean.ReportDefinitionWrapper; +import com.bstek.ureport.build.paging.Page; +import com.bstek.ureport.definition.Paper; +import com.bstek.ureport.definition.ReportDefinition; +import com.bstek.ureport.definition.dataset.BeanDatasetDefinition; +import com.bstek.ureport.definition.dataset.DatasetDefinition; +import com.bstek.ureport.definition.dataset.SqlDatasetDefinition; +import com.bstek.ureport.definition.datasource.DatasourceDefinition; +import com.bstek.ureport.definition.datasource.JdbcDatasourceDefinition; +import com.bstek.ureport.definition.datasource.SpringBeanDatasourceDefinition; +import com.bstek.ureport.export.PageBuilder; +import com.bstek.ureport.export.ReportRender; +import com.bstek.ureport.export.SinglePageData; +import com.bstek.ureport.export.html.HtmlProducer; +import com.bstek.ureport.export.html.HtmlReport; +import com.bstek.ureport.export.html.SearchFormData; +import com.bstek.ureport.model.Report; +import com.bstek.ureport.parser.ReportParser; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetReqVO; import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetSaveReqVO; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceReqVO; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO; +import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplatePreviewPageParametersVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO; import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO; @@ -24,8 +46,11 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.io.ByteArrayInputStream; + import java.util.ArrayList; import java.util.List; +import java.util.Map; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -160,6 +185,43 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { return template; } + @Override + public ReportDefinitionWrapper getReportTemplateDefinition(Long id) { + // 查询模板 + ReportTemplateDO template = templateMapper.selectById(id); + String xmlContent = template.getContent(); + // 解析xml + ReportDefinition reportDefinition = new ReportParser().parse(new ByteArrayInputStream(xmlContent.getBytes()), template.getName()); + List datasourceDefinitions = new ArrayList<>(); + if (ObjectUtil.isNotNull(template)) { + // 查询数据源 + List datasourceList = datasourceService.getTemplateDatasourceList(ReportDatasourceReqVO.builder().templateId(template.getId()).build()); + for (ReportDatasourceDO ds : datasourceList) { + // 查询数据集 + List datasetList = datasetService.getDatasetList(ReportDatasetReqVO.builder().datasourceId(ds.getId()).build()); + List datasetDefinitions = new ArrayList<>(); + switch (ds.getType()) { + case JDBC, BUILDIN -> { + // 转换对应的ureport对象 + JdbcDatasourceDefinition jdbcDatasourceDefinition = BeanUtils.toBean(ds, JdbcDatasourceDefinition.class); + datasetDefinitions.addAll(BeanUtils.toBean(datasetList, SqlDatasetDefinition.class)); + jdbcDatasourceDefinition.setDatasets(datasetDefinitions); + datasourceDefinitions.add(jdbcDatasourceDefinition); + } + case SPRING -> { + // 转换对应的ureport对象 + SpringBeanDatasourceDefinition springBeanDatasourceDefinition = BeanUtils.toBean(ds, SpringBeanDatasourceDefinition.class); + datasetDefinitions.addAll(BeanUtils.toBean(datasetList, BeanDatasetDefinition.class)); + springBeanDatasourceDefinition.setDatasets(datasetDefinitions); + datasourceDefinitions.add(springBeanDatasourceDefinition); + } + } + } + } + reportDefinition.setDatasources(datasourceDefinitions); + return new ReportDefinitionWrapper(reportDefinition); + } + @Override public List getReportTemplateList(ReportTemplateReqVO reqVO) { return templateMapper.selectList(new LambdaQueryWrapperX() @@ -169,4 +231,51 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { // 不返回content xml,点击具体的模板中返回xml .select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark)); } + + @Override + public HtmlReport preview(ReportTemplatePreviewPageParametersVO pageParametersVO) { + HtmlProducer htmlProducer = new HtmlProducer(); + ReportRender reportRender = new ReportRender(); + HtmlReport htmlReport = new HtmlReport(); + + // 转换ureport参数 + PreviewPageParameters pageParameters = BeanUtils.toBean(pageParametersVO,PreviewPageParameters.class); + PreviewParameters params = pageParameters.getParams(); + + // 解析xml + ReportDefinition reportDefinition = reportRender.getReportDefinition(URLUtil.decode(params.getContent()), CharsetUtil.UTF_8); + + Map parameters = params.getQuery(); + + Paper paper = reportDefinition.getPaper(); + Report report; + String html; + // 构建html + if (paper.isPageEnabled()) { + // todo 后续有可能做成缓存 + report = reportRender.render(reportDefinition, parameters); + int pageIndex = pageParameters.getPageIndex(); + SinglePageData pageData = PageBuilder.buildSinglePageData(pageIndex, report); + List pages = pageData.getPages(); + html = htmlProducer.produce(report.getContext(), pages, pageData.getColumnMargin(), false); + htmlReport.setTotalPage(pageData.getTotalPages()); + htmlReport.setPageIndex(pageIndex); + if (reportDefinition.getPaper().isColumnEnabled()) { + htmlReport.setColumn(reportDefinition.getPaper().getColumnCount()); + } + } else { + report = reportRender.render(reportDefinition, parameters); + html = htmlProducer.produce(report); + } + htmlReport.setChartDatas(report.getContext().getChartDataMap().values()); + htmlReport.setContent(html); + htmlReport.setStyle(reportDefinition.getStyle()); + SearchFormData searchFormData = reportDefinition.buildSearchFormData(report.getContext().getDatasetMap(),parameters); + htmlReport.setSearchFormData(searchFormData); + htmlReport.setReportAlign(report.getPaper().getHtmlReportAlign().name()); + htmlReport.setBgImage(report.getPaper().getBgImage()); + htmlReport.setFreeze(reportDefinition.getFreeze()); + htmlReport.setFloatImages(reportDefinition.getFloatImages()); + return htmlReport; + } } diff --git a/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar b/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar index 89e49ecad..7f66b483d 100644 Binary files a/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar and b/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar differ diff --git a/cf-module-report/pom.xml b/cf-module-report/pom.xml index 75c3faf31..24f2451e9 100644 --- a/cf-module-report/pom.xml +++ b/cf-module-report/pom.xml @@ -20,4 +20,11 @@ report 模块,主要实现数据可视化报表等功能。 + + + 1.6.1 + 2.11.0 + 4.5.3 + 1.10.0 + diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index df0c49c1f..581fea2c0 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -266,6 +266,7 @@ public interface ErrorCodeConstants { ErrorCode THE_CURRENT_PACKAGE_HAS_AN_UNSEALED_PACKAGE = new ErrorCode(1_002_038_666, "当前包裹还有未封包包裹"); ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_002_038_777, "当前包裹类型错误"); ErrorCode FAILED_TO_MODIFY_THE_STATUS_OF_THE_CURRENT_PRODUCTION_ORDER = new ErrorCode(1_002_038_778, "修改当前生产单的工序状态和生产单的状态失败"); + ErrorCode NO_OPTIMIZATION_INFORMATION_AVAILABLE = new ErrorCode(1_002_038_779, "当前订单无优化信息"); //=========== 应用信息 1-002-037-000 ============ @@ -278,4 +279,8 @@ public interface ErrorCodeConstants { ErrorCode REMAIN_PLATE_STATUS_NO_USED = new ErrorCode(1_002_038_002, "余料板未使用"); ErrorCode REMAIN_PLATE_USR_TYPE = new ErrorCode(1_002_038_003, "余料板使用类型为不可核销类型"); ErrorCode REMAIN_PLATE_ID_NOT_EXISTS = new ErrorCode(1_002_038_004, "未选中余料板,请选择余料板"); + + + //=========== 用户的系统配置 1-002-039-000 ============ + ErrorCode CURRENTLY_NO_CONFIGURATION_AVAILABLE = new ErrorCode(1_002_039_001, "当前没有配置信息,请前往设置配置"); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/datasource/DataSourceApiImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/datasource/DataSourceApiImpl.java index 068a4273b..b8c8635e8 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/datasource/DataSourceApiImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/datasource/DataSourceApiImpl.java @@ -24,6 +24,6 @@ public class DataSourceApiImpl implements DataSourceApi { if(Objects.isNull(dataSourceDO)) { throw exception(new ErrorCode(2133,"数据源不存在")); } - return CommonResult.success(dataSourceDO.getSqlStr()) ; + return null; } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/setting/SettingController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/setting/SettingController.java new file mode 100644 index 000000000..3eaa01b95 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/setting/SettingController.java @@ -0,0 +1,65 @@ +package com.cf.imes.module.system.controller.admin.setting; + + +import com.cf.imes.framework.common.pojo.CommonResult; +import com.cf.imes.module.system.controller.admin.setting.vo.PackageConfigReqVO; +import com.cf.imes.module.system.service.setting.SettingService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + + +import static com.cf.imes.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 系统配置") +@RestController +@RequestMapping("/system/setting") +@Validated +public class SettingController { + + + @Resource + private SettingService settingService; + + + + @PutMapping("/insert") + @Operation(summary = "新增系统配置") + //@PreAuthorize("@ss.hasPermission('system:data-source:query')") + public CommonResult insertSetting( @RequestBody PackageConfigReqVO reqVO ) { + + return success(settingService.insertSetting(reqVO)); + + + } + + + + @PostMapping("/update") + @Operation(summary = "更新系统配置") + //@PreAuthorize("@ss.hasPermission('system:data-source:query')") + public CommonResult updateSetting( @RequestBody PackageConfigReqVO reqVO ) { + + return success(settingService.updateSetting(reqVO)); + + + } + + + @GetMapping("/select") + @Operation(summary = "查看当前用户的配置信息") + @Parameter(name = "type", description = "配置类型", required = true) + public CommonResult selectSetting( @RequestParam("type") Integer type ) { + + return success(settingService.selectSetting(type)); + + + } + + + +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/setting/vo/PackageConfigReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/setting/vo/PackageConfigReqVO.java new file mode 100644 index 000000000..623c04971 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/setting/vo/PackageConfigReqVO.java @@ -0,0 +1,39 @@ +package com.cf.imes.module.system.controller.admin.setting.vo; + + +import com.alibaba.fastjson.JSONObject; +import com.cf.imes.framework.es.core.valid.UpdateGroup; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +@Schema(description = "打包配置信息") +@Data +@ToString(callSuper = true) +public class PackageConfigReqVO { + + + @Schema(description = "主键") + private Long id; + + + @Schema(description = "组织ID") + private Long organId; + + + @Schema(description = "用户ID") + private Long userId; + + + @Schema(description = "配置类型: 1 预打包,2 打包", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer type; + + + @Schema(description = "配置信息", requiredMode = Schema.RequiredMode.REQUIRED) + private JSONObject setting; + + + +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/setting/PackageConfigDO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/setting/PackageConfigDO.java new file mode 100644 index 000000000..1f4b273ad --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/setting/PackageConfigDO.java @@ -0,0 +1,44 @@ +package com.cf.imes.module.system.dal.dataobject.setting; + + +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +@TableName(value = "package_config") +@KeySequence("package_config_seq") +@Data +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PackageConfigDO { + + /** + * 主键 + */ + @TableId + private Long id; + + // 组织 ID,默认为1 + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long organId; + + /** + * 用户ID + */ + private Long userId; + + /** + * 配置类型: 1 预打包,2 打包 + */ + private Integer type; + + + /** + * 配置信息 + */ + private String setting; + + + +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/setting/SettingMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/setting/SettingMapper.java new file mode 100644 index 000000000..93fb6eeb2 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/setting/SettingMapper.java @@ -0,0 +1,26 @@ +package com.cf.imes.module.system.dal.mysql.setting; + +import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.module.system.controller.admin.machine.vo.MachinePageReqVO; +import com.cf.imes.module.system.dal.dataobject.machinetemplate.MachineTemplateDO; +import com.cf.imes.module.system.dal.dataobject.setting.PackageConfigDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; + + +@Mapper +public interface SettingMapper extends BaseMapperX { + + + + default PackageConfigDO selectSetting(Integer type, Long id, Long organId) { + return selectOne( new LambdaQueryWrapperX() + .eqIfPresent(PackageConfigDO::getOrganId,organId) + .eqIfPresent(PackageConfigDO::getUserId,id) + .eqIfPresent(PackageConfigDO::getType,type)); + } + +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingService.java new file mode 100644 index 000000000..d5cdb5ee8 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingService.java @@ -0,0 +1,16 @@ +package com.cf.imes.module.system.service.setting; + + +import com.cf.imes.module.system.controller.admin.setting.vo.PackageConfigReqVO; +import org.springframework.stereotype.Service; + +public interface SettingService { + + + + Long insertSetting(PackageConfigReqVO reqVO); + + Long updateSetting(PackageConfigReqVO reqVO); + + PackageConfigReqVO selectSetting(Integer type); +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingServiceImpl.java new file mode 100644 index 000000000..5df8fa98b --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingServiceImpl.java @@ -0,0 +1,83 @@ +package com.cf.imes.module.system.service.setting; + + +import com.cf.imes.framework.common.util.json.JsonUtils; +import com.cf.imes.framework.common.util.object.BeanUtils; +import com.cf.imes.framework.security.core.LoginUser; +import com.cf.imes.module.system.controller.admin.setting.vo.PackageConfigReqVO; +import com.cf.imes.module.system.dal.dataobject.setting.PackageConfigDO; +import com.cf.imes.module.system.dal.mysql.setting.SettingMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; +import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; + + +@Service +@Validated +public class SettingServiceImpl implements SettingService{ + + + @Resource + private SettingMapper settingMapper; + + + @Override + public Long insertSetting(PackageConfigReqVO reqVO) { + + LoginUser loginUser = getLoginUser(); + PackageConfigDO packageConfigDO = PackageConfigDO.builder() + .userId(loginUser.getId()) + .organId(loginUser.getOrganId()) + .setting(JsonUtils.zipString(reqVO.getSetting().toJSONString())) + .type(reqVO.getType()) + .build(); + + settingMapper.insert(packageConfigDO); + + + return packageConfigDO.getId(); + + } + + + @Override + public Long updateSetting(PackageConfigReqVO reqVO) { + + // 更新 + PackageConfigDO packageConfigDO = settingMapper.selectById(reqVO.getId()); + if (packageConfigDO == null) { + throw exception(CURRENTLY_NO_CONFIGURATION_AVAILABLE); + } + if(reqVO.getSetting() != null) { + packageConfigDO.setSetting(JsonUtils.zipString(reqVO.getSetting().toJSONString())); + } + settingMapper.updateById(packageConfigDO); + + return packageConfigDO.getId(); + } + + + + @Override + public PackageConfigReqVO selectSetting(Integer type) { + + LoginUser loginUser = getLoginUser(); + + PackageConfigDO packageConfigDO = settingMapper.selectSetting(type, loginUser.getId(), loginUser.getOrganId()); + + if (packageConfigDO == null) { + throw exception(CURRENTLY_NO_CONFIGURATION_AVAILABLE); + } + + packageConfigDO.setSetting(JsonUtils.unzipString(packageConfigDO.getSetting())); + + return BeanUtils.toBean(packageConfigDO,PackageConfigReqVO.class); + } + + +}