package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.BaseModel; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.dto.InventoryDto; import com.ruoyi.system.dto.InventoryGoodsDto; import com.ruoyi.system.mapper.*; import com.ruoyi.system.model.*; import com.ruoyi.system.query.TClinicGoodsWarehouseQuery; import com.ruoyi.system.query.TErpGoodsAdminQuery; import com.ruoyi.system.query.TErpGoodsInventoryQuery; import com.ruoyi.system.query.TErpGoodsQuery; import com.ruoyi.system.service.TErpGoodsService; import com.ruoyi.system.service.TErpSupplierInventoryGoodsService; import com.ruoyi.system.vo.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** *

* erp商品 服务实现类 *

* * @author xiaochen * @since 2025-08-20 */ @Service public class TErpGoodsServiceImpl extends ServiceImpl implements TErpGoodsService { @Resource private TErpGoodsTypeMapper erpGoodsTypeMapper; @Resource private TErpGoodsMapper erpGoodsMapper; @Resource private TErpGoodsUnitMapper erpGoodsUnitMapper; @Resource private TErpSupplierInventoryMapper erpSupplierInventoryMapper; @Resource private TErpClinicInventoryMapper erpClinicInventoryMapper; @Resource private TErpSupplierInventoryGoodsMapper erpSupplierInventoryGoodsMapper; @Resource private TErpClinicInventoryGoodsMapper erpClinicInventoryGoodsMapper; @Resource private TErpSupplierWarehousingMapper erpSupplierWarehousingMapper; @Resource private TErpClinicWarehousingMapper erpClinicWarehousingMapper; @Resource private TErpSupplierWarehousingBatchMapper erpSupplierWarehousingBatchMapper; @Resource private TErpClinicWarehousingBatchMapper erpClinicWarehousingBatchMapper; @Resource private TErpSupplierOutboundMapper erpSupplierOutboundMapper; @Resource private TErpClinicOutboundMapper erpClinicOutboundMapper; @Resource private TErpSupplierOutboundGoodsMapper erpSupplierOutboundGoodsMapper; @Resource private TErpClinicOutboundGoodsMapper erpClinicOutboundGoodsMapper; @Resource private TCrmClinicMapper crmClinicMapper; @Resource private TCrmSupplierMapper crmSupplierMapper; @Override public PageInfo pageList(TErpGoodsQuery query, SysUser user) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageList(query, pageInfo, user); if (list.isEmpty()) { return pageInfo; } List typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList()); if (!typeIds.isEmpty()) { List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoodsVO tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); } } List collect = list.stream().filter(e -> e.getGoodsSource() == 1).map(TErpGoods::getSupplierClinicId).collect(Collectors.toList()); if (!collect.isEmpty()) { List crmClinics = crmSupplierMapper.selectBatchIds(collect); for (TErpGoodsVO tErpGoodsVO : list) { crmClinics.stream().filter(t -> t.getId().equals(tErpGoodsVO.getSupplierClinicId())).findFirst().ifPresent(t -> tErpGoodsVO.setSupplierName(t.getSupplierName())); } } pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo pageList1(TErpGoodsQuery query, SysUser user) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageList(query, pageInfo, user); if (list.isEmpty()) { return pageInfo; } List typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList()); if (!typeIds.isEmpty()) { List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoodsVO tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); } } pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo pageAdminList(TErpGoodsAdminQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageAdminList(query, pageInfo); if (list.isEmpty()) { return pageInfo; } List typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList()); if (!typeIds.isEmpty()) { List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoodsVO tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); } } pageInfo.setRecords( list); return pageInfo; } @Override public List listExport(TErpGoodsQuery query, SysUser user) { List list = this.baseMapper.listExport(query, user); if (list.isEmpty()) { return list; } List typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList()); if (!typeIds.isEmpty()) { List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoodsVO tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName()); } } List lowUnitIds = list.stream().map(TErpGoods::getLowUnitId).collect(Collectors.toList()); if (!lowUnitIds.isEmpty()) { List tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(lowUnitIds); for (TErpGoodsVO tErpGoodsVO : list) { tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoodsVO.getLowUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setLowUnitName(t.getUnitName())); } } List packingUnitId = list.stream().map(TErpGoods::getPackingUnitId).collect(Collectors.toList()); if (!packingUnitId.isEmpty()) { List tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId); for (TErpGoodsVO tErpGoodsVO : list) { tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoodsVO.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setPackingUnitName(t.getUnitName())); } } return list; } @Override public boolean isExit(String goodsIdCode, String quasiNumber,String id) { Long size = this.baseMapper.selectCount(new LambdaQueryWrapper<>(TErpGoods.class).ne(id!=null,TErpGoods::getId, id).and(q -> q.eq(TErpGoods::getGoodsIdCode, goodsIdCode).or().eq(TErpGoods::getQuasiNumber, quasiNumber))); if (size > 0) { return true; } return false; } @Override public PageInfo pageInventoryGoodsPageList(TErpGoodsInventoryQuery 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(); } // 当前时间一个月后 Date endDate = DateUtils.addMonths(DateUtils.getNowDate(), 1); PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageInventoryGoodsPageList(query, pageInfo, user,supplierClinicId,endDate); if (list.isEmpty()) { return pageInfo; } List typeIds = list.stream().map(TErpGoodsInventoryVO::getTypeId).collect(Collectors.toList()); if (!typeIds.isEmpty()) { List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoodsInventoryVO tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName()); } } List packingUnitId = list.stream().map(TErpGoodsInventoryVO::getPackingUnitId).collect(Collectors.toList()); if (!packingUnitId.isEmpty()) { List tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId); for (TErpGoodsInventoryVO tErpGoodsVO : list) { tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoodsVO.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setPackingUnitName(t.getUnitName())); } } pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo pageInventoryGoodsPageList1(TErpGoodsInventoryQuery 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(); } // 当前时间一个月后 Date endDate = DateUtils.addMonths(DateUtils.getNowDate(), 1); PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageInventoryGoodsPageList1(query, pageInfo, user,supplierClinicId,endDate); if (list.isEmpty()) { return pageInfo; } List typeIds = list.stream().map(TErpGoodsInventoryVO::getTypeId).collect(Collectors.toList()); if (!typeIds.isEmpty()) { List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoodsInventoryVO tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName()); } } List packingUnitId = list.stream().map(TErpGoodsInventoryVO::getPackingUnitId).collect(Collectors.toList()); if (!packingUnitId.isEmpty()) { List tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId); for (TErpGoodsInventoryVO tErpGoodsVO : list) { tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoodsVO.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setPackingUnitName(t.getUnitName())); } } pageInfo.setRecords(list); return pageInfo; } @Override public List pageInventoryGoodsList(String warehouseId, 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(); } // 当前时间一个月后 Date endDate = DateUtils.addMonths(DateUtils.getNowDate(), 1); List list = this.baseMapper.pageInventoryGoodsList(warehouseId, user,supplierClinicId,endDate); if (list.isEmpty()) { return list; } List typeIds = list.stream().map(TErpGoodsInventoryVO::getTypeId).collect(Collectors.toList()); if (!typeIds.isEmpty()) { List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoodsInventoryVO tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName()); } } List packingUnitId = list.stream().map(TErpGoodsInventoryVO::getPackingUnitId).collect(Collectors.toList()); if (!packingUnitId.isEmpty()) { List tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId); for (TErpGoodsInventoryVO tErpGoodsVO : list) { tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoodsVO.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setPackingUnitName(t.getUnitName())); } } return list; } @Override public List pageInventoryGoodsList1(String warehouseId, 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(); } // 当前时间一个月后 Date endDate = DateUtils.addMonths(DateUtils.getNowDate(), 1); List list = this.baseMapper.pageInventoryGoodsList1(warehouseId, user,supplierClinicId,endDate); if (list.isEmpty()) { return list; } List typeIds = list.stream().map(TErpGoodsInventoryVO::getTypeId).collect(Collectors.toList()); if (!typeIds.isEmpty()) { List typeList = erpGoodsTypeMapper.selectBatchIds(typeIds); for (TErpGoodsInventoryVO tErpGoodsVO : list) { typeList.stream().filter(t -> t.getId().equals(tErpGoodsVO.getTypeId())).findFirst().ifPresent(t -> tErpGoodsVO.setTypeName(t.getTypeName())); tErpGoodsVO.setTypeName(tErpGoodsVO.getTypeName()); } } List packingUnitId = list.stream().map(TErpGoodsInventoryVO::getPackingUnitId).collect(Collectors.toList()); if (!packingUnitId.isEmpty()) { List tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId); for (TErpGoodsInventoryVO tErpGoodsVO : list) { tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoodsVO.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoodsVO.setPackingUnitName(t.getUnitName())); } } return list; } @Override public Page warehouseGoodsPageList(TClinicGoodsWarehouseQuery query, SysUser user, String supplierClinicId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(BaseModel::getDisabled,0); wrapper.eq(TErpGoods::getSupplierClinicId,supplierClinicId).eq(TErpGoods::getGoodsSource,2); if(query.getGoodsName()!=null && !query.getGoodsName().isEmpty()){ wrapper.like(TErpGoods::getGoodsName,query.getGoodsName()); } if(query.getGoodsIdCode()!=null && !query.getGoodsIdCode().isEmpty()){ wrapper.eq(TErpGoods::getGoodsIdCode,query.getGoodsIdCode()); } if(query.getQuasiNumber()!=null && !query.getQuasiNumber().isEmpty()){ wrapper.eq(TErpGoods::getQuasiNumber,query.getQuasiNumber()); } if(query.getTypeId()!=null && !query.getTypeId().isEmpty()){ wrapper.eq(TErpGoods::getTypeId,query.getTypeId()); } wrapper.orderByDesc(BaseModel::getCreateTime); Page page = this.page(new Page<>(query.getPageNum(), query.getPageSize()), wrapper); List records = page.getRecords(); if(records.isEmpty()){ return page; } List packingUnitId = records.stream().map(TErpGoods::getPackingUnitId).collect(Collectors.toList()); if(!packingUnitId.isEmpty()){ List tErpGoodsUnits = erpGoodsUnitMapper.selectBatchIds(packingUnitId); for (TErpGoods tErpGoods : records) { tErpGoodsUnits.stream().filter(t -> t.getId().equals(tErpGoods.getPackingUnitId())).findFirst().ifPresent(t -> tErpGoods.setPackingUnitName(t.getUnitName())); } } page.setRecords( records); return page; } @Override public WarehouseGoodsDetailVo warehouseGoodsDetail(String id) { WarehouseGoodsDetailVo warehouseGoodsDetailVo = new WarehouseGoodsDetailVo(); TErpClinicWarehousing tErpClinicWarehousing = erpClinicWarehousingMapper.selectById(id); warehouseGoodsDetailVo.setCreateTime(tErpClinicWarehousing.getCreateTime()); warehouseGoodsDetailVo.setCreateBy(tErpClinicWarehousing.getCreateBy()); if(tErpClinicWarehousing.getType()==1){ TErpClinicInventory tErpClinicInventory = erpClinicInventoryMapper.selectById(tErpClinicWarehousing.getInventoryId()); warehouseGoodsDetailVo.setInventoryNumber(tErpClinicInventory.getInventoryNumber()); } List tErpClinicWarehousingBatches = erpClinicWarehousingBatchMapper.selectList(new LambdaQueryWrapper().eq(TErpClinicWarehousingBatch::getWarehousingId, id)); for (TErpClinicWarehousingBatch tErpClinicWarehousingBatch : tErpClinicWarehousingBatches) { String goodsId = tErpClinicWarehousingBatch.getGoodsId(); TErpGoods tErpGoods = erpGoodsMapper.selectById(goodsId); String packingUnitId = tErpGoods.getPackingUnitId(); TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(packingUnitId); tErpClinicWarehousingBatch.setUnitName(tErpGoodsUnit.getUnitName()); } warehouseGoodsDetailVo.setList(tErpClinicWarehousingBatches); return warehouseGoodsDetailVo; } @Override public OutboundGoodsDetailVo outboundGoodsDetail(String id) { OutboundGoodsDetailVo outboundGoodsDetailVo = new OutboundGoodsDetailVo(); TErpClinicOutbound tErpClinicOutbound = erpClinicOutboundMapper.selectById(id); outboundGoodsDetailVo.setCreateTime(tErpClinicOutbound.getCreateTime()); outboundGoodsDetailVo.setCreateBy(tErpClinicOutbound.getCreateBy()); outboundGoodsDetailVo.setOutboundType(tErpClinicOutbound.getOutboundType()); outboundGoodsDetailVo.setOrderNumber(tErpClinicOutbound.getOrderNumber()); outboundGoodsDetailVo.setOutboundReason(tErpClinicOutbound.getOutboundReason()); if(tErpClinicOutbound.getOutboundType()==6){ TErpClinicInventory tErpClinicInventory = erpClinicInventoryMapper.selectById(tErpClinicOutbound.getInventoryId()); outboundGoodsDetailVo.setInventoryNumber(tErpClinicInventory.getInventoryNumber()); } ArrayList tErpClinicOutboundGoods1 = new ArrayList<>(); List tErpClinicOutboundGoods = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper().eq(TErpClinicOutboundGoods::getOutboundId, id)); for (TErpClinicOutboundGoods outboundGoods : tErpClinicOutboundGoods) { TErpClinicWarehousing tErpClinicWarehousing = erpClinicWarehousingMapper.selectById(outboundGoods.getWarehousingId()); TErpClinicWarehousingBatch tErpClinicWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(outboundGoods.getWarehousingBatchId()); OutboundGoodsDetailNextVo outboundGoodsDetailNextVo = new OutboundGoodsDetailNextVo(); outboundGoodsDetailNextVo.setWarehouseNo(tErpClinicWarehousing.getWarehouseNo()); outboundGoodsDetailNextVo.setGoodsId(outboundGoods.getGoodsId()); TErpGoods goods = erpGoodsMapper.getGoodsById(outboundGoods.getGoodsId()); outboundGoodsDetailNextVo.setGoodsName(goods.getGoodsName()); outboundGoodsDetailNextVo.setTypeId(goods.getTypeId()); TErpGoodsType tErpGoodsType = erpGoodsTypeMapper.selectById(goods.getTypeId()); outboundGoodsDetailNextVo.setTypeName(tErpGoodsType.getTypeName()); outboundGoodsDetailNextVo.setQuasiNumber(goods.getQuasiNumber()); outboundGoodsDetailNextVo.setBatchNumber(tErpClinicWarehousingBatch.getBatchNumber()); TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId()); outboundGoodsDetailNextVo.setUnitName(tErpGoodsUnit.getUnitName()); List tErpClinicOutboundGoods2 = erpClinicOutboundGoodsMapper.selectList(new LambdaQueryWrapper().eq(TErpClinicOutboundGoods::getWarehousingBatchId, outboundGoods.getWarehousingBatchId())); int sum = tErpClinicOutboundGoods2.stream().mapToInt(TErpClinicOutboundGoods::getOutboundCount).sum(); int count = tErpClinicWarehousingBatch.getPurchaseCount() - sum; outboundGoodsDetailNextVo.setSurplusCount(count); outboundGoodsDetailNextVo.setUnitAmount(tErpClinicWarehousingBatch.getUnitAmount()); outboundGoodsDetailNextVo.setOutboundCount(outboundGoods.getOutboundCount()); outboundGoodsDetailNextVo.setExpiryDate(tErpClinicWarehousingBatch.getExpiryDate()); outboundGoodsDetailNextVo.setTotalAmount(outboundGoodsDetailNextVo.getUnitAmount().multiply(new BigDecimal(outboundGoods.getOutboundCount()))); tErpClinicOutboundGoods1.add(outboundGoodsDetailNextVo); } outboundGoodsDetailVo.setList(tErpClinicOutboundGoods1); return outboundGoodsDetailVo; } @Override @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public void inventoryGoods(InventoryDto dto, 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(); } TErpSupplierInventory tErpSupplierInventory = new TErpSupplierInventory(); String s = DateUtils.dateTimeNow(); tErpSupplierInventory.setInventoryNumber("P" + s); tErpSupplierInventory.setWarehouseId(dto.getWarehouseId()); tErpSupplierInventory.setSupplierId(supplierClinicId); erpSupplierInventoryMapper.insert(tErpSupplierInventory); List dtos = dto.getDtos(); for (InventoryGoodsDto inventoryGoodsDto : dtos) { // 根据入库批次id查询入库信息 TErpSupplierWarehousing tErpSupplierWarehousing = new TErpSupplierWarehousing(); TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch = erpSupplierWarehousingBatchMapper.selectById(inventoryGoodsDto.getId()); String warehousingId = tErpSupplierWarehousingBatch.getWarehousingId(); TErpSupplierWarehousing tErpSupplierWarehousing1 = erpSupplierWarehousingMapper.selectById(warehousingId); TErpGoods erpGoods = this.getById(tErpSupplierWarehousing1.getGoodsId()); // 盘点是盘亏盘盈 赢 if (inventoryGoodsDto.getNum() < inventoryGoodsDto.getInventoryCount()) { // 添加入库信息 tErpSupplierWarehousing.setWarehouseId(dto.getWarehouseId()); tErpSupplierWarehousing.setSupplierId(supplierClinicId); tErpSupplierWarehousing.setGoodsId(tErpSupplierWarehousing1.getGoodsId()); tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName()); tErpSupplierWarehousing.setGoodsCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum()); tErpSupplierWarehousing.setUnitAmount(tErpSupplierWarehousing1.getUnitAmount()); tErpSupplierWarehousing.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(tErpSupplierWarehousing.getGoodsCount()))); // 当前年月日时分秒 String time = DateUtils.dateTimeNow(); tErpSupplierWarehousing.setWarehouseNo("G" + time); tErpSupplierWarehousing.setType(2); erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing); // 添加批次信息 TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpSupplierWarehousingBatch(); tErpSupplierWarehousingBatch1.setWarehousingId(tErpSupplierWarehousing.getId()); tErpSupplierWarehousingBatch1.setWarehousingNumber(tErpSupplierWarehousing.getGoodsCount()); tErpSupplierWarehousingBatch1.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber()); tErpSupplierWarehousingBatch1.setProductionDate(tErpSupplierWarehousingBatch.getProductionDate()); tErpSupplierWarehousingBatch1.setExpiryDate(tErpSupplierWarehousingBatch.getExpiryDate()); erpSupplierWarehousingBatchMapper.insert(tErpSupplierWarehousingBatch1); // 添加盘点信息 TErpSupplierInventoryGoods tErpSupplierInventoryGoods = new TErpSupplierInventoryGoods(); tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId()); tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierWarehousing.getId()); tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch1.getId()); tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount()); tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount()); tErpSupplierInventoryGoods.setInventoryType(1); tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousing1.getGoodsId()); erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods); } else { TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound(); tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId()); tErpSupplierOutbound.setSupplierId(supplierClinicId); tErpSupplierOutbound.setOutboundType(6); tErpSupplierOutbound.setOutboundNumber("G" + s); int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount(); tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count))); erpSupplierOutboundMapper.insert(tErpSupplierOutbound); TErpSupplierOutboundGoods tErpSupplierOutboundGoods = new TErpSupplierOutboundGoods(); tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId()); tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId()); tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId()); tErpSupplierOutboundGoods.setOutboundCount(count); tErpSupplierOutboundGoods.setTotalPrice(tErpSupplierWarehousing1.getUnitAmount().multiply(new BigDecimal(count))); erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods); // 添加盘点信息 TErpSupplierInventoryGoods tErpSupplierInventoryGoods = new TErpSupplierInventoryGoods(); tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId()); tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierOutbound.getId()); tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierOutboundGoods.getId()); tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount()); tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount()); tErpSupplierInventoryGoods.setInventoryType(2); tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousing1.getGoodsId()); erpSupplierInventoryGoodsMapper.insert(tErpSupplierInventoryGoods); } } } @Override public void inventoryGoods1(InventoryDto dto, 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(); } TErpClinicInventory tErpSupplierInventory = new TErpClinicInventory(); String s = DateUtils.dateTimeNow(); tErpSupplierInventory.setInventoryNumber("P" + s); tErpSupplierInventory.setClinicId(supplierClinicId); erpClinicInventoryMapper.insert(tErpSupplierInventory); List dtos = dto.getDtos(); for (InventoryGoodsDto inventoryGoodsDto : dtos) { // 根据入库批次id查询入库信息 TErpClinicWarehousing tErpSupplierWarehousing = new TErpClinicWarehousing(); TErpClinicWarehousingBatch tErpSupplierWarehousingBatch = erpClinicWarehousingBatchMapper.selectById(inventoryGoodsDto.getId()); String warehousingId = tErpSupplierWarehousingBatch.getWarehousingId(); TErpClinicWarehousing tErpSupplierWarehousing1 = erpClinicWarehousingMapper.selectById(warehousingId); TErpGoods erpGoods = this.getById(tErpSupplierWarehousingBatch.getGoodsId()); // 盘点是盘亏盘盈 赢 if (inventoryGoodsDto.getNum() < inventoryGoodsDto.getInventoryCount()) { // 添加入库信息 tErpSupplierWarehousing.setClinicId(supplierClinicId); // tErpSupplierWarehousing.setGoodsId(tErpSupplierWarehousing1.getGoodsId()); // tErpSupplierWarehousing.setGoodsName(erpGoods.getGoodsName()); // tErpSupplierWarehousing.setPurchaseCount(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum()); // tErpSupplierWarehousing.setUnitAmount(erpGoods.getSalesAmount()); tErpSupplierWarehousing.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum()))); // 当前年月日时分秒 String time = DateUtils.dateTimeNow(); tErpSupplierWarehousing.setWarehouseNo("G" + time); tErpSupplierWarehousing.setType(2); tErpSupplierWarehousing.setInventoryId(tErpSupplierInventory.getId()); erpClinicWarehousingMapper.insert(tErpSupplierWarehousing); // 添加批次信息 TErpClinicWarehousingBatch tErpSupplierWarehousingBatch1 = new TErpClinicWarehousingBatch(); tErpSupplierWarehousingBatch1.setWarehousingId(tErpSupplierWarehousing.getId()); tErpSupplierWarehousingBatch1.setWarehousingNumber(inventoryGoodsDto.getInventoryCount() - inventoryGoodsDto.getNum()); tErpSupplierWarehousingBatch1.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber()); tErpSupplierWarehousingBatch1.setProductionDate(tErpSupplierWarehousingBatch.getProductionDate()); tErpSupplierWarehousingBatch1.setExpiryDate(tErpSupplierWarehousingBatch.getExpiryDate()); tErpSupplierWarehousingBatch1.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId()); tErpSupplierWarehousingBatch1.setQuasiNumber(tErpSupplierWarehousingBatch.getQuasiNumber()); tErpSupplierWarehousingBatch1.setPurchaseCount(tErpSupplierWarehousingBatch.getPurchaseCount()); tErpSupplierWarehousingBatch1.setSalesAmount(tErpSupplierWarehousingBatch.getSalesAmount()); tErpSupplierWarehousingBatch1.setUnitAmount(tErpSupplierWarehousingBatch.getUnitAmount()); erpClinicWarehousingBatchMapper.insert(tErpSupplierWarehousingBatch1); // 添加盘点信息 TErpClinicInventoryGoods tErpSupplierInventoryGoods = new TErpClinicInventoryGoods(); tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId()); tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierWarehousing.getId()); tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch1.getId()); tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount()); tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount()); tErpSupplierInventoryGoods.setInventoryType(1); tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId()); erpClinicInventoryGoodsMapper.insert(tErpSupplierInventoryGoods); } else { TErpClinicOutbound tErpSupplierOutbound = new TErpClinicOutbound(); // tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId()); // tErpSupplierOutbound.setSupplierId(supplierClinicId); tErpSupplierOutbound.setOutboundType(6); tErpSupplierOutbound.setOutboundNumber("G" + s); int count = inventoryGoodsDto.getNum() - inventoryGoodsDto.getInventoryCount(); tErpSupplierOutbound.setTotalMoney(erpGoods.getSalesAmount().multiply(new BigDecimal(count))); tErpSupplierOutbound.setInventoryId(tErpSupplierInventory.getId()); erpClinicOutboundMapper.insert(tErpSupplierOutbound); TErpClinicOutboundGoods tErpSupplierOutboundGoods = new TErpClinicOutboundGoods(); tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId()); tErpSupplierOutboundGoods.setWarehousingId(tErpSupplierWarehousing1.getId()); tErpSupplierOutboundGoods.setWarehousingBatchId(tErpSupplierWarehousingBatch.getId()); tErpSupplierOutboundGoods.setOutboundCount(count); tErpSupplierOutboundGoods.setTotalPrice(erpGoods.getSalesAmount().multiply(new BigDecimal(count))); erpClinicOutboundGoodsMapper.insert(tErpSupplierOutboundGoods); // 添加盘点信息 TErpClinicInventoryGoods tErpSupplierInventoryGoods = new TErpClinicInventoryGoods(); tErpSupplierInventoryGoods.setInventoryId(tErpSupplierInventory.getId()); tErpSupplierInventoryGoods.setWarehousingId(tErpSupplierOutbound.getId()); tErpSupplierInventoryGoods.setWarehousingBatchId(tErpSupplierOutboundGoods.getId()); tErpSupplierInventoryGoods.setInventoryCount(inventoryGoodsDto.getInventoryCount()); tErpSupplierInventoryGoods.setDamagedCount(inventoryGoodsDto.getDamagedCount()); tErpSupplierInventoryGoods.setInventoryType(2); tErpSupplierInventoryGoods.setGoodsId(tErpSupplierWarehousingBatch.getGoodsId()); erpClinicInventoryGoodsMapper.insert(tErpSupplierInventoryGoods); } } } }