package com.glxp.api.service.collect; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.basic.BasicProductsDao; import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.exception.JsonException; import com.glxp.api.req.collect.RelCodeDetailRequest; import com.glxp.api.res.collect.RelCodeDetailResponse; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collections; import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.glxp.api.dao.collect.RelCodeDetailMapper; import com.glxp.api.entity.collect.RelCodeDetail; @Service public class RelCodeDetailService extends ServiceImpl { @Resource private BasicProductsDao basicProductsDao; /** * 扫码获取子集 * @param relCodeDetailRequest * @return */ public RelCodeDetailResponse scanCode(RelCodeDetailRequest relCodeDetailRequest) { String parentCode = relCodeDetailRequest.getParentCode(); if(StrUtil.isBlank(parentCode)){ throw new JsonException("父级码不能为空"); } RelCodeDetailResponse relCodeDetailResponse = new RelCodeDetailResponse(); LambdaQueryWrapper qw = new LambdaQueryWrapper() .eq(BasicProductsEntity::getNameCode, relCodeDetailRequest.getParentCode()) .last("limit 1"); BasicProductsEntity parent = basicProductsDao.selectOne(qw); if(parent == null){ throw new JsonException("产品信息不存在"); } Integer packLevel = Integer.valueOf(parent.getPackLevel()); if(packLevel == 1){ throw new JsonException("产品信息不存在子包装"); } //todo 可能存在多个子集 如何处理 LambdaQueryWrapper qw2 = new LambdaQueryWrapper() .eq(BasicProductsEntity::getUuid, parent.getUuid()) .eq(BasicProductsEntity::getPackLevel,packLevel - 1) .last("limit 1"); BasicProductsEntity subset = basicProductsDao.selectOne(qw2); relCodeDetailResponse.setCurCode(subset.getNameCode()); relCodeDetailResponse.setPackLayer(Integer.valueOf(subset.getPackLevel())); relCodeDetailResponse.setParentCode(parent.getNameCode()); relCodeDetailResponse.setFlag(Integer.valueOf(subset.getMajorStatus())); return relCodeDetailResponse; } /** * 明细列表 * @param relCodeDetailRequest * @return */ public List filterList(RelCodeDetailRequest relCodeDetailRequest) { if (relCodeDetailRequest == null) { return Collections.emptyList(); } if (relCodeDetailRequest.getPage() != null) { int offset = (relCodeDetailRequest.getPage() - 1) * relCodeDetailRequest.getLimit(); PageHelper.offsetPage(offset, relCodeDetailRequest.getLimit()); } return this.baseMapper.filterList(relCodeDetailRequest); } }