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