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