From d77e5ae3f0a372a478ac7cc081121273ac9b4331 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期一, 09 十二月 2024 15:07:17 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/entity/param/InventoryErpParam.java | 40 ++++++++++ src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 168 +++++++++++++++++++++++++++++++++++++++++ src/main/java/com/zy/asrs/controller/MobileController.java | 4 src/main/java/com/zy/asrs/controller/WorkController.java | 2 src/main/java/com/zy/asrs/service/MobileService.java | 2 5 files changed, 209 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java index 4fac744..95568e0 100644 --- a/src/main/java/com/zy/asrs/controller/MobileController.java +++ b/src/main/java/com/zy/asrs/controller/MobileController.java @@ -563,8 +563,8 @@ @GetMapping("/checkOut/submit/auth") @ManagerAuth(memo = "鐩樼偣涓婁紶") - public R CheckOutsubmitERP(@RequestParam String orderId){ - + public R CheckOutUploadERP(@RequestParam String orderId){ + mobileService.inventoryUpload(orderId); return R.ok("鐩樼偣鎴愬姛"); } diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java index 5123cc4..a51f4b5 100644 --- a/src/main/java/com/zy/asrs/controller/WorkController.java +++ b/src/main/java/com/zy/asrs/controller/WorkController.java @@ -78,8 +78,6 @@ } EntityWrapper<StaDesc> wrapper2 = new EntityWrapper<>(); - // 涓嶅悓缁ф壙瑙掕壊鏄剧ず涓嶅悓搴撲俊鎭� - RoleUtils.addRoleWrapperByCrn(getUserId(),wrapper2); wrapper2.eq("type_no",103); List<StaDesc> staDescs2 = staDescService.selectList(wrapper2); List<Integer> pickOutSite = staDescs2.stream().map(StaDesc::getStnNo).distinct().collect(Collectors.toList()); diff --git a/src/main/java/com/zy/asrs/entity/param/InventoryErpParam.java b/src/main/java/com/zy/asrs/entity/param/InventoryErpParam.java new file mode 100644 index 0000000..ca88a59 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/InventoryErpParam.java @@ -0,0 +1,40 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +import java.util.List; + +@Data +public class InventoryErpParam { + private DataJson dataJson; + private String methodName = "Update"; + private List<UpdateJson> updateJson; + + + @Data + public static class DataJson{ + private String flowCode = "LIKUwms12GOTmes"; + private String tableCode; + private String logName; + + } + @Data + public static class UpdateJson { + private String orderNo; + private String date; + private List<MatDetails> matDetails; + + + } + @Data + public static class MatDetails{ + private String matnr; + private Integer seq; //搴忓彿 + private String batch; + private String specs; + private Double anfme; + private String locNo; + private String warehouse; + + } +} diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java index 20ebd9e..f9b3707 100644 --- a/src/main/java/com/zy/asrs/service/MobileService.java +++ b/src/main/java/com/zy/asrs/service/MobileService.java @@ -56,4 +56,6 @@ void leftoversOut(Map<String, Object> map, Long userId); void pdaAdjust(pdaAdjustParam param, Long userId); + + void inventoryUpload(String orderId); } diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index a36c07d..9a28eec 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -26,6 +26,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -75,7 +77,9 @@ @Autowired private ManLocDetlMapper manLocDetlMapper; @Resource - private InventoryCheckOrderDetlService inventoryCheckOrderDetlService; + private InventoryCheckOrderService checkOrderService; + @Resource + private InventoryCheckOrderDetlService checkOrderDetlService; @Resource private BasDevpMapper basDevpMapper; @@ -897,7 +901,7 @@ throw new CoolException("鐩樼偣鍒楄〃鍙傛暟涓虹┖"); } for (InventoryCheckOrderDetl orderDetl: param.getParam()){ - InventoryCheckOrderDetl inventoryCheckOrderDetl = inventoryCheckOrderDetlService.selectOne(new EntityWrapper<InventoryCheckOrderDetl>() + InventoryCheckOrderDetl inventoryCheckOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<InventoryCheckOrderDetl>() .eq("order_no", orderDetl.getOrderNo()) .eq("matnr", orderDetl.getMatnr()) .eq("batch", orderDetl.getBatch())); @@ -909,7 +913,7 @@ } inventoryCheckOrderDetl.setCheckAnfme(orderDetl.getCheckAnfme()); inventoryCheckOrderDetl.setStatus("2"); - if (!inventoryCheckOrderDetlService.updateById(inventoryCheckOrderDetl)){ + if (!checkOrderDetlService.updateById(inventoryCheckOrderDetl)){ throw new CoolException("淇濆瓨鐩樼偣淇℃伅澶辫触!"); } @@ -921,6 +925,164 @@ @Override @Transactional + public void inventoryUpload(String orderId) { + if (Cools.isEmpty(orderId)){ + throw new CoolException("鐩樼偣鍗昳d涓虹┖"); + } + InventoryCheckOrder inventoryCheckOrder = checkOrderService.selectById(orderId); + if (Cools.isEmpty(inventoryCheckOrder)){ + throw new CoolException("鏈壘鍒扮洏鐐瑰崟"); + } + if (inventoryCheckOrder.getStatus().equals("2")){ + throw new CoolException("鐩樼偣鍗曞凡鎻愪氦"); + } + int count = checkOrderDetlService.selectCount(new EntityWrapper<InventoryCheckOrderDetl>() + .eq("order_no", inventoryCheckOrder.getOrderNo()).isNull("check_anfme")); + if (count>0){ + throw new CoolException("鏈夋湭瀹屾垚鐨勭洏鐐逛换鍔�"); + } + + List<InventoryCheckOrderDetl> checkOrderProfitDetls = checkOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() + .eq("order_no", inventoryCheckOrder.getOrderNo()) + .addFilter("anfme < check_anfme")); + if (!checkOrderProfitDetls.isEmpty()){ + //鑾峰彇鐩樼泩鍗昿aram + InventoryErpParam erpProfitParam = getErpProfitParam(inventoryCheckOrder, checkOrderProfitDetls); + uploadErp(erpProfitParam); + } + + List<InventoryCheckOrderDetl> checkOrderDeficitDetls = checkOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() + .eq("order_no", inventoryCheckOrder.getOrderNo()) + .addFilter("anfme > check_anfme")); + + if (!checkOrderDeficitDetls.isEmpty()){ + //鑾峰彇鐩樹簭鍗昿aram + InventoryErpParam erpDeficitParam = getErpDeficitParam(inventoryCheckOrder, checkOrderDeficitDetls); + uploadErp(erpDeficitParam); + } + + inventoryCheckOrder.setStatus("2"); + if (!checkOrderService.updateById(inventoryCheckOrder)){ + throw new CoolException("鐘舵�佹洿鏂板け璐�"); + } + + + + + } + + public void uploadErp(InventoryErpParam param){ + String response = ""; + boolean success = false; + try { + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri("10.0.100.160:30108") + .setPath("web/apps/gongqi.df.dataTrans/DTInterFace/doJobWithupdateBody") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("errcode").equals(0)) { + success = true; + } else if (jsonObject.getInteger("errcode").equals(1)) { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(param), response); + throw new CoolException(jsonObject.getString("msg")); + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(param), response); + throw new CoolException("涓婃姤mes绯荤粺澶辫触"); + } + } catch (Exception e) { + log.error("fail", e); + throw new CoolException(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "鐩樼偣鍗曚笂鎶�", + MesConstant.URL + MesConstant.PACK_DOWN_URL, + null, + "127.0.0.1", + JSON.toJSONString(param), + response, + success + ); + } catch (Exception e) { log.error("", e); } + } + } + + public InventoryErpParam getErpProfitParam(InventoryCheckOrder inventoryCheckOrder,List<InventoryCheckOrderDetl> checkOrderProfitDetls) { + Date date = new Date(); + InventoryErpParam erpProfitParam = new InventoryErpParam(); + InventoryErpParam.DataJson dataJson = new InventoryErpParam.DataJson(); + dataJson.setFlowCode("LIKUwms12GOTmes"); + dataJson.setTableCode("DTInventInTable_pdd"); + dataJson.setLogName("鐩樼泩鍗�-鍏ュ簱鍗�"); + erpProfitParam.setDataJson(dataJson); + List<InventoryErpParam.UpdateJson> updateJsonList = new ArrayList<>(); + InventoryErpParam.UpdateJson updateJson = new InventoryErpParam.UpdateJson(); + updateJson.setOrderNo(inventoryCheckOrder.getOrderNo()); + updateJson.setDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); + List<InventoryErpParam.MatDetails> matDetails = new ArrayList<>(); + for (InventoryCheckOrderDetl checkOrderProfitDetl: checkOrderProfitDetls){ + InventoryErpParam.MatDetails matDetail = new InventoryErpParam.MatDetails(); + + Mat mat = matService.selectByMatnr(checkOrderProfitDetl.getMatnr()); + + matDetail.setMatnr(checkOrderProfitDetl.getMatnr()); + matDetail.setBatch(checkOrderProfitDetl.getBatch()); + matDetail.setSpecs(mat.getSpecs()); + Double anfme = new BigDecimal(checkOrderProfitDetl.getCheckAnfme()).subtract(new BigDecimal(checkOrderProfitDetl.getAnfme())).doubleValue(); + matDetail.setAnfme(anfme); + matDetail.setLocNo(checkOrderProfitDetl.getLocNo()); + matDetail.setWarehouse(checkOrderProfitDetl.getArea()); + matDetail.setSeq(updateJson.getMatDetails() == null?1:updateJson.getMatDetails().size()+1); + matDetails.add(matDetail); + } + updateJson.setMatDetails(matDetails); + updateJsonList.add(updateJson); + erpProfitParam.setUpdateJson(updateJsonList); + return erpProfitParam; + } + + public InventoryErpParam getErpDeficitParam(InventoryCheckOrder inventoryCheckOrder,List<InventoryCheckOrderDetl> checkOrderDeficitDetls) { + Date date = new Date(); + InventoryErpParam erpDeficitParam = new InventoryErpParam(); + InventoryErpParam.DataJson dataJson = new InventoryErpParam.DataJson(); + dataJson.setFlowCode("LIKUwms12GOTmes"); + dataJson.setTableCode("DTInventOutTable_pdd"); + dataJson.setLogName("鐩樹簭鍗�-鍑哄簱鍗�"); + erpDeficitParam.setDataJson(dataJson); + List<InventoryErpParam.UpdateJson> updateJsonList2 = new ArrayList<>(); + InventoryErpParam.UpdateJson updateJson2 = new InventoryErpParam.UpdateJson(); + updateJson2.setOrderNo(inventoryCheckOrder.getOrderNo()); + updateJson2.setDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); + List<InventoryErpParam.MatDetails> matDetails = new ArrayList<>(); + for (InventoryCheckOrderDetl checkOrderDeficitDetl: checkOrderDeficitDetls){ + InventoryErpParam.MatDetails matDetail = new InventoryErpParam.MatDetails(); + + Mat mat = matService.selectByMatnr(checkOrderDeficitDetl.getMatnr()); + + matDetail.setMatnr(checkOrderDeficitDetl.getMatnr()); + matDetail.setBatch(checkOrderDeficitDetl.getBatch()); + matDetail.setSpecs(mat.getSpecs()); + Double anfme = new BigDecimal(checkOrderDeficitDetl.getAnfme()).subtract(new BigDecimal(checkOrderDeficitDetl.getCheckAnfme())).doubleValue(); + matDetail.setAnfme(anfme); + matDetail.setLocNo(checkOrderDeficitDetl.getLocNo()); + matDetail.setWarehouse(checkOrderDeficitDetl.getArea()); + matDetail.setSeq(updateJson2.getMatDetails() == null?1:updateJson2.getMatDetails().size()+1); + matDetails.add(matDetail); + } + updateJson2.setMatDetails(matDetails); + updateJsonList2.add(updateJson2); + erpDeficitParam.setUpdateJson(updateJsonList2); + return erpDeficitParam; + } + + @Override + @Transactional public void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl, Double curOutQty, Integer ioType, Long userId, Date now) { // 鑾峰彇搴撲綅 -- Gitblit v1.9.1