From 8b51955e56b90c4cc8d298b193018a657deac826 Mon Sep 17 00:00:00 2001 From: 15066119699 Date: Wed, 26 Feb 2025 13:47:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=A6=82=E6=9E=9C=E4=BA=A4?= =?UTF-8?q?=E5=8F=89=E4=B8=A4=E8=A1=8C=EF=BC=8C=E5=86=99=E5=85=A5ebs=20=20?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E4=B8=A4=E8=A1=8C=E6=95=B0=E6=8D=AE=E9=83=BD?= =?UTF-8?q?=E8=A6=81=E4=BC=A0=E8=BF=87=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/TOngoodsshelfController.java | 143 ++++++++++-------- wms-admin/src/main/resources/logback.xml | 29 +++- .../com/ruoyi/business/domain/TEbsOrder.java | 26 +++- .../main/resources/mapper/TEbsOrderMapper.xml | 16 +- 4 files changed, 143 insertions(+), 71 deletions(-) diff --git a/wms-admin/src/main/java/com/ruoyi/web/controller/business/TOngoodsshelfController.java b/wms-admin/src/main/java/com/ruoyi/web/controller/business/TOngoodsshelfController.java index 198c14a..f828df0 100644 --- a/wms-admin/src/main/java/com/ruoyi/web/controller/business/TOngoodsshelfController.java +++ b/wms-admin/src/main/java/com/ruoyi/web/controller/business/TOngoodsshelfController.java @@ -223,26 +223,26 @@ public class TOngoodsshelfController extends BaseController } TOngoodsshelf tOngoodsshelf = tOngoodsshelves.get(0); // 查询当前入库的供应商 - TBaseProvider currentInProvider = tBaseProviderService.getOne(new LambdaQueryWrapper() - .eq(TBaseProvider::getRemark, "1") - .last("limit 1")); - if (currentInProvider == null) { - logger.error("没有正在入库的供应商,请开启后重试。"); - return error("没有正在入库的供应商,请开启后重试。"); - } +// TBaseProvider currentInProvider = tBaseProviderService.getOne(new LambdaQueryWrapper() +// .eq(TBaseProvider::getRemark, "1") +// .last("limit 1")); +// if (currentInProvider == null) { +// logger.error("没有正在入库的供应商,请开启后重试。"); +// return error("没有正在入库的供应商,请开启后重试。"); +// } // 获取温度 - List temperList = temperService.list(new LambdaQueryWrapper() - .eq(Temper::getRkId, "1")); - if (temperList == null || temperList.isEmpty()) { - logger.error("获取温度错误。"); - return error("获取温度错误。"); - } else { - Temper currentTemper = temperList.get(0); - if (currentTemper.getRkDegree().compareTo(currentTemper.getMaxDegree()) >= 0) { - logger.error("入库温度过高。"); - return error("入库温度过高。"); - } - } +// List temperList = temperService.list(new LambdaQueryWrapper() +// .eq(Temper::getRkId, "1")); +// if (temperList == null || temperList.isEmpty()) { +// logger.error("获取温度错误。"); +// return error("获取温度错误。"); +// } else { +// Temper currentTemper = temperList.get(0); +// if (currentTemper.getRkDegree().compareTo(currentTemper.getMaxDegree()) >= 0) { +// logger.error("入库温度过高。"); +// return error("入库温度过高。"); +// } +// } // 入库id String lotId = OrderCodeFactory.getOrderCode("RK", ""); // 创建日期 @@ -256,10 +256,10 @@ public class TOngoodsshelfController extends BaseController sysUser.setUserName(tOngoodsshelf.getUserName()); } - if (!Objects.equals(tOngoodsshelf.getProviderId(), currentInProvider.getProviderId())) { - logger.error("不在入库状态的供应商不允许入库。"); - return error("不在入库状态的供应商不允许入库。"); - } +// if (!Objects.equals(tOngoodsshelf.getProviderId(), currentInProvider.getProviderId())) { +// logger.error("不在入库状态的供应商不允许入库。"); +// return error("不在入库状态的供应商不允许入库。"); +// } tOngoodsshelf.setAgvsts("0"); tOngoodsshelf.setTasktype("0"); tOngoodsshelf.setLotId(lotId); @@ -310,9 +310,10 @@ public class TOngoodsshelfController extends BaseController TEbsOrder queryOrder = new TEbsOrder(); queryOrder.setPhaSegment1(tOngoodsshelve.getWmsorderid());// 订单号 queryOrder.setItemId(Integer.parseInt(tOngoodsshelve.getGoodsTypeid())); - TEbsOrder ebsOrder = itEbsOrderService.selectTEbsOrderList(queryOrder).get(0); - // 开始写入EBS - String paramsWmsRcvProc = JSON.toJSONString(createJsonWmsRcvProc(ebsOrder, tOngoodsshelve)); + List tEbsOrders = itEbsOrderService.selectTEbsOrderList(queryOrder); + + // 开始写入EBS + String paramsWmsRcvProc = JSON.toJSONString(createJsonWmsRcvProc(tEbsOrders, tOngoodsshelve)); logger.info("写入EBS参数:{}", paramsWmsRcvProc); String resultWmsRcvProc = ""; try { @@ -320,25 +321,25 @@ public class TOngoodsshelfController extends BaseController logger.info("写入EBS响应结果:{}", resultWmsRcvProc); } catch (Exception e) { tEbsRecordService.insertTEbsRecord(new TEbsRecord("wmsRcvProc", 2, configService.selectConfigByKey("ebs_ip"), - paramsWmsRcvProc, resultWmsRcvProc, "-1", "写入EBS", tOngoodsshelve.getGoodsid(), ebsOrder.getItemDescription(), tOngoodsshelve.getProduclotid(), tOngoodsshelve.getShelfNum())); + paramsWmsRcvProc, resultWmsRcvProc, "-1", "写入EBS", tOngoodsshelve.getGoodsid(), tEbsOrders.get(0).getItemDescription(), tOngoodsshelve.getProduclotid(), tOngoodsshelve.getShelfNum())); // 接口失败 throw new RuntimeException("连接EBS失败"); } System.out.println(resultWmsRcvProc); if (!JSON.parseObject(resultWmsRcvProc).getBoolean("success")) { tEbsRecordService.insertTEbsRecord(new TEbsRecord("wmsRcvProc", 2, configService.selectConfigByKey("ebs_ip"), - paramsWmsRcvProc, resultWmsRcvProc, "-1", "物料入库写入EBS", tOngoodsshelve.getGoodsid(), ebsOrder.getItemDescription(), tOngoodsshelve.getProduclotid(), tOngoodsshelve.getShelfNum())); + paramsWmsRcvProc, resultWmsRcvProc, "-1", "物料入库写入EBS", tOngoodsshelve.getGoodsid(), tEbsOrders.get(0).getItemDescription(), tOngoodsshelve.getProduclotid(), tOngoodsshelve.getShelfNum())); throw new RuntimeException("写入EBS失败:" + JSON.parseObject(resultWmsRcvProc).getString("msg")); } JSONObject resultJsonWmsRcvProc = (JSONObject) JSON.parseObject(resultWmsRcvProc).get("obj"); JSONObject dataWmsRcvProc = JSON.parseArray(resultJsonWmsRcvProc.getString("rows"), JSONObject.class).get(0); if (!dataWmsRcvProc.getString("processStatus").equals("SUCCESS")) { tEbsRecordService.insertTEbsRecord(new TEbsRecord("wmsRcvProc", 2, configService.selectConfigByKey("ebs_ip"), - paramsWmsRcvProc, resultWmsRcvProc, "-1", "物料入库写入EBS", tOngoodsshelve.getGoodsid(), ebsOrder.getItemDescription(), tOngoodsshelve.getProduclotid(), tOngoodsshelve.getShelfNum())); + paramsWmsRcvProc, resultWmsRcvProc, "-1", "物料入库写入EBS", tOngoodsshelve.getGoodsid(), tEbsOrders.get(0).getItemDescription(), tOngoodsshelve.getProduclotid(), tOngoodsshelve.getShelfNum())); throw new RuntimeException("写入EBS失败"); } tEbsRecordService.insertTEbsRecord(new TEbsRecord("wmsRcvProc", 2, configService.selectConfigByKey("ebs_ip"), - paramsWmsRcvProc, resultWmsRcvProc, "0", "物料入库写入EBS", tOngoodsshelve.getGoodsid(), ebsOrder.getItemDescription(), tOngoodsshelve.getProduclotid(), tOngoodsshelve.getShelfNum())); + paramsWmsRcvProc, resultWmsRcvProc, "0", "物料入库写入EBS", tOngoodsshelve.getGoodsid(), tEbsOrders.get(0).getItemDescription(), tOngoodsshelve.getProduclotid(), tOngoodsshelve.getShelfNum())); // 用于查询检验结果 tOngoodsshelve.setDecid(dataWmsRcvProc.getString("lineLocationId")); // 待检----待检状态无法出库 @@ -390,13 +391,16 @@ public class TOngoodsshelfController extends BaseController TEbsOrder queryOrder = new TEbsOrder(); queryOrder.setPhaSegment1(poOrder);// 订单号 queryOrder.setItemId(itemId); -// queryOrder.setVendorId(tOngoodsshelve.getProviderId()); + logger.info("请求订单号:{}", tOngoodsshelve.getWmsorderid()); List ebsOrders = itEbsOrderService.selectTEbsOrderList(queryOrder); logger.info("查询到的本地缓存订单:{}", JSON.toJSONString(ebsOrders)); if (ebsOrders.size() > 0) {// 本地数据库中缓存过 targetOrders = ebsOrders; + //利用java8的lanmda表达式把数组中的localNum 数量设置为null + targetOrders.forEach(ebsOrder -> ebsOrder.setLocalQuantity(null)); } else { targetOrders = getLinesAll(itemId, poOrder, token.get("access_token").toString()); +// targetOrders =null; logger.info("通过ebs查询到的订单信息:{}", JSON.toJSONString(targetOrders)); if (targetOrders == null) { return "当前入库物料在EBS中没有对应订单!"; @@ -414,11 +418,14 @@ public class TOngoodsshelfController extends BaseController // 当前任务的入库数量 double tempInQuantity = tOngoodsshelve.getShelfNum().doubleValue(); for (TEbsOrder targetOrder : targetOrders) { - // 获取数量 + if(targetOrder.getTotalNum() == null) targetOrder.setTotalNum(0.0); + Double totalNum = targetOrder.getTotalNum(); double msQuantity = targetOrder.getMsQuantity(); - if (msQuantity >= tempInQuantity) { + if (msQuantity-totalNum >= tempInQuantity) { // 更新本地的可接收数量 - targetOrder.setMsQuantity(msQuantity - tempInQuantity); +// targetOrder.setMsQuantity(msQuantity - tempInQuantity); + targetOrder.setTotalNum(tempInQuantity + targetOrder.getTotalNum()); + targetOrder.setLocalQuantity(tempInQuantity); // 物料描述 tOngoodsshelve.setGoodsname(targetOrder.getItemDescription()); // 单位 @@ -429,10 +436,22 @@ public class TOngoodsshelfController extends BaseController tOngoodsshelve.setCustomerId(targetOrder.getVendorName()); // 更新剩余入库数量 tempInQuantity = 0; + logger.info("订单号:{},物料id:{},行号:{},入库数量:{}",poOrder,itemId,targetOrder.getLocalLineNum(),tempInQuantity); break; } else { + // 更新剩余入库数量 + double localQuantity = msQuantity - targetOrder.getTotalNum(); + + tempInQuantity = tempInQuantity - localQuantity; // 更新本地的可接收数量 - targetOrder.setMsQuantity(0.0); +// targetOrder.setMsQuantity(0.0); + + if(localQuantity > 0) { + targetOrder.setLocalQuantity(localQuantity); + logger.info("订单号:{},物料id:{},行号:{},入库数量:{}",poOrder,itemId,targetOrder.getLocalLineNum(),localQuantity); + + } + targetOrder.setTotalNum(msQuantity); // 物料描述 tOngoodsshelve.setGoodsname(targetOrder.getItemDescription()); // 单位 @@ -441,12 +460,13 @@ public class TOngoodsshelfController extends BaseController tOngoodsshelve.setGoodsTypeid(targetOrder.getItemId().toString()); // 供应商名称 tOngoodsshelve.setCustomerId(targetOrder.getVendorName()); - // 更新剩余入库数量 - tempInQuantity -= msQuantity; + + } } if (tempInQuantity > 0) { // 报错信息:入库数量超过EBS内订单数量。这条订单无法同步EBS。 + logger.error("入库数量超过EBS内订单数量。这条订单无法同步EBS==>>{}",tempInQuantity); return "入库数量超过EBS内订单可接收数量。
这条订单无法同步EBS。"; } else { for (TEbsOrder targetOrder : targetOrders) { @@ -749,7 +769,7 @@ public class TOngoodsshelfController extends BaseController * 创建参数Json(写入ebs) * @return */ - public JSONObject createJsonWmsRcvProc(TEbsOrder dataGetAll, TOngoodsshelf tOngoodsshelve) throws ParseException { + public JSONObject createJsonWmsRcvProc(List dataGetAlls, TOngoodsshelf tOngoodsshelve) throws ParseException { // 创建系统参数 JSONObject systemParams = new JSONObject(); systemParams.put("requestId", new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())); @@ -766,28 +786,33 @@ public class TOngoodsshelfController extends BaseController // 创建查询参数 JSONObject baseQueryParams = new JSONObject(); - // 创建数据 - JSONObject businessData = new JSONObject(); - businessData.put("organizationId", configService.selectConfigByKey("organizationId")); - businessData.put("poHeaderId", dataGetAll.getPoHeaderId()); - businessData.put("poLineId", dataGetAll.getPoLineId()); - businessData.put("lineLocationId", dataGetAll.getLineLocationId()); - businessData.put("poDistributionId", dataGetAll.getPoDistributionId()); - businessData.put("itemId", dataGetAll.getItemId()); - businessData.put("quantity", tOngoodsshelve.getShelfNum()); - businessData.put("subInventory", ""); -// businessData.put("subInventory", tOngoodsshelve.getWhseloc()); - businessData.put("locatorId", null); -// businessData.put("locatorId", EbsUtils.LOCATOR_AREA_MAP.get(tOngoodsshelve.getWhseloc())); - if (!"不控制".equals(dataGetAll.getLotControl())) { - businessData.put("lotNumber", tOngoodsshelve.getProduclotid()); - } - businessData.put("receiptDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - businessData.put("expirationDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new SimpleDateFormat("yyyyMMdd").parse("20" + tOngoodsshelve.getExpirationDate()))); - businessData.put("OriginationDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new SimpleDateFormat("yyyyMMdd").parse("20" + tOngoodsshelve.getProductionDate()))); - JSONArray jsonArray = new JSONArray(); - jsonArray.add(businessData); + for(TEbsOrder dataGetAll : dataGetAlls) { + // 创建数据 + if(dataGetAll.getLocalQuantity() != null) { + JSONObject businessData = new JSONObject(); + businessData.put("organizationId", configService.selectConfigByKey("organizationId")); + businessData.put("poHeaderId", dataGetAll.getPoHeaderId()); + businessData.put("poLineId", dataGetAll.getPoLineId()); + businessData.put("lineLocationId", dataGetAll.getLineLocationId()); + businessData.put("poDistributionId", dataGetAll.getPoDistributionId()); + businessData.put("itemId", dataGetAll.getItemId()); + businessData.put("quantity", dataGetAll.getLocalQuantity()); + businessData.put("subInventory", ""); +// businessData.put("subInventory", tOngoodsshelve.getWhseloc()); + businessData.put("locatorId", null); +// businessData.put("locatorId", EbsUtils.LOCATOR_AREA_MAP.get(tOngoodsshelve.getWhseloc())); + if (!"不控制".equals(dataGetAll.getLotControl())) { + businessData.put("lotNumber", tOngoodsshelve.getProduclotid()); + } + businessData.put("receiptDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + businessData.put("expirationDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new SimpleDateFormat("yyyyMMdd").parse("20" + tOngoodsshelve.getExpirationDate()))); + businessData.put("OriginationDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new SimpleDateFormat("yyyyMMdd").parse("20" + tOngoodsshelve.getProductionDate()))); + + jsonArray.add(businessData); + } + } + JSONObject result = new JSONObject(); result.put("systemParams", systemParams); diff --git a/wms-admin/src/main/resources/logback.xml b/wms-admin/src/main/resources/logback.xml index a360583..5fcd64d 100644 --- a/wms-admin/src/main/resources/logback.xml +++ b/wms-admin/src/main/resources/logback.xml @@ -11,7 +11,7 @@ ${log.pattern} - + ${log.path}/sys-info.log @@ -22,6 +22,11 @@ 60 + + + + 10MB + ${log.pattern} @@ -34,7 +39,7 @@ DENY - + ${log.path}/sys-error.log @@ -44,6 +49,11 @@ 60 + + + + 10MB + ${log.pattern} @@ -56,7 +66,7 @@ DENY - + ${log.path}/sys-user.log @@ -66,11 +76,16 @@ 60 + + + + 10MB + ${log.pattern} - + @@ -79,15 +94,15 @@ - + - + - \ No newline at end of file + diff --git a/wms-business/src/main/java/com/ruoyi/business/domain/TEbsOrder.java b/wms-business/src/main/java/com/ruoyi/business/domain/TEbsOrder.java index e81e6d4..aa511b6 100644 --- a/wms-business/src/main/java/com/ruoyi/business/domain/TEbsOrder.java +++ b/wms-business/src/main/java/com/ruoyi/business/domain/TEbsOrder.java @@ -208,10 +208,34 @@ public class TEbsOrder extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createDate; - @Excel(name = "本地行号") + @TableField("localLineNum") private Integer localLineNum; + + @TableField("total_num") + private Double totalNum; + + //本次入库数量 + @TableField(" local_quantity") + private Double localQuantity; + + public Double getLocalQuantity() { + return localQuantity; + } + + public void setLocalQuantity(Double localQuantity) { + this.localQuantity = localQuantity; + } + + public Double getTotalNum() { + return totalNum; + } + + public void setTotalNum(Double totalNum) { + this.totalNum = totalNum; + } + public Integer getLocalLineNum() { return localLineNum; } diff --git a/wms-business/src/main/resources/mapper/TEbsOrderMapper.xml b/wms-business/src/main/resources/mapper/TEbsOrderMapper.xml index 86b2a2d..f5fbe53 100644 --- a/wms-business/src/main/resources/mapper/TEbsOrderMapper.xml +++ b/wms-business/src/main/resources/mapper/TEbsOrderMapper.xml @@ -33,6 +33,8 @@ + + @@ -46,7 +48,7 @@ and itemId = #{itemId} and local_line_num = #{localLineNum} - order by dueDate; + order by local_line_num ASC; @@ -81,6 +83,8 @@ createDate, CREATE_TIME, local_line_num, + total_num, + local_quantity, #{phaSegment1}, @@ -111,8 +115,9 @@ #{dueDate}, #{createDate}, #{createTime}, - #{createTime}, #{localLineNum}, + #{totalNum}, + #{localQuantity}, @@ -143,10 +148,13 @@ lotControl = #{lotControl}, checkPriority = #{checkPriority}, UPDATE_TIME = #{updateTime}, + total_num = #{totalNum}, + local_quantity = #{localQuantity}, - phaSegment1 = #{phaSegment1} and itemId = #{itemId} and dueDate = #{dueDate} - and local_line_num = #{localLineNum} + phaSegment1 = #{phaSegment1} and itemId = #{itemId} + and dueDate = #{dueDate} + and local_line_num = #{localLineNum}