From ae7f04be9321ddbe17c46fae8ab05d34e7493f9f Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 19 二月 2025 13:40:06 +0800
Subject: [PATCH] 管理后台bug修改

---
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 115 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..8e8a9b5 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.exception.ServiceException;
+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.enums.BoxProcessEnum;
+import com.sinata.system.enums.BoxStatusEnum;
 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;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -16,5 +35,100 @@
  */
 @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();
+            // 每次生成编号时,确保其为11位
+            String formattedBoxNumber = String.format("%011d", i.longValue());
+            mwBox.setBoxNumber(formattedBoxNumber);
+            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(MwBoxDTO dto) {
+        List<Long> idList = dto.getIdList();
+        List<MwBox> boxList = idList.stream().map(id -> {
+            MwBox mwBox = new MwBox();
+            mwBox.setId(id);
+            mwBox.setStatus(dto.getStatus());
+            mwBox.setRemark(dto.getRemark());
+            return mwBox;
+        }).collect(Collectors.toList());
+        this.updateBatchById(boxList);
+    }
 }

--
Gitblit v1.7.1