自动化立体仓库 - WMS系统
cl
昨天 ad8574ad9f939f52ef31c843fb841a2afcc5fe2e
src/main/java/com/zy/asrs/task/handler/WorkErpReportHandler.java
@@ -22,6 +22,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@@ -77,6 +78,22 @@
        WaitPakin waitPakin = findWaitPakin(wrkMast.getBarcode());
        ErpPakinReportParam param = buildParam(wrkMast, wrkDetls, waitPakin);
        // 庫位轉換
        String locId = param.getLocId();
        String row = locId.substring(0, 2);
        String col = locId.substring(2, 5);
        String lev =  locId.substring(5, 7);
        if(Integer.parseInt(row) >= 37) {
            row = "C" + row;
        } else if(Integer.parseInt(row) >= 13) {
            row = "B" + row;
        } else {
            row = "A" + row;
        }
        String newLocId = row + "-" + col + "-" + lev;
        param.setLocId(newLocId);
        String request = JSON.toJSONString(param);
        String response = "";
        boolean success = false;
@@ -141,13 +158,20 @@
        param.setPalletId(resolvePalletId(wrkMast, wrkDetls));
        param.setAnfme(sumAnfme(wrkDetls));
        param.setLocId(wrkMast.getLocNo());
        param.setWeight(sumWeight(wrkDetls));
//        param.setWeight(sumWeight(wrkDetls));
        param.setWeight(adjustErpReportWeight(wrkMast.getScWeight()));
        param.setCreateTime(formatDate(resolveCreateTime(wrkMast)));
        param.setBizNo(resolveBizNo(wrkDetls, waitPakin));
        param.setStartTime(formatDate(resolveStartTime(wrkMast, waitPakin)));
        return param;
    }
    /** 上报 ERP 重量:称重减固定值,负则按 0 */
    private static BigDecimal adjustErpReportWeight(BigDecimal scWeight) {
        BigDecimal base = scWeight == null ? BigDecimal.ZERO : scWeight;
        BigDecimal v = base.subtract(new BigDecimal("10"));
        return v.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : v;
    }
    private String resolvePalletId(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
        if (!Cools.isEmpty(wrkMast.getBarcode())) {
            return wrkMast.getBarcode();
@@ -170,17 +194,17 @@
        return total;
    }
    private Double sumWeight(List<WrkDetl> wrkDetls) {
        double total = 0D;
        for (WrkDetl wrkDetl : wrkDetls) {
            if (Cools.isEmpty(wrkDetl.getWeight())) {
                continue;
            }
            double qty = Cools.isEmpty(wrkDetl.getAnfme()) ? 1D : wrkDetl.getAnfme();
            total += wrkDetl.getWeight() * qty;
        }
        return total;
    }
//    private Double sumWeight(List<WrkDetl> wrkDetls) {
//        double total = 0D;
//        for (WrkDetl wrkDetl : wrkDetls) {
//            if (Cools.isEmpty(wrkDetl.getWeight())) {
//                continue;
//            }
//            double qty = Cools.isEmpty(wrkDetl.getAnfme()) ? 1D : wrkDetl.getAnfme();
//            total += wrkDetl.getWeight() * qty;
//        }
//        return total;
//    }
    private Date resolveCreateTime(WrkMast wrkMast) {
        if (!Cools.isEmpty(wrkMast.getCrnEndTime())) {