ContainerServiceImpl.java 2.96 KB
package com.huaheng.pc.general.container.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.containerType.domain.ContainerType;
import com.huaheng.pc.config.containerType.service.ContainerTypeService;
import com.huaheng.pc.general.container.domain.ContainerStatus;
import org.apache.commons.collections.functors.ConstantFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huaheng.pc.general.container.domain.Container;
import com.huaheng.pc.general.container.mapper.ContainerMapper;
import com.huaheng.pc.general.container.service.ContainerService;
@Service
public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container> implements ContainerService{

    @Resource
    private ContainerTypeService containerTypeService;
    @Resource
    private ContainerMapper containerMapper;

    @Override
    public AjaxResult<List<Container>> insertContainer(String type, Integer quantity) {
        List<Container>  containerList = new ArrayList<>();
        Integer number = getNumber(type);
        for(int i=0; i<quantity; i++) {
            number++;
            Container container = new Container();
            container.setContainerType(type);
            container.setCode(String.format("%s%05d", type, number));
            container.setStatus(ContainerStatus.empty.name());
            container.setCreated(new Date());
            container.setCreatedBy(ShiroUtils.getLoginName());
            container.setLastUpdated(null);
            container.setLastUpdatedBy(null);
            container.setEnable(0);
            container.setDeleted(false);
            container.setWarehouseCode(ShiroUtils.getWarehouseCode());
            this.save(container);
            containerList.add(container);
        }
        return AjaxResult.success(containerList);
    }

    private Integer getNumber(String type) {
        if (!containerTypeService.checkConfig(type))
            throw new ServiceException("容器类型编码不存在");
        LambdaQueryWrapper<Container> lambda = Wrappers.lambdaQuery();
        lambda.select(Container::getCode).eq(Container::getContainerType, type)
            .orderByDesc(Container::getId).last("Limit 1");
        String maxCode = containerMapper.selectOne(lambda).getCode();

        //如果指定类型的最后的code存在,那么 code = 容器类型 + (排序号 + 1)
        if (maxCode != null) {
            Integer number = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length()));
            return  number;
        } else {
            return  0;
        }
    }
}