package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.mapper.*; import com.ruoyi.system.model.*; import com.ruoyi.system.query.TErpMaintenanceReminderQuery; import com.ruoyi.system.service.TErpMaintenanceReminderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.vo.TErpMaintenanceReminderDetailVo; import com.ruoyi.system.vo.TErpMaintenanceReminderListVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** *

* erp保养提醒 服务实现类 *

* * @author xiaochen * @since 2025-08-20 */ @Service public class TErpMaintenanceReminderServiceImpl extends ServiceImpl implements TErpMaintenanceReminderService { @Resource private TErpGoodsTypeMapper erpGoodsTypeMapper; @Resource private SysUserMapper sysUserMapper; @Resource private TErpGoodsMapper erpGoodsMapper; @Resource private TErpGoodsUnitMapper erpGoodsUnitMapper; @Resource private TErpSupplierWarehousingBatchMapper erpSupplierWarehousingBatchMapper; @Resource private TErpSupplierWarehousingMapper erpSupplierWarehousingMapper; @Resource private TErpSupplierOutboundGoodsMapper erpSupplierOutboundGoodsMapper; @Resource private TCrmClinicMapper crmClinicMapper; @Resource private TCrmSupplierMapper crmSupplierMapper; @Override public PageInfo pageList(TErpMaintenanceReminderQuery query, SysUser user) { Integer roleType = user.getRoleType(); String supplierClinicId = null; if(roleType == 4){ // 供应商 TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class) .eq(TCrmSupplier::getUserId, user.getUserId()) .last("LIMIT 1")); supplierClinicId =crmSupplier.getId(); } if(roleType == 5){ // 诊所 TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class) .eq(TCrmClinic::getUserId, user.getUserId()) .last("LIMIT 1")); supplierClinicId =crmClinic.getId(); } PageInfo page = new PageInfo<>(query.getPageNum(), query.getPageSize()); // 获取明天的时间 LocalDateTime tomorrow = LocalDateTime.now().plusDays(1); List list=new ArrayList<>(); if(roleType==4){ list = baseMapper.pageList(page, query, user,supplierClinicId,tomorrow); }else { list = baseMapper.pageList1(page, query, user,supplierClinicId,tomorrow); } if(list.isEmpty()){ return page; } List typeIds = list.stream().map(TErpMaintenanceReminderListVo::getTypeId).collect(Collectors.toList()); if(!typeIds.isEmpty()){ List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpMaintenanceReminderListVo tErpMaintenanceReminderListVo : list) { typeList.stream().filter(t -> t.getId().equals(tErpMaintenanceReminderListVo.getTypeId())).findFirst().ifPresent(t -> tErpMaintenanceReminderListVo.setTypeName(t.getTypeName())); } } List personIds = list.stream().map(TErpMaintenanceReminderListVo::getMaintenancePersonId).collect(Collectors.toList()); if(!personIds.isEmpty()){ List userList = sysUserMapper.selectBatchIds(personIds); for (TErpMaintenanceReminderListVo tErpMaintenanceReminderListVo : list) { userList.stream().filter(t ->tErpMaintenanceReminderListVo.getMaintenancePersonId()!=null && t.getUserId().toString().equals(tErpMaintenanceReminderListVo.getMaintenancePersonId().toString())).findFirst().ifPresent(t -> tErpMaintenanceReminderListVo.setMaintenancePersonName(t.getUserName())); } } page.setRecords( list); return page; } @Override public TErpMaintenanceReminderDetailVo detail(String id, SysUser user) { TErpMaintenanceReminderDetailVo tErpMaintenanceReminderDetailVo = new TErpMaintenanceReminderDetailVo(); TErpMaintenanceReminder tErpMaintenanceReminder = baseMapper.selectById(id); tErpMaintenanceReminderDetailVo.setId(tErpMaintenanceReminder.getId()); tErpMaintenanceReminderDetailVo.setMaintenanceTime(tErpMaintenanceReminder.getMaintenanceTime()); tErpMaintenanceReminderDetailVo.setMaintenanceRecord(tErpMaintenanceReminder.getMaintenanceRecord()); tErpMaintenanceReminderDetailVo.setMaintenancePersonId(tErpMaintenanceReminder.getMaintenancePersonId()); if(tErpMaintenanceReminder.getMaintenancePersonId()!=null){ tErpMaintenanceReminderDetailVo.setMaintenancePersonName(sysUserMapper.selectUserById(Long.valueOf(tErpMaintenanceReminder.getMaintenancePersonId())).getUserName()); } tErpMaintenanceReminderDetailVo.setStatus(tErpMaintenanceReminder.getStatus()); String warehousingBatchId = tErpMaintenanceReminder.getWarehousingBatchId(); if(warehousingBatchId != null){ TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch = erpSupplierWarehousingBatchMapper.selectById(warehousingBatchId); tErpMaintenanceReminderDetailVo.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber()); TErpSupplierWarehousing tErpSupplierWarehousing = erpSupplierWarehousingMapper.selectById(tErpSupplierWarehousingBatch.getWarehousingId()); if(tErpSupplierWarehousing!=null){ String goodsId = tErpSupplierWarehousing.getGoodsId(); if(goodsId != null){ TErpGoods goods = erpGoodsMapper.selectById(goodsId); tErpMaintenanceReminderDetailVo.setGoodsName(goods.getGoodsName()); tErpMaintenanceReminderDetailVo.setQuasiNumber(goods.getQuasiNumber()); tErpMaintenanceReminderDetailVo.setGoodsIdCode(goods.getGoodsIdCode()); String packingUnitId = goods.getPackingUnitId(); if(packingUnitId != null){ TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(packingUnitId); tErpMaintenanceReminderDetailVo.setUnitName(tErpGoodsUnit.getUnitName()); } } } List tErpSupplierOutboundGoods = erpSupplierOutboundGoodsMapper.selectList(new LambdaQueryWrapper().eq(TErpSupplierOutboundGoods::getWarehousingBatchId, warehousingBatchId)); int sum = tErpSupplierOutboundGoods.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum(); tErpMaintenanceReminderDetailVo.setNumber(tErpSupplierWarehousingBatch.getWarehousingNumber()-sum); } return tErpMaintenanceReminderDetailVo; } }