package com.vincent.rsf.server.manager.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.manager.controller.params.InitContainerParams; import com.vincent.rsf.server.manager.entity.WarehouseAreas; import com.vincent.rsf.server.manager.enums.QRCodeType; import com.vincent.rsf.server.manager.mapper.BasContainerMapper; import com.vincent.rsf.server.manager.entity.BasContainer; import com.vincent.rsf.server.manager.service.BasContainerService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vincent.rsf.server.manager.service.WarehouseAreasService; import org.apache.tika.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; @Service("basContainerService") public class BasContainerServiceImpl extends ServiceImpl implements BasContainerService { @Autowired private WarehouseAreasService warehouseAreasService; /** * 容器初始化 * * @param params * @param loginUserId * @return */ @Override @Transactional(rollbackFor = Exception.class) public R init(InitContainerParams params, Long loginUserId) { if (Objects.isNull(params.getStartNo())) { throw new CoolException("容器起始值不能为空!!"); } if (Objects.isNull(params.getEndNo())) { throw new CoolException("容器结束值不能为空!!"); } WarehouseAreas areas = warehouseAreasService.getOne(new LambdaQueryWrapper().eq(WarehouseAreas::getId, 42L)); if (Objects.isNull(areas)) { throw new CoolException("库区不存在,请联系管理员!!"); } if (params.getFlagInit()) { this.remove(new LambdaQueryWrapper<>()); } List containerList = new ArrayList<>(); for (int i = params.getStartNo(); i <= params.getEndNo() ; i++) { BasContainer container = new BasContainer(); String code = StringUtils.leftPad(i + "", params.getLength(), "0"); container.setAreas(areas.getName()) .setCodeType(QRCodeType.QRCODE_TYPE_BARCODE.desc) .setCode(params.getPrefix() + code) .setCreateTime(new Date()) .setCreateBy(loginUserId) .setUpdateBy(loginUserId) .setUpdateTime(new Date()) .setContainerType(params.getContainerType()); containerList.add(container); } if (!this.saveBatch(containerList)) { throw new CoolException("容器保存失败,请检查编码是否有重复!!"); } return R.ok(); } }