package com.gkhy.exam.system.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.common.constant.UserConstant; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.OutsourcedUnqualified; import com.gkhy.exam.system.domain.WarehousingRecord; import com.gkhy.exam.system.domain.WarehousingRecordDetails; import com.gkhy.exam.system.mapper.WarehousingRecordDetailsMapper; import com.gkhy.exam.system.mapper.WarehousingRecordMapper; import com.gkhy.exam.system.service.WarehousingRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; /** *

* 出入库记录主表 服务实现类 *

* * @author hh * @since 2025-08-13 09:16:37 */ @Service public class WarehousingRecordServiceImpl extends ServiceImpl implements WarehousingRecordService { @Autowired private WarehousingRecordMapper warehousingRecordMapper; @Autowired private WarehousingRecordDetailsMapper warehousingRecordDetailsMapper; @Override public CommonPage selectWarehousingRecordList(WarehousingRecord warehousingRecord) { PageUtils.startPage(); List warehousingRecords = warehousingRecordMapper.selectWarehousingRecordList(warehousingRecord); return CommonPage.restPage(warehousingRecords); } @Override @Transactional public CommonResult saveWarehousingRecord(WarehousingRecord warehousingRecord) { List warehousingRecordDetails = warehousingRecord.getWarehousingRecordDetails(); if (ObjectUtil.isEmpty(warehousingRecordDetails)){ return CommonResult.validateFailed("请选择入库记录详情"); } int i = 0; if (warehousingRecord.getId() == null){ warehousingRecord.setCreateTime(LocalDateTime.now()); warehousingRecord.setCreateBy(SecurityUtils.getUsername()); i = warehousingRecordMapper.insert(warehousingRecord); }else { warehousingRecord.setUpdateTime(LocalDateTime.now()); warehousingRecord.setUpdateBy(SecurityUtils.getUsername()); i = warehousingRecordMapper.updateById(warehousingRecord); } if (i > 0){ batchSave(warehousingRecord.getId(), warehousingRecordDetails,warehousingRecord.getDelDetails()); } return CommonResult.success(); } private void batchSave(Long id, List warehousingRecordDetails,List delDetails) { warehousingRecordDetails.stream().filter(item -> item.getId() == null).forEach(item -> { item.setRecordId(id); item.setCreateTime(LocalDateTime.now()); item.setCreateBy(SecurityUtils.getUsername()); warehousingRecordDetailsMapper.insert(item); }); warehousingRecordDetails.stream().filter(item -> item.getId() != null).forEach(item -> { item.setRecordId(id); item.setUpdateTime(LocalDateTime.now()); item.setUpdateBy(SecurityUtils.getUsername()); warehousingRecordDetailsMapper.updateById(item); }); if (delDetails != null){ warehousingRecordDetailsMapper.update(new WarehousingRecordDetails(), new LambdaUpdateWrapper().in(WarehousingRecordDetails::getId, delDetails) .set(WarehousingRecordDetails::getDelFlag, UserConstant.DEPT_DISABLE) .set(WarehousingRecordDetails::getUpdateTime, LocalDateTime.now()) .set(WarehousingRecordDetails::getUpdateBy, SecurityUtils.getUsername())); } } @Override public CommonResult getWarehousingRecord(Long id) { WarehousingRecord warehousingRecord = warehousingRecordMapper.selectById(id); List de = warehousingRecordDetailsMapper.selectList( new LambdaQueryWrapper<>(WarehousingRecordDetails.class).eq(WarehousingRecordDetails::getRecordId, id) .eq(WarehousingRecordDetails::getDelFlag, UserConstant.ENABLE).orderByAsc(WarehousingRecordDetails::getCreateTime)); warehousingRecord.setWarehousingRecordDetails(de); return CommonResult.success(warehousingRecord); } @Override @Transactional public CommonResult deletedWarehousingRecord(Long id) { warehousingRecordMapper.update(new WarehousingRecord(), new LambdaUpdateWrapper().eq(WarehousingRecord::getId, id) .set(WarehousingRecord::getDelFlag, UserConstant.DEPT_DISABLE) .set(WarehousingRecord::getUpdateTime, LocalDateTime.now()) .set(WarehousingRecord::getUpdateBy, SecurityUtils.getUsername())); warehousingRecordDetailsMapper.update(new WarehousingRecordDetails(), new LambdaUpdateWrapper().eq(WarehousingRecordDetails::getRecordId, id) .set(WarehousingRecordDetails::getDelFlag, UserConstant.DEPT_DISABLE) .set(WarehousingRecordDetails::getUpdateTime, LocalDateTime.now()) .set(WarehousingRecordDetails::getUpdateBy, SecurityUtils.getUsername())); return CommonResult.success(); } }