#
Junjie
2023-12-30 c269bf1b716a1d45be1ca47a418fdf195968a6e7
#
1个文件已添加
4个文件已修改
207 ■■■■■ 已修改文件
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/LocDetlAdjustParam.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/AdjDetl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/LocDetlAdjustParam.java
New file
@@ -0,0 +1,62 @@
package com.zy.asrs.common.domain.param;
import com.zy.asrs.framework.common.Cools;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by vincent on 2020/6/18
 */
@Data
public class LocDetlAdjustParam {
    // 库位号
    private String locNo;
    // 调整库存明细集合
    private List<LocDetlAdjust> list;
    @Data
    public static class LocDetlAdjust {
        // 商品编号
        private String matnr;
        // 序列码
        private String batch;
        // 变更数量
        private Double count;
        public LocDetlAdjust(String matnr, String batch, Double count) {
            this.matnr = matnr;
            this.batch = batch;
            this.count = count;
        }
    }
    public void integrate() {
        if (Cools.isEmpty(list)) {
            return;
        }
        List<LocDetlAdjust> copyList = new ArrayList<>();
        for (LocDetlAdjust adjust : list) {
            boolean exit = false;
            for (LocDetlAdjust copy : copyList) {
                if (adjust.getMatnr().equals(copy.getMatnr()) && Cools.eq(adjust.getBatch(), copy.getBatch())) {
                    copy.setCount(copy.getCount() + adjust.getCount());
                    exit = true;
                    break;
                }
            }
            if (!exit) {
                copyList.add(new LocDetlAdjust(adjust.getMatnr(), adjust.getBatch(), adjust.getCount()));
            }
        }
        list = copyList;
    }
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/AdjDetl.java
@@ -121,6 +121,12 @@
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date appeTime;
    /**
     * 仓库ID
     */
    @ApiModelProperty(value= "仓库ID")
    private Long hostId;
    public AdjDetl() {}
    public AdjDetl(String locNo,String matnr,String batch,Double oriCtns,Double oriQty,Double oriWt,Double adjCtns,Double adjQty,Double adjWt,String memo,Long modiUser,Date modiTime,Long appeUser,Date appeTime) {
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java
@@ -3,6 +3,7 @@
import com.zy.asrs.common.domain.dto.LocDetlDto;
import com.zy.asrs.common.domain.enums.IoWorkType;
import com.zy.asrs.common.domain.param.FullStoreParam;
import com.zy.asrs.common.domain.param.LocDetlAdjustParam;
import com.zy.asrs.common.domain.param.StockOutParam;
import java.util.List;
@@ -38,5 +39,10 @@
    void stockOut(Integer staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId, Long hostId);
    /**
     * 库存明细调整
     */
    void adjustLocDetl(LocDetlAdjustParam param, Long userId, Long hostId);
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java
@@ -6,6 +6,7 @@
import com.zy.asrs.common.domain.enums.IoWorkType;
import com.zy.asrs.common.domain.enums.WorkNoType;
import com.zy.asrs.common.domain.param.FullStoreParam;
import com.zy.asrs.common.domain.param.LocDetlAdjustParam;
import com.zy.asrs.common.domain.param.StockOutParam;
import com.zy.asrs.common.sys.service.StaDescService;
import com.zy.asrs.common.utils.Utils;
@@ -51,6 +52,8 @@
    private StaDescService staDescService;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private AdjDetlService adjDetlService;
    @Override
    @Transactional
@@ -432,4 +435,126 @@
        }
    }
    @Override
    public void adjustLocDetl(LocDetlAdjustParam param, Long userId, Long hostId) {
        param.integrate();
        LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, param.getLocNo()).eq(LocMast::getHostId, hostId));
        if (Cools.isEmpty(locMast)) {
            throw new CoolException("库位不存在");
        }
        if (!(locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O"))) {
            throw new CoolException("当前库位不可调整!库位状态:" + locMast.getLocSts$());
        }
        Date now = new Date();
        List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, param.getLocNo()).eq(LocDetl::getHostId, hostId));
        List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
        // 修改数量
        Iterator<LocDetl> iterator = locDetls.iterator();
        while (iterator.hasNext()) {
            LocDetl locDetl = iterator.next();
            Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
            while (iterator1.hasNext()) {
                LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
                if (adjust.getCount() == 0) { continue; }
                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
                        // todo 盘点记录
                        // 修改库存
                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), hostId)) {
                            throw new CoolException(locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "序列码修改数量失败");
                        }
                        // 保存调整记录
                        AdjDetl adjDetl = new AdjDetl();
                        adjDetl.setLocNo(locDetl.getLocNo());
                        adjDetl.setMatnr(locDetl.getMatnr());
                        adjDetl.setBatch(locDetl.getBatch());
                        adjDetl.setOriQty(locDetl.getAnfme());
                        adjDetl.setAdjQty(adjust.getCount());
                        adjDetl.setModiTime(now);
                        adjDetl.setModiUser(userId);
                        adjDetl.setAppeTime(now);
                        adjDetl.setAppeUser(userId);
                        adjDetl.setHostId(hostId);
                        adjDetlService.save(adjDetl);
                    }
                    iterator.remove();
                    iterator1.remove();
                }
            }
        }
        // 删除库存
        for (LocDetl locDetl : locDetls) {
            // todo 盘点记录
            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), hostId)) {
                throw new CoolException("删除" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "序列码库存明细失败");
            }
            // 保存调整记录
            AdjDetl adjDetl = new AdjDetl();
            adjDetl.setLocNo(locDetl.getLocNo());
            adjDetl.setMatnr(locDetl.getMatnr());
            adjDetl.setBatch(locDetl.getBatch());
            adjDetl.setOriQty(locDetl.getAnfme());
            adjDetl.setAdjQty(0.0D);
            adjDetl.setModiTime(now);
            adjDetl.setModiUser(userId);
            adjDetl.setAppeTime(now);
            adjDetl.setAppeUser(userId);
            adjDetl.setHostId(hostId);
            adjDetlService.save(adjDetl);
        }
        // 添加库存
        for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
            if (adjust.getCount() == 0.0D) { continue; }
            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, adjust.getMatnr()).eq(Mat::getHostId, hostId));
            LocDetl locDetl = new LocDetl();
            locDetl.sync(mat);
            locDetl.setBatch(adjust.getBatch());
            locDetl.setLocNo(locMast.getLocNo());
            locDetl.setAnfme(adjust.getCount()); // 数量
            locDetl.setModiUser(userId); // 操作人员信息
            locDetl.setModiTime(now);
            locDetl.setAppeUser(userId);
            locDetl.setAppeTime(now);
            locDetl.setHostId(hostId);
            if (!locDetlService.save(locDetl)) {
                throw new CoolException("添加" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "序列码库存明细失败");
            }
            // 保存调整记录
            AdjDetl adjDetl = new AdjDetl();
            adjDetl.setLocNo(locMast.getLocNo());
            adjDetl.setMatnr(adjust.getMatnr());
            adjDetl.setBatch(adjust.getBatch());
            adjDetl.setOriQty(0.0D);
            adjDetl.setAdjQty(adjust.getCount());
            adjDetl.setModiTime(now);
            adjDetl.setModiUser(userId);
            adjDetl.setAppeTime(now);
            adjDetl.setAppeUser(userId);
            adjDetl.setHostId(hostId);
            adjDetlService.save(adjDetl);
        }
        // 修改库位状态
        int count = locDetlService.count(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, locMast.getLocNo()).eq(LocDetl::getHostId, hostId));
        if (locMast.getLocSts().equals("F")) {
            if (count == 0) {
                locMast.setLocSts("D");
            }
        }
        if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
            if (count > 0) {
                locMast.setLocSts("F");
            }
        }
        locMast.setModiUser(userId);
        locMast.setModiTime(new Date());
        if (!locMastService.updateById(locMast)) {
            throw new CoolException("更新库位状态失败");
        }
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wms.controller;
import com.zy.asrs.common.domain.param.FullStoreParam;
import com.zy.asrs.common.domain.param.LocDetlAdjustParam;
import com.zy.asrs.common.domain.param.StockOutParam;
import com.zy.asrs.common.web.BaseController;
import com.zy.asrs.common.wms.service.BasDevpService;
@@ -103,4 +104,11 @@
        return R.ok();
    }
    @RequestMapping("/locDdetl/adjust/start")
    @ManagerAuth(memo = "库存调整")
    public R locDetlAdjustStart(@RequestBody LocDetlAdjustParam param) {
        workService.adjustLocDetl(param, getUserId(), getHostId());
        return R.ok("库存调整成功");
    }
}