package com.ruoyi.business.service.impl; import java.math.BigDecimal; import java.util.*; import com.ruoyi.business.domain.TAssayItemExtra; import com.ruoyi.business.mapper.TAssayItemExtraMapper; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.mapper.SysUserMapper; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.business.mapper.TAssayItemMapper; import com.ruoyi.business.domain.TAssayItem; import com.ruoyi.business.service.ITAssayItemService; import org.springframework.transaction.annotation.Transactional; /** * 化验项目Service业务层处理 * * @author ruoyi * @date 2025-03-06 */ @Service public class TAssayItemServiceImpl implements ITAssayItemService { @Autowired private TAssayItemMapper tAssayItemMapper; @Autowired private TAssayItemExtraMapper assayItemExtraMapper; @Autowired private SysUserMapper sysUserMapper; /** * 查询化验项目 * * @param id 化验项目主键 * @return 化验项目 */ @Override public TAssayItem selectTAssayItemById(Long id) { TAssayItem tAssayItem = tAssayItemMapper.selectTAssayItemById(id); if(!Objects.isNull(tAssayItem)) this.addExtra(tAssayItem); return tAssayItem; } private void addExtra(TAssayItem tAssayItem) { Long id = tAssayItem.getId(); List fyList = this.assayItemExtraMapper.selectTAssayItemExtraList(TAssayItemExtra.builder().itemId(id).type(0).build()); tAssayItem.setFyList(fyList); tAssayItem.setFyAmount(fyList.stream().map(TAssayItemExtra::getAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO)); List yjList = this.assayItemExtraMapper.selectTAssayItemExtraList(TAssayItemExtra.builder().itemId(id).type(1).build()); tAssayItem.setYjList(yjList); tAssayItem.setYjAmount(yjList.stream().map(TAssayItemExtra::getAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO)); //2025年03月13日11:16:04 额外返回创建人和编辑人对象 String createBy = tAssayItem.getCreateBy(); String updateBy = tAssayItem.getUpdateBy(); if(StringUtils.isNotBlank(createBy)) tAssayItem.setCreateUser(this.sysUserMapper.selectUserById(Long.valueOf(createBy))); if(StringUtils.isNotBlank(updateBy)) tAssayItem.setUpdateUser(this.sysUserMapper.selectUserById(Long.valueOf(updateBy))); } public static void main(String[] args) { /*TAssayItemExtra tAssayItemExtra = new TAssayItemExtra(); tAssayItemExtra.setAmount(BigDecimal.ZERO); TAssayItemExtra tAssayItemExtra1 = new TAssayItemExtra(); tAssayItemExtra1.setAmount(BigDecimal.ZERO); List list = Arrays.asList(tAssayItemExtra, tAssayItemExtra1);*/ List list = new ArrayList<>(); BigDecimal bigDecimal = list.stream().map(TAssayItemExtra::getAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); System.out.println(bigDecimal); } /** * 查询化验项目列表 * * @param tAssayItem 化验项目 * @return 化验项目 */ @Override public List selectTAssayItemList(TAssayItem tAssayItem) { List tAssayItems = tAssayItemMapper.selectTAssayItemList(tAssayItem); if(!CollectionUtils.isEmpty(tAssayItems)){ for (TAssayItem assayItem : tAssayItems) { this.addExtra(assayItem); } } return tAssayItems; } /** * 新增化验项目 * * @param tAssayItem 化验项目 * @return 结果 */ @Override public int insertTAssayItem(TAssayItem tAssayItem) { tAssayItem.setCreateTime(DateUtils.getNowDate()); //存放的是用户ID tAssayItem.setCreateBy(String.valueOf(SecurityUtils.getUserId())); return tAssayItemMapper.insertTAssayItem(tAssayItem); } /** * 修改化验项目 * * @param tAssayItem 化验项目 * @return 结果 */ @Override @Transactional public int updateTAssayItem(TAssayItem tAssayItem) { tAssayItem.setUpdateTime(DateUtils.getNowDate()); //存放的是用户ID tAssayItem.setUpdateBy(String.valueOf(SecurityUtils.getUserId())); //2025年03月14日16:17:49 额外处理明细 this.handleItem(tAssayItem); return tAssayItemMapper.updateTAssayItem(tAssayItem); } private void handleItem(TAssayItem tAssayItem) { addItem(tAssayItem.getFyList(), tAssayItem.getId()); addItem(tAssayItem.getYjList(), tAssayItem.getId()); } private void addItem(List list, Long id) { //先删除以前的关联数据 List tAssayItemExtras = this.assayItemExtraMapper.selectTAssayItemExtraList(TAssayItemExtra.builder().itemId(id).build()); if(!CollectionUtils.isEmpty(tAssayItemExtras)){ for (TAssayItemExtra tAssayItemExtra : tAssayItemExtras) { this.assayItemExtraMapper.deleteTAssayItemExtraById(tAssayItemExtra.getId()); } } //添加新的关联数据 if(!CollectionUtils.isEmpty(list)){ for (TAssayItemExtra tAssayItemExtra : list) { tAssayItemExtra.setCreateBy(String.valueOf(SecurityUtils.getUserId())); tAssayItemExtra.setCreateTime(DateUtils.getNowDate()); this.assayItemExtraMapper.insertTAssayItemExtra(tAssayItemExtra); } } } /** * 批量删除化验项目 * * @param ids 需要删除的化验项目主键 * @return 结果 */ @Override public int deleteTAssayItemByIds(Long[] ids) { return tAssayItemMapper.deleteTAssayItemByIds(ids); } /** * 删除化验项目信息 * * @param id 化验项目主键 * @return 结果 */ @Override public int deleteTAssayItemById(Long id) { return tAssayItemMapper.deleteTAssayItemById(id); } }