| | |
| | | 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; |
| | |
| | | |
| | | 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; |
| | |
| | | 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(); |
| | |
| | | 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())) { |