From d0542b6f8b7ead9cea467f12d989eaabb8ec6e60 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 07 一月 2025 17:06:57 +0800
Subject: [PATCH] 添加车辆运输路线记录

---
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningConfigServiceImpl.java |   88 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 85 insertions(+), 3 deletions(-)

diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningConfigServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningConfigServiceImpl.java
index 29f2ab5..88910fb 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningConfigServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningConfigServiceImpl.java
@@ -1,10 +1,27 @@
 package com.sinata.system.service.impl;
 
-import com.sinata.system.domain.MwWarningConfig;
-import com.sinata.system.mapper.MwWarningConfigMapper;
-import com.sinata.system.service.MwWarningConfigService;
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sinata.common.exception.ServiceException;
+import com.sinata.common.utils.CollUtils;
+import com.sinata.system.domain.MwWarningConfig;
+import com.sinata.system.domain.MwWarningConfigItem;
+import com.sinata.system.domain.dto.MwWarningConfigDTO;
+import com.sinata.system.domain.vo.MwWarningConfigItemVO;
+import com.sinata.system.domain.vo.MwWarningConfigVO;
+import com.sinata.system.domain.vo.SysDictDataVO;
+import com.sinata.system.enums.WarningConfigTypeEnum;
+import com.sinata.system.mapper.MwWarningConfigMapper;
+import com.sinata.system.service.ISysDictDataService;
+import com.sinata.system.service.MwWarningConfigItemService;
+import com.sinata.system.service.MwWarningConfigService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -15,6 +32,71 @@
  * @since 2024-12-02
  */
 @Service
+@RequiredArgsConstructor
 public class MwWarningConfigServiceImpl extends ServiceImpl<MwWarningConfigMapper, MwWarningConfig> implements MwWarningConfigService {
+    private final MwWarningConfigItemService mwWarningConfigItemService;
+    private final ISysDictDataService sysDictDataService;
+    /**
+     * 保存设置
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveConfig(MwWarningConfigDTO dto) {
+        MwWarningConfig mwWarningConfig = BeanUtil.copyProperties(dto, MwWarningConfig.class);
+        MwWarningConfig config = lambdaQuery().eq(MwWarningConfig::getType, dto.getType()).last("limit 1").one();
+        if (Objects.nonNull(config)) {
+            mwWarningConfig.setId(config.getId());
+        }
+        saveOrUpdate(mwWarningConfig);
+        if (dto.getType().equals(WarningConfigTypeEnum.MEDICAL_WASTE.getCode()) || dto.getType().equals(WarningConfigTypeEnum.STAGING_ROOM_CAPACITY.getCode())) {
+            if (CollUtils.isEmpty(dto.getWarningConfigItemList())) {
+                throw new ServiceException("预警配置项不能为空");
+            }
+            //清空配置项
+            mwWarningConfigItemService.lambdaUpdate().eq(MwWarningConfigItem::getConfigId, mwWarningConfig.getId()).remove();
+            List<MwWarningConfigItem> mwWarningConfigItems = BeanUtil.copyToList(dto.getWarningConfigItemList(), MwWarningConfigItem.class);
+            mwWarningConfigItems.forEach(item -> {
+                item.setConfigId(mwWarningConfig.getId());
+                item.setId(null);
+            });
+            mwWarningConfigItemService.saveBatch(mwWarningConfigItems);
+        }
+    }
 
+    /**
+     * 根据类型获取配置信息
+     *
+     * @param type
+     * @return
+     */
+    @Override
+    public MwWarningConfigVO getByType(Integer type) {
+        MwWarningConfig mwWarningConfig = lambdaQuery().eq(MwWarningConfig::getType, type).last("limit 1").one();
+        MwWarningConfigVO mwWarningConfigVO = null;
+        if (Objects.nonNull(mwWarningConfig)) {
+            mwWarningConfigVO = BeanUtil.copyProperties(mwWarningConfig, MwWarningConfigVO.class);
+            List<MwWarningConfigItem> mwWarningConfigItems = mwWarningConfigItemService.lambdaQuery().eq(MwWarningConfigItem::getConfigId, mwWarningConfig.getId()).list();
+            if (type.equals(WarningConfigTypeEnum.MEDICAL_WASTE.getCode())) {
+                mwWarningConfigVO.setWarningConfigItemList(BeanUtil.copyToList(mwWarningConfigItems, MwWarningConfigItemVO.class));
+                if (CollUtils.isEmpty(mwWarningConfigItems)) {
+                    List<SysDictDataVO> sysDictDataVOS = sysDictDataService.medicalWasteTypeList();
+                    List<MwWarningConfigItemVO> res = sysDictDataVOS.stream().map(item -> {
+                        MwWarningConfigItemVO vo = new MwWarningConfigItemVO();
+                        vo.setWasteType(item.getDictCode());
+                        vo.setWasteTypeStr(item.getDictLabel());
+                        return vo;
+                    }).collect(Collectors.toList());
+                    mwWarningConfigVO.setWarningConfigItemList(res);
+                }
+
+            }
+            if (type.equals(WarningConfigTypeEnum.STAGING_ROOM_CAPACITY.getCode())) {
+                mwWarningConfigVO.setWarningConfigItemList(BeanUtil.copyToList(mwWarningConfigItems, MwWarningConfigItemVO.class));
+            }
+        }
+        return mwWarningConfigVO;
+    }
 }

--
Gitblit v1.7.1