package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; import com.klp.domain.WmsInspectionApplication; import com.klp.mapper.WmsInspectionApplicationMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.domain.bo.WmsInspectionTensileDetailBo; import com.klp.domain.vo.WmsInspectionTensileDetailVo; import com.klp.domain.WmsInspectionTensileDetail; import com.klp.mapper.WmsInspectionTensileDetailMapper; import com.klp.service.IWmsInspectionTensileDetailService; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; import java.util.stream.Collectors; /** * 金属材料室温拉伸试验样品明细Service业务层处理 * * @author klp * @date 2026-06-13 */ @RequiredArgsConstructor @Service public class WmsInspectionTensileDetailServiceImpl implements IWmsInspectionTensileDetailService { private final WmsInspectionTensileDetailMapper baseMapper; private final WmsInspectionApplicationMapper applicationMapper; /** * 查询金属材料室温拉伸试验样品明细 */ @Override public WmsInspectionTensileDetailVo queryById(String detailId){ return baseMapper.selectVoById(detailId); } /** * 查询金属材料室温拉伸试验样品明细列表 */ @Override public TableDataInfo queryPageList(WmsInspectionTensileDetailBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询金属材料室温拉伸试验样品明细列表 */ @Override public List queryList(WmsInspectionTensileDetailBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(WmsInspectionTensileDetailBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getTestMainId()), WmsInspectionTensileDetail::getTestMainId, bo.getTestMainId()); lqw.eq(StringUtils.isNotBlank(bo.getSampleNo()), WmsInspectionTensileDetail::getSampleNo, bo.getSampleNo()); lqw.eq(StringUtils.isNotBlank(bo.getSteelCoilNo()), WmsInspectionTensileDetail::getSteelCoilNo, bo.getSteelCoilNo()); lqw.eq(StringUtils.isNotBlank(bo.getRawMaterialNo()), WmsInspectionTensileDetail::getRawMaterialNo, bo.getRawMaterialNo()); lqw.eq(StringUtils.isNotBlank(bo.getSpecification()), WmsInspectionTensileDetail::getSpecification, bo.getSpecification()); lqw.eq(StringUtils.isNotBlank(bo.getMaterial()), WmsInspectionTensileDetail::getMaterial, bo.getMaterial()); lqw.eq(StringUtils.isNotBlank(bo.getRawMaterialFactory()), WmsInspectionTensileDetail::getRawMaterialFactory, bo.getRawMaterialFactory()); lqw.eq(StringUtils.isNotBlank(bo.getProductionTeam()), WmsInspectionTensileDetail::getProductionTeam, bo.getProductionTeam()); lqw.eq(StringUtils.isNotBlank(bo.getSurfaceStatus()), WmsInspectionTensileDetail::getSurfaceStatus, bo.getSurfaceStatus()); lqw.eq(bo.getProductionDate() != null, WmsInspectionTensileDetail::getProductionDate, bo.getProductionDate()); lqw.ge(bo.getProductionDateStart() != null, WmsInspectionTensileDetail::getProductionDate, bo.getProductionDateStart()); lqw.le(bo.getProductionDateEnd() != null, WmsInspectionTensileDetail::getProductionDate, bo.getProductionDateEnd()); lqw.eq(bo.getTestDate() != null, WmsInspectionTensileDetail::getTestDate, bo.getTestDate()); lqw.ge(bo.getTestDateStart() != null, WmsInspectionTensileDetail::getTestDate, bo.getTestDateStart()); lqw.le(bo.getTestDateEnd() != null, WmsInspectionTensileDetail::getTestDate, bo.getTestDateEnd()); lqw.eq(StringUtils.isNotBlank(bo.getSampleDirection()), WmsInspectionTensileDetail::getSampleDirection, bo.getSampleDirection()); lqw.eq(StringUtils.isNotBlank(bo.getSampleSize()), WmsInspectionTensileDetail::getSampleSize, bo.getSampleSize()); lqw.eq(bo.getOriginalGaugeLength() != null, WmsInspectionTensileDetail::getOriginalGaugeLength, bo.getOriginalGaugeLength()); lqw.eq(bo.getFractureGaugeLength() != null, WmsInspectionTensileDetail::getFractureGaugeLength, bo.getFractureGaugeLength()); lqw.eq(bo.getMaxForce() != null, WmsInspectionTensileDetail::getMaxForce, bo.getMaxForce()); lqw.eq(bo.getLowerYieldStrength() != null, WmsInspectionTensileDetail::getLowerYieldStrength, bo.getLowerYieldStrength()); lqw.eq(bo.getTensileStrength() != null, WmsInspectionTensileDetail::getTensileStrength, bo.getTensileStrength()); lqw.eq(bo.getElongation() != null, WmsInspectionTensileDetail::getElongation, bo.getElongation()); lqw.eq(bo.getHardnessHr() != null, WmsInspectionTensileDetail::getHardnessHr, bo.getHardnessHr()); lqw.eq(bo.getHardnessHv() != null, WmsInspectionTensileDetail::getHardnessHv, bo.getHardnessHv()); lqw.eq(bo.getCoatingWeightTop() != null, WmsInspectionTensileDetail::getCoatingWeightTop, bo.getCoatingWeightTop()); lqw.eq(bo.getCoatingWeightBottom() != null, WmsInspectionTensileDetail::getCoatingWeightBottom, bo.getCoatingWeightBottom()); lqw.eq(bo.getCoatingWeightAvg() != null, WmsInspectionTensileDetail::getCoatingWeightAvg, bo.getCoatingWeightAvg()); lqw.eq(bo.getRoughness() != null, WmsInspectionTensileDetail::getRoughness, bo.getRoughness()); lqw.eq(StringUtils.isNotBlank(bo.getBendTest()), WmsInspectionTensileDetail::getBendTest, bo.getBendTest()); lqw.eq(StringUtils.isNotBlank(bo.getBendTestReverse()), WmsInspectionTensileDetail::getBendTestReverse, bo.getBendTestReverse()); lqw.eq(StringUtils.isNotBlank(bo.getBendTestDirection()), WmsInspectionTensileDetail::getBendTestDirection, bo.getBendTestDirection()); lqw.eq(bo.getCuppingValue() != null, WmsInspectionTensileDetail::getCuppingValue, bo.getCuppingValue()); lqw.eq(StringUtils.isNotBlank(bo.getSurfaceStructure()), WmsInspectionTensileDetail::getSurfaceStructure, bo.getSurfaceStructure()); lqw.eq(StringUtils.isNotBlank(bo.getEdgeStatus()), WmsInspectionTensileDetail::getEdgeStatus, bo.getEdgeStatus()); lqw.eq(StringUtils.isNotBlank(bo.getSurfaceQuality()), WmsInspectionTensileDetail::getSurfaceQuality, bo.getSurfaceQuality()); lqw.eq(StringUtils.isNotBlank(bo.getSaltSprayTest()), WmsInspectionTensileDetail::getSaltSprayTest, bo.getSaltSprayTest()); lqw.eq(StringUtils.isNotBlank(bo.getSurfaceTreatment()), WmsInspectionTensileDetail::getSurfaceTreatment, bo.getSurfaceTreatment()); lqw.eq(StringUtils.isNotBlank(bo.getPostTreatment()), WmsInspectionTensileDetail::getPostTreatment, bo.getPostTreatment()); lqw.eq(StringUtils.isNotBlank(bo.getNextProcess()), WmsInspectionTensileDetail::getNextProcess, bo.getNextProcess()); lqw.eq(bo.getCContent() != null, WmsInspectionTensileDetail::getCContent, bo.getCContent()); lqw.eq(bo.getSiContent() != null, WmsInspectionTensileDetail::getSiContent, bo.getSiContent()); lqw.eq(bo.getMnContent() != null, WmsInspectionTensileDetail::getMnContent, bo.getMnContent()); lqw.eq(bo.getPContent() != null, WmsInspectionTensileDetail::getPContent, bo.getPContent()); lqw.eq(bo.getSContent() != null, WmsInspectionTensileDetail::getSContent, bo.getSContent()); lqw.eq(bo.getAlContent() != null, WmsInspectionTensileDetail::getAlContent, bo.getAlContent()); return lqw; } /** * 新增金属材料室温拉伸试验样品明细 */ @Override public Boolean insertByBo(WmsInspectionTensileDetailBo bo) { WmsInspectionTensileDetail add = BeanUtil.toBean(bo, WmsInspectionTensileDetail.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setDetailId(add.getDetailId()); } return flag; } /** * 修改金属材料室温拉伸试验样品明细 */ @Override public Boolean updateByBo(WmsInspectionTensileDetailBo bo) { WmsInspectionTensileDetail update = BeanUtil.toBean(bo, WmsInspectionTensileDetail.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(WmsInspectionTensileDetail entity){ //TODO 做一些数据校验,如唯一约束 } /** * 批量删除金属材料室温拉伸试验样品明细 */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; } /** * 批量插入明细并更新申请单detailIds */ @Override public Boolean batchInsertDetails(Long masterId, Long applicationId, List detailList) { if (CollUtil.isEmpty(detailList)) { return false; } List details = new ArrayList<>(); for (WmsInspectionTensileDetailBo bo : detailList) { bo.setDetailId(null); details.add(BeanUtil.toBean(bo, WmsInspectionTensileDetail.class)); } boolean flag = baseMapper.insertBatch(details); if (flag && masterId != null && applicationId != null) { String detailIds = details.stream() .map(WmsInspectionTensileDetail::getDetailId) .collect(Collectors.joining(",")); applicationMapper.update(null, new LambdaUpdateWrapper() .eq(WmsInspectionApplication::getMainId, masterId) .eq(WmsInspectionApplication::getApplicationId, applicationId) // 同时还要把状态字段改成6 .set(WmsInspectionApplication::getFlowStatus, 6) .set(WmsInspectionApplication::getDetailIds, detailIds)); } return flag; } }