自动化立体仓库 - WMS系统
luxiaotao1123
2021-06-18 15d69d9f596a7529ce5a8b8d5a38b94e5c50b6b6
# 库存跳转上报erp
1个文件已添加
2个文件已修改
103 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/ErpUpload.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/wms/WmsService.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -5,6 +5,7 @@
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
@@ -13,12 +14,11 @@
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.LocDetlDto;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.OutLocDto;
import com.zy.common.model.StartupDto;
import com.zy.common.model.*;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import com.zy.common.service.wms.Result;
import com.zy.common.service.wms.WmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +60,10 @@
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @Autowired
    private WmsService wmsService;
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
    @Override
    @Transactional
@@ -542,12 +546,37 @@
                adjDetl.setOriQty(0.0D);
                adjDetl.setAdjQty(adjust.getCount());
                adjDetlService.save(adjDetl, userId);
                // 上报erp
                String docNum = "CS-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
                Integer docId = 14; // 报溢单
                List<BillDto> dtos = new ArrayList<>();
                BillDto billDto = new BillDto();
                billDto.setMatnr(adjust.getMatnr());
                billDto.setQty(Math.abs(adjust.getCount()));
                dtos.add(billDto);
                Result result = wmsService.erpUpload(dtos, docId, docNum);
                if (result.getCode() != 200) {
                    throw new CoolException("库存调整失败,原因:无法上报至ERP");
                }
            // 修改原库存明细
            } else {
                // 如果数量修改,则更新库存明细
                if (!adjust.getCount().equals(one.getAnfme())) {
                    // 当数量被修改为 0 时,直接清除库存明细
                    if (adjust.getCount() == 0) {
                        // 上报erp
                        String docNum = "CD-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
                        Integer docId = 9; // 报损单
                        List<BillDto> dtos = new ArrayList<>();
                        BillDto billDto = new BillDto();
                        billDto.setMatnr(adjust.getMatnr());
                        billDto.setQty(Math.abs(one.getAnfme()));
                        dtos.add(billDto);
                        Result result = wmsService.erpUpload(dtos, docId, docNum);
                        if (result.getCode() != 200) {
                            throw new CoolException("库存调整失败,原因:无法上报至ERP");
                        }
                        // 删除库存
                        if (!locDetlService.delete(new EntityWrapper<>(one))) {
                            throw new CoolException("清除库存明细失败");
                        }
@@ -561,6 +590,27 @@
                                .eq("matnr", adjust.getMatnr()))) {
                            throw new CoolException("修改库存明细失败");
                        }
                        // 上报erp
                        String docNum;
                        Integer docId;
                        if (one.getAnfme() > adjust.getCount()) {
                            // 报损
                            docNum = "CD-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
                            docId = 9;
                        } else {
                            // 报溢
                            docNum = "CS-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
                            docId = 14;
                        }
                        List<BillDto> dtos = new ArrayList<>();
                        BillDto billDto = new BillDto();
                        billDto.setMatnr(adjust.getMatnr());
                        billDto.setQty(Math.abs(one.getAnfme() - adjust.getCount()));
                        dtos.add(billDto);
                        Result result = wmsService.erpUpload(dtos, docId, docNum);
                        if (result.getCode() != 200) {
                            throw new CoolException("库存调整失败,原因:无法上报至ERP");
                        }
                    }
                    // 保存调整记录
                    AdjDetl adjDetl = new AdjDetl();
src/main/java/com/zy/common/model/ErpUpload.java
New file
@@ -0,0 +1,19 @@
package com.zy.common.model;
import lombok.Data;
import java.util.List;
/**
 * Created by vincent on 2021/6/18
 */
@Data
public class ErpUpload {
    private List<BillDto> dtos;
    private Integer docId;
    private String docNumber;
}
src/main/java/com/zy/common/service/wms/WmsService.java
@@ -1,6 +1,8 @@
package com.zy.common.service.wms;
import com.alibaba.fastjson.JSON;
import com.zy.common.model.BillDto;
import com.zy.common.model.ErpUpload;
import com.zy.common.utils.HttpHandler;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -17,11 +19,6 @@
    @Value("${wms.url}")
    private String wmsUrl;
//    // todo:luxiaotao
//    public Result replenish(List<ReplenishDto> dtos) {
//        return new Result(200, "操作成功", null);
//    }
    public Result replenish(List<ReplenishDto> dtos) {
        try {
            ReplenishParam param = new ReplenishParam();
@@ -39,4 +36,23 @@
        }
    }
    public Result erpUpload(List<BillDto> dtos, Integer docId, String docNumber) {
        try {
            ErpUpload param = new ErpUpload();
            param.setDtos(dtos);
            param.setDocId(docId);
            param.setDocNumber(docNumber);
            String response = new HttpHandler.Builder()
                    .setUri(wmsUrl)
                    .setPath("/open/api/erp/upload")
                    .setJson(JSON.toJSONString(param))
                    .build()
                    .doPost();
            return JSON.parseObject(response, Result.class);
        } catch (IOException e) {
            e.printStackTrace();
            return new Result(500, "服务器异常", null);
        }
    }
}