From ab7b8b5e702989d894620c41fbaa0e2d6904ecd5 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 17 十二月 2024 19:09:03 +0800
Subject: [PATCH] 处置管理接口

---
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java |  107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 106 insertions(+), 1 deletions(-)

diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java
index c2ea591..8706682 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java
@@ -1,10 +1,29 @@
 package com.sinata.system.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.common.enums.BoxProcessEnum;
+import com.sinata.common.enums.BoxStatusEnum;
+import com.sinata.common.exception.ServiceException;
+import com.sinata.common.utils.BeanUtils;
+import com.sinata.common.utils.CollUtils;
+import com.sinata.common.utils.StringUtils;
 import com.sinata.system.domain.MwBox;
+import com.sinata.system.domain.dto.MwBoxDTO;
+import com.sinata.system.domain.query.MwBoxPageQuery;
+import com.sinata.system.domain.vo.BoxStatisticsVO;
+import com.sinata.system.domain.vo.MwBoxVO;
 import com.sinata.system.mapper.MwBoxMapper;
 import com.sinata.system.service.MwBoxService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -16,5 +35,91 @@
  */
 @Service
 public class MwBoxServiceImpl extends ServiceImpl<MwBoxMapper, MwBox> implements MwBoxService {
+    /**
+     * 转运箱数据统计
+     *
+     * @return
+     */
+    @Override
+    public BoxStatisticsVO getBoxStatistics() {
+        BoxStatisticsVO boxStatisticsVO = new BoxStatisticsVO();
+        List<MwBox> boxList = this.list();
+        if (CollUtils.isNotEmpty(boxList)) {
+            boxStatisticsVO.setTotal(boxList.size());
+            boxStatisticsVO.setBrokenCount(boxList.stream().filter(box -> BoxStatusEnum.BROKEN.getCode().equals(box.getStatus())).count());
+            boxStatisticsVO.setLostCount(boxList.stream().filter(box -> BoxStatusEnum.LOST.getCode().equals(box.getStatus())).count());
+            boxStatisticsVO.setDisposeCount(boxList.stream().filter(box -> BoxProcessEnum.DISPOSAL.getCode().equals(box.getStatus())).count());
+            boxStatisticsVO.setHospitalUsingCount(boxList.stream().filter(box -> BoxProcessEnum.HOSPITAL_USING.getCode().equals(box.getStatus())).count());
+            boxStatisticsVO.setTransitingCount(boxList.stream().filter(box -> BoxProcessEnum.TRANSITING.getCode().equals(box.getStatus())).count());
+        }
+        return boxStatisticsVO;
+    }
 
+    /**
+     * 转运箱分页列表
+     *
+     * @param query
+     * @return
+     */
+    @Override
+    public PageDTO<MwBoxVO> pageList(MwBoxPageQuery query) {
+        Page<MwBox> page = this.lambdaQuery()
+                .between(StringUtils.isNotBlank(query.getBoxNumberStart())
+                                && StringUtils.isNotBlank(query.getBoxNumberEnd()),
+                        MwBox::getBoxNumber, query.getBoxNumberStart(), query.getBoxNumberEnd())
+                .eq(Objects.nonNull(query.getStatus()), MwBox::getStatus, query.getStatus())
+                .eq(Objects.nonNull(query.getLink()), MwBox::getLink, query.getLink())
+                .between(Objects.nonNull(query.getLastUseTimeStart())
+                                && Objects.nonNull(query.getLastUseTimeEnd()),
+                        MwBox::getLastUseTime, query.getLastUseTimeStart(), query.getLastUseTimeEnd())
+                .orderByDesc(MwBox::getBoxNumber)
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        return PageDTO.of(page, MwBoxVO.class);
+    }
+
+    /**
+     * 新增转运箱
+     *
+     * @param boxNumberStart
+     * @param boxNumberEnd
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void add(String boxNumberStart, String boxNumberEnd) {
+        String regx = "\\d+";
+        if (boxNumberStart.length() != 11 || boxNumberEnd.length() != 11 || !boxNumberStart.matches(regx) || !boxNumberEnd.matches(regx)) {
+            throw new ServiceException("请输入有效的11位数字编号!");
+        }
+        BigDecimal start = new BigDecimal(boxNumberStart);
+        BigDecimal end = new BigDecimal(boxNumberEnd);
+        if (start.compareTo(end) > 0) {
+            throw new ServiceException("开始编号不能大于结束编号");
+        }
+        List<MwBox> boxList = new ArrayList<>();
+        for (BigDecimal i = start; i.compareTo(end) <= 0; i = i.add(BigDecimal.ONE)) {
+            MwBox mwBox = new MwBox();
+            mwBox.setBoxNumber(i.toString());
+            mwBox.setStatus(BoxStatusEnum.NORMAL.getCode());
+            boxList.add(mwBox);
+        }
+        try {
+            this.saveBatch(boxList);
+        } catch (DuplicateKeyException e) {
+            throw new ServiceException("转运箱编号重复");
+        }
+    }
+
+    /**
+     * 编辑转运箱状态
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void editBatch(List<MwBoxDTO> dtoList) {
+        List<MwBox> mwBoxes = BeanUtils.copyToList(dtoList, MwBox.class);
+        this.updateBatchById(mwBoxes);
+    }
 }

--
Gitblit v1.7.1