skyouc
2025-03-25 2e7e4493e133b9b646da9cd2d635287f14509e4c
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
@@ -1,32 +1,24 @@
package com.vincent.rsf.server.manager.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.LocMastInitParam;
import com.vincent.rsf.server.manager.controller.params.LocModifyParams;
import com.vincent.rsf.server.manager.entity.LocType;
import com.vincent.rsf.server.manager.entity.LocTypeRela;
import com.vincent.rsf.server.manager.entity.WarehouseAreas;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.mapper.LocMapper;
import com.vincent.rsf.server.manager.entity.Loc;
import com.vincent.rsf.server.manager.mapper.LocTypeRelaMapper;
import com.vincent.rsf.server.manager.service.LocService;
import com.vincent.rsf.server.manager.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.manager.service.LocTypeRelaService;
import com.vincent.rsf.server.manager.service.LocTypeService;
import com.vincent.rsf.server.manager.service.WarehouseAreasService;
import org.apache.commons.lang3.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;
import java.util.stream.Collectors;
@Service("locService")
public class LocServiceImpl extends ServiceImpl<LocMapper, Loc> implements LocService {
@@ -36,6 +28,12 @@
    @Autowired
    private LocTypeRelaService locTypeRelaService;
    @Autowired
    private LocAreaRelaService locAreaRelaService;
    @Autowired
    private LocAreaService locAreaService;
    @Autowired
    private LocTypeRelaMapper locTypeRelaMapper;
@@ -67,20 +65,23 @@
        if (!update) {
            throw new CoolException("库位信息修改失败!!");
        }
        return R.ok("操作成功!!");
        return R.ok(loc);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R initLocs(LocMastInitParam param) {
    public R initLocs(LocMastInitParam param, Long loginUserId) {
        //清空表
        if (this.baseMapper.delete(new LambdaUpdateWrapper<>()) < 0) {
            throw new CoolException("数据库初始化失败:老数据删除失败!!");
        }
        WarehouseAreas warehouseAreas = warehouseAreasService.getById(param.getAreaId());
        this.baseMapper.deleteAll();
        WarehouseAreas warehouseAreas = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
                .eq(WarehouseAreas::getWarehouseId, param.getWarehouseId())
                .eq(WarehouseAreas::getId, param.getAreaId()));
        if (Objects.isNull(warehouseAreas)) {
            throw new CoolException("库区不存在!!");
        }
        String join = StringUtils.join(param.getTypeIds(), ",");
        List<Loc> list = new ArrayList<>();
        for (int r = param.getStartRow(); r <= param.getEndRow(); r++) {
@@ -94,10 +95,11 @@
                            .setRow(r)
                            .setCol(b)
                            .setLev(l)
                            .setType(join)
                            .setAreaId(param.getAreaId())
                            .setWarehouseId(warehouseAreas.getWarehouseId())
                            .setType(param.getType());
                            .setUpdateBy(loginUserId)
                            .setCreateBy(loginUserId)
                            .setWarehouseId(warehouseAreas.getWarehouseId());
                    list.add(loc);
                }
            }
@@ -110,7 +112,6 @@
    @Override
    public boolean saveType(Loc loc) {
        List<LocTypeRela> relas =  new ArrayList<>();
        loc.getTypeIds().forEach(id -> {
            LocTypeRela typeRela = new LocTypeRela();
@@ -127,7 +128,6 @@
    @Override
    public boolean updateLoc(Loc loc) {
        locTypeRelaMapper.delete(new LambdaQueryWrapper<LocTypeRela>().eq(LocTypeRela::getLocId, loc.getId()));
        List<LocTypeRela> relas =  new ArrayList<>();
        loc.getTypeIds().forEach(id -> {
            LocTypeRela typeRela = new LocTypeRela();
@@ -140,4 +140,30 @@
        }
        return true;
    }
    @Override
    public R batchBindLocs(LocModifyParams locs) {
        if (locs.getId().isEmpty()) {
            throw new CoolException("库位ID不能为空!!");
        }
        if (Objects.isNull(locs.getLocAreaId())) {
            throw new CoolException("修改库位信息不能为空!!");
        }
        List<LocArea> locAreas = locAreaService.list(new LambdaQueryWrapper<LocArea>().eq(LocArea::getId, locs.getLocAreaId()));
        if (locAreas.isEmpty()) {
            throw new CoolException("库位分区不存在!!");
        }
        List<LocAreaRela> relas = new ArrayList<>();
        locs.getId().forEach(id -> {
            LocAreaRela locAreaRela = new LocAreaRela();
            locAreaRela.setLocId(id)
                    .setLocAreaId(locs.getLocAreaId());
            relas.add(locAreaRela);
        });
        if (!locAreaRelaService.saveBatch(relas)) {
            throw new CoolException("库位分区失败!!");
        }
        return R.ok();
    }
}