diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOrderController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOrderController.java index 1287d977..a5efa24d 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOrderController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOrderController.java @@ -192,7 +192,7 @@ public class OdsProcureOrderController extends BaseController { /** * 用于出库任务页面-确认 * - * @param odsProcureOrder + * @param * @return */ @PostMapping("/addPurchaseOrderOutbound") @@ -201,5 +201,41 @@ public class OdsProcureOrderController extends BaseController { return success(); } + /** + * 托盘状态更新 + * @param wmsTraystatus + * @return + */ + @PostMapping("/TraystatusUpdate") + public AjaxResult TraystatusUpdate(@RequestBody WMSTraystatus wmsTraystatus) { + odsProcureOrderService.TraystatusUpdate(wmsTraystatus); + //托盘状态更新 + return success(); + } + + /** + * 包材半托返库的入库计划下发 + * @param wcsInventoryPlan + * @return + */ + @PostMapping("/InventoryPlanIssuance") + public AjaxResult InventoryPlanIssuance(@RequestBody WCSInventoryPlan wcsInventoryPlan) { + String result= odsProcureOrderService.InventoryPlanIssuance(wcsInventoryPlan); + //托盘状态更新 + return success(result); + } + //http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsOutBoundByPallet + + /** + * 包材指定托盘出库 + * @param wmsDesignatedPalle + * @return + */ + @PostMapping("/DesignatedPalletOutbound") + public AjaxResult DesignatedPalletOutbound(@RequestBody WMSDesignatedPalle wmsDesignatedPalle) { + String result= odsProcureOrderService.DesignatedPalletOutbound(wmsDesignatedPalle); + //托盘状态更新 + return success(result); + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java index b1833e3e..e3dea7e9 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java @@ -141,6 +141,7 @@ public WmsToWCSDTO packingMaterialsOutBoundCompleted(@RequestBody WmsToWCSDTO wc return success(); } + /** * 采购订单接口 */ diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/WCSInventoryPlan.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/WCSInventoryPlan.java new file mode 100644 index 00000000..3e8fc176 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/WCSInventoryPlan.java @@ -0,0 +1,101 @@ +package com.op.wms.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.Date; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class WCSInventoryPlan { + private String reqCode; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date reqTime;//请求时间 + private String rfidNo;//rfid编号 + private String batchNo;//批次号 + private String sku;////物料编码 + private String location;//扫码获取 + private String qty; //数量 + private String qualityStatus;////质检状态 + private String factoryCode; + private String createBy; + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getReqCode() { + return reqCode; + } + + public void setReqCode(String reqCode) { + this.reqCode = reqCode; + } + + public Date getReqTime() { + return reqTime; + } + + public void setReqTime(Date reqTime) { + this.reqTime = reqTime; + } + + public String getRfidNo() { + return rfidNo; + } + + public void setRfidNo(String rfidNo) { + this.rfidNo = rfidNo; + } + + public String getBatchNo() { + return batchNo; + } + + public void setBatchNo(String batchNo) { + this.batchNo = batchNo; + } + + public String getSku() { + return sku; + } + + public void setSku(String sku) { + this.sku = sku; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getQty() { + return qty; + } + + public void setQty(String qty) { + this.qty = qty; + } + + public String getQualityStatus() { + return qualityStatus; + } + + public void setQualityStatus(String qualityStatus) { + this.qualityStatus = qualityStatus; + } +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/WMSDesignatedPalle.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/WMSDesignatedPalle.java new file mode 100644 index 00000000..96113928 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/WMSDesignatedPalle.java @@ -0,0 +1,78 @@ +package com.op.wms.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.Date; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class WMSDesignatedPalle { + private String reqCode; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date reqTime;//请求时间 + private String rfidNo;//rfid编号//如果是空托出库的话,这个字段就传固定的那个物料号 + private String warehouseNo; //仓库编号 + private String factoryCode; + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getWarehouseNo() { + return warehouseNo; + } + + public void setWarehouseNo(String warehouseNo) { + this.warehouseNo = warehouseNo; + } + + private String location;//填包装线 + + private String type; //类型1是托盘出库,2是空托出库计划下发 + + public String getReqCode() { + return reqCode; + } + + public void setReqCode(String reqCode) { + this.reqCode = reqCode; + } + + public Date getReqTime() { + return reqTime; + } + + public void setReqTime(Date reqTime) { + this.reqTime = reqTime; + } + + public String getRfidNo() { + return rfidNo; + } + + public void setRfidNo(String rfidNo) { + this.rfidNo = rfidNo; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} + + diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/WMSTraystatus.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/WMSTraystatus.java new file mode 100644 index 00000000..0b198af3 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/WMSTraystatus.java @@ -0,0 +1,79 @@ +package com.op.wms.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.Date; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class WMSTraystatus { + private String reqCode; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date reqTime;//请求时间 + private String factoryCode; + + private String rfidNo; + ////0代表当前位置为空,用于托盘被人拿走时的位置状态信息更新 + private String locationStatus; + private String location;//当前托盘所处的具体的位置 +//托盘类型:1空托盘 2.进入入库前整理区 + private String palletType; + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getReqCode() { + return reqCode; + } + + public void setReqCode(String reqCode) { + this.reqCode = reqCode; + } + + public Date getReqTime() { + return reqTime; + } + + public void setReqTime(Date reqTime) { + this.reqTime = reqTime; + } + + public String getRfidNo() { + return rfidNo; + } + + public void setRfidNo(String rfidNo) { + this.rfidNo = rfidNo; + } + + public String getLocationStatus() { + return locationStatus; + } + + public void setLocationStatus(String locationStatus) { + this.locationStatus = locationStatus; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getPalletType() { + return palletType; + } + + public void setPalletType(String palletType) { + this.palletType = palletType; + } +} + + diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsOdsMateStorageNewsMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsOdsMateStorageNewsMapper.java index 8b83fd85..6c773134 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsOdsMateStorageNewsMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsOdsMateStorageNewsMapper.java @@ -2,8 +2,10 @@ package com.op.wms.mapper; import java.util.List; +import com.op.wms.domain.WCSInventoryPlan; import com.op.wms.domain.WmsOdsEmStorageNews; import com.op.wms.domain.WmsOdsMateStorageNews; +import com.op.wms.domain.WmsToWCSDTO; /** * 包材库存主表Mapper接口 @@ -61,4 +63,7 @@ public interface WmsOdsMateStorageNewsMapper { public int deleteWmsOdsMateStorageNewsByStorageIds(String[] storageIds); WmsOdsMateStorageNews selectByWhCodeAndMate(WmsOdsEmStorageNews wmsOdsEmStorageNews); + + + WmsOdsMateStorageNews selectBaseProductByCode(WCSInventoryPlan wcsInventoryPlan); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsOdsMateStorageNewsSnMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsOdsMateStorageNewsSnMapper.java index a1ef0cb1..53b79e93 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsOdsMateStorageNewsSnMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsOdsMateStorageNewsSnMapper.java @@ -3,7 +3,9 @@ package com.op.wms.mapper; import java.util.List; import com.op.wms.domain.WmsOdsEmStorageNews; +import com.op.wms.domain.WmsOdsMateStorageNews; import com.op.wms.domain.WmsOdsMateStorageNewsSn; +import com.op.wms.domain.WmsToWCSDTO; /** * 包材库存明细表Mapper接口是 @@ -64,4 +66,6 @@ public interface WmsOdsMateStorageNewsSnMapper { void updatekdd(WmsOdsEmStorageNews wmsOdsEmStorageNews); + + WmsOdsMateStorageNewsSn selectwmsRfidNotwo(WmsToWCSDTO wcsdto); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsRawOrderInSnMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsRawOrderInSnMapper.java index 9a8bb330..bb0b910c 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsRawOrderInSnMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsRawOrderInSnMapper.java @@ -2,6 +2,7 @@ package com.op.wms.mapper; import java.util.List; +import com.op.wms.domain.WCSInventoryPlan; import com.op.wms.domain.WmsRawOrderInSn; import com.op.wms.domain.WmsToWCSDTO; @@ -64,5 +65,6 @@ public interface WmsRawOrderInSnMapper { void updateU1Byid(WmsRawOrderInSn wmsRawOrderInSn); - WmsRawOrderInSn selectwmsRfidNotwo(WmsToWCSDTO wmsToWCSDTO); + + } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java index dd6f4728..8356af22 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java @@ -3,6 +3,7 @@ package com.op.wms.service; import java.util.List; import com.op.common.core.domain.R; +import com.op.common.core.web.domain.AjaxResult; import com.op.wms.domain.*; /** @@ -75,4 +76,10 @@ public interface IOdsProcureOrderService { OrderLine addPurchaseOrderOutbound(OrderLine orderLine); R sapPurchaseOrderSync(SapBackflushMPQuery sapPurchaseOrderQuery); + + void TraystatusUpdate(WMSTraystatus wmsTraystatus); + + String InventoryPlanIssuance(WCSInventoryPlan wcsInventoryPlan); + + String DesignatedPalletOutbound(WMSDesignatedPalle wmsDesignatedPalle); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java index 8b27513d..c770686a 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.op.wms.service.impl; +import com.alibaba.csp.sentinel.util.StringUtil; import com.alibaba.fastjson2.JSONArray; @@ -7,6 +8,7 @@ import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -14,8 +16,7 @@ import java.util.List; import com.op.common.core.domain.R; - - +import com.op.common.core.web.domain.AjaxResult; import okhttp3.OkHttpClient; import okhttp3.MediaType; import okhttp3.RequestBody; @@ -236,7 +237,7 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { wmsOdsMateStorageNewsSnMapper.updateAdd(wmsOdsEmStorageNews); } wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn); - //修改库存--加,并且为冻结的,sap过账后再解 + } @Override @@ -268,7 +269,7 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { orderLine1.setOrderLineNo(String.format("%05d", orderItem)); orderLine1.setBatchNo("00001"); } - String meg= addPurchaseOrderOutboundSAP(orderLine); + String meg= addPurchaseOrderOutboundWCS(orderLine); if ("OK".equals(meg)){//成功 for (OrderLine orderLine1: orderList) { @@ -389,8 +390,266 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { return R.ok(); } + @Override + public void TraystatusUpdate(WMSTraystatus wmsTraystatus) { + //空托从2楼到3楼locationStatus是1,palletType是1 + //空托就不用管了,只给他们发消息就可以了,半托的话,从2楼到3楼返回,后需要下发计划,这样就需要下发入口任务 +// if ("2".equals(wmsTraystatus.getPalletType())){//palletType是半托,从2楼到3楼返回 +// //这个进入入库前整理区--要记录在入库-取消在这里添加记录,在下发任务的时候在添加 +// +// } + TraystatusUpdateWCS(wmsTraystatus); + } + + @Override + public String InventoryPlanIssuance(WCSInventoryPlan wcsInventoryPlan) { + DynamicDataSourceContextHolder.push("ds_" + wcsInventoryPlan.getFactoryCode()); + //根据对应物料编码查询物料名称--如果没有 + String message =""; + WmsOdsMateStorageNews wmsOdsMateStorageNews= wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan); + //wms_raw_order_in_sn + if (wmsOdsMateStorageNews==null){ + //null + message="物料号错误"; + return message; + } + WmsRawOrderInSn wmsRawOrderInSn=new WmsRawOrderInSn(); + wmsRawOrderInSn.setRawOrderInSnId(IdUtils.fastSimpleUUID()); + wmsRawOrderInSn.setUserDefined1("1");//出入库 + wmsRawOrderInSn.setUserDefined2(wcsInventoryPlan.getBatchNo());//批次 + wmsRawOrderInSn.setWhCode("WH02");//厂库编号 + //wmsRawOrderInSn.setPoNo();//采购单号 +// wmsRawOrderInSn.setPoLine(odsProcureOrder.getPoLine());//行项目 + wmsRawOrderInSn.setMaterialCode(wcsInventoryPlan.getSku()); + wmsRawOrderInSn.setMaterialDesc(wmsOdsMateStorageNews.getMaterialDesc()); + wmsRawOrderInSn.setAmount(new BigDecimal(wcsInventoryPlan.getQty())); + wmsRawOrderInSn.setCreateBy(wcsInventoryPlan.getCreateBy()); + wmsRawOrderInSn.setGmtCreate(new Date()); + wmsRawOrderInSn.setActiveFlag("1"); + wmsRawOrderInSn.setUserDefined4(wmsOdsMateStorageNews.getUserDefined1());//单位 + wmsRawOrderInSn.setSn(wcsInventoryPlan.getRfidNo());//托盘号 + wmsRawOrderInSn.setFactoryCode(wcsInventoryPlan.getFactoryCode()); + //wmsRawOrderInSn.setUserDefined3(order.getID());//返库的入库记录 + wmsRawOrderInSnMapper.insertWmsRawOrderInSn(wmsRawOrderInSn); + String tem= InventoryPlanIssuanceWCS(wcsInventoryPlan); + if ("OK".equals(tem)){ + message="操作成功"; + } + return message; + } + + @Override + public String DesignatedPalletOutbound(WMSDesignatedPalle wmsDesignatedPalle) { + DynamicDataSourceContextHolder.push("ds_" + wmsDesignatedPalle.getFactoryCode()); + String result=""; + if ("1".equals(wmsDesignatedPalle.getType())){//类型1是托盘出库,2是空托出库计划下发 + String meg= DesignatedPalletOutboundWCS(wmsDesignatedPalle); + if ("OK".equals(meg)){//成功 rfidNo + WmsToWCSDTO wcsdto =new WmsToWCSDTO(); + wcsdto.setRfidNo(wmsDesignatedPalle.getRfidNo()); + WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn= wmsOdsMateStorageNewsSnMapper.selectwmsRfidNotwo(wcsdto); + WCSInventoryPlan wcsInventoryPlan=new WCSInventoryPlan(); + wcsInventoryPlan.setSku(wmsOdsMateStorageNewsSn.getMaterialCode()); + WmsOdsMateStorageNews wmsOdsMateStorageNews= wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan); + + OdsProcureOutOrder odsProcureOutOrder=new OdsProcureOutOrder(); + odsProcureOutOrder.setID(IdUtils.fastSimpleUUID()); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(); + String formattedDate = dateFormat.format(date); + odsProcureOutOrder.setProduceCode("DE"+formattedDate); + odsProcureOutOrder.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode()); + odsProcureOutOrder.setMaterialDesc(wmsOdsMateStorageNewsSn.getMaterialDesc()); + odsProcureOutOrder.setPlanDate(new Date()); + odsProcureOutOrder.setUnit(wmsOdsMateStorageNews.getUserDefined1()); + odsProcureOutOrder.setProductionLineCode(wmsDesignatedPalle.getLocation()); + odsProcureOutOrder.setUserDefined1(formattedDate); + odsProcureOutOrder.setActive("1"); + odsProcureOutOrder.setOrderStatus("1"); + odsProcureOutOrder.setPlanNumber(wmsOdsMateStorageNewsSn.getAmount()); + odsProcureOutOrder.setUserDefined2("00001");//行项目 + //odsProcureOutOrder.set + odsProcureOutOrderMapper.insertOdsProcureOutOrder(odsProcureOutOrder); + result="操作成功"; + return result; + } + }else { + OrderLine orderLine=new OrderLine(); + orderLine.setWarehouseNo("WH02"); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(); + String formattedDate = dateFormat.format(date); + orderLine.setOrderNo(formattedDate);//,如果是空托盘垛的需求可以随机生成一个 + List list=new ArrayList<>(); + Integer orderItem = 1; + OrderLine orderLine1=new OrderLine(); + orderLine1.setOrderLineNo(String.format("%05d", orderItem)); + orderLine1.setSku(wmsDesignatedPalle.getRfidNo()); + list.add(orderLine1); + orderLine.setList(list); + String message= addPurchaseOrderOutboundTwoWCS(orderLine); + if ("OK".equals(message)) {//成功 + result="操作成功"; + return result; + } + } + + return result; + } + public String DesignatedPalletOutboundWCS(WMSDesignatedPalle wmsDesignatedPalle){ + // 定义请求的URL地址 + String url = "http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsOutBoundByPallet"; + // 创建OkHttpClient实例 + OkHttpClient client = new OkHttpClient(); + +// 定义请求体的媒体类型为json + MediaType mediaType = MediaType.parse("application/json"); + try { + // 创建JSON对象payload,并设置请求参数 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(); + String formattedDate = dateFormat.format(date); + JSONObject payload = new JSONObject(); + payload.put("reqCode", IdUtils.fastSimpleUUID()); + payload.put("reqTime",formattedDate ); + payload.put("warehouseNo", wmsDesignatedPalle.getWarehouseNo()); + payload.put("rfidNo", wmsDesignatedPalle.getRfidNo()); + payload.put("location", wmsDesignatedPalle.getLocation()); + // 创建请求体,将JSON对象转换为字符串 + RequestBody body = RequestBody.create(mediaType, payload.toString()); + // 创建POST请求 + Request request = new Request.Builder() + .url(url) + .post(body) + .build(); + // 执行请求并获取响应 + Response response = client.newCall(request).execute(); + // 获取响应数据并转换为JSON对象 + String responseData = response.body().string(); + JSONObject result = JSONObject.parseObject(responseData); + // 获取返回结果结果JSON对象,请求编码、状态码和消息 + result.get("reqCode"); + result.get("code"); + String message= (String) result.get("message"); + response.close(); + return message; + } catch (IOException e) { + // 捕获IOException并处理异常 + e.printStackTrace(); // 这里最好记录异常到日志文件或者进行其他处理 + } finally { + // 关闭OkHttpClient + client.dispatcher().executorService().shutdown(); + } +// 返回0 + return null; + + } + public String InventoryPlanIssuanceWCS(WCSInventoryPlan wcsInventoryPlan){ + // 定义请求的URL地址 + String url = "http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsInBoundTaskSend"; + // 创建OkHttpClient实例 + OkHttpClient client = new OkHttpClient(); + +// 定义请求体的媒体类型为json + MediaType mediaType = MediaType.parse("application/json"); + try { + // 创建JSON对象payload,并设置请求参数 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(); + String formattedDate = dateFormat.format(date); + JSONObject payload = new JSONObject(); + payload.put("reqCode", IdUtils.fastSimpleUUID()); + payload.put("reqTime",formattedDate ); + payload.put("rfidNo", wcsInventoryPlan.getRfidNo()); + payload.put("batchNo", wcsInventoryPlan.getBatchNo()); + payload.put("sku", wcsInventoryPlan.getSku()); + payload.put("location", wcsInventoryPlan.getLocation()); + payload.put("qty", wcsInventoryPlan.getQty()); + payload.put("qualityStatus", wcsInventoryPlan.getQualityStatus()); + // 创建请求体,将JSON对象转换为字符串 + RequestBody body = RequestBody.create(mediaType, payload.toString()); + // 创建POST请求 + Request request = new Request.Builder() + .url(url) + .post(body) + .build(); + // 执行请求并获取响应 + Response response = client.newCall(request).execute(); + // 获取响应数据并转换为JSON对象 + String responseData = response.body().string(); + JSONObject result = JSONObject.parseObject(responseData); + // 获取返回结果结果JSON对象,请求编码、状态码和消息 + result.get("reqCode"); + result.get("code"); + String message= (String) result.get("message"); + response.close(); + return message; + } catch (IOException e) { + // 捕获IOException并处理异常 + e.printStackTrace(); // 这里最好记录异常到日志文件或者进行其他处理 + } finally { + // 关闭OkHttpClient + client.dispatcher().executorService().shutdown(); + } +// 返回0 + return null; + + } + + + + public String TraystatusUpdateWCS(WMSTraystatus wmsTraystatus){ + // 定义请求的URL地址 + String url = "http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsReturnTaskSend"; + // 创建OkHttpClient实例 + OkHttpClient client = new OkHttpClient(); + +// 定义请求体的媒体类型为json + MediaType mediaType = MediaType.parse("application/json"); + try { + // 创建JSON对象payload,并设置请求参数 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(); + String formattedDate = dateFormat.format(date); + JSONObject payload = new JSONObject(); + payload.put("reqCode", IdUtils.fastSimpleUUID()); + payload.put("reqTime",formattedDate ); + payload.put("rfidNo", wmsTraystatus.getRfidNo()); + payload.put("locationStatus", wmsTraystatus.getLocationStatus()); + payload.put("location", wmsTraystatus.getLocation()); + payload.put("palletType", wmsTraystatus.getPalletType()); + // 创建请求体,将JSON对象转换为字符串 + RequestBody body = RequestBody.create(mediaType, payload.toString()); + // 创建POST请求 + Request request = new Request.Builder() + .url(url) + .post(body) + .build(); + // 执行请求并获取响应 + Response response = client.newCall(request).execute(); + // 获取响应数据并转换为JSON对象 + String responseData = response.body().string(); + JSONObject result = JSONObject.parseObject(responseData); + // 获取返回结果结果JSON对象,请求编码、状态码和消息 + result.get("reqCode"); + result.get("code"); + String message= (String) result.get("message"); + response.close(); + return message; + } catch (IOException e) { + // 捕获IOException并处理异常 + e.printStackTrace(); // 这里最好记录异常到日志文件或者进行其他处理 + } finally { + // 关闭OkHttpClient + client.dispatcher().executorService().shutdown(); + } +// 返回0 + return null; + + } + //下发计划的接口 - public String addPurchaseOrderOutboundSAP(OrderLine orderLinete) { + public String addPurchaseOrderOutboundWCS(OrderLine orderLinete) { // 定义请求的URL地址 String url = "http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsOutBoundRequest"; // 创建OkHttpClient实例 @@ -452,5 +711,63 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { return null; } + //空托下发计划的接口 + public String addPurchaseOrderOutboundTwoWCS(OrderLine orderLinete) { + // 定义请求的URL地址 + String url = "http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsOutBoundRequest"; + // 创建OkHttpClient实例 + OkHttpClient client = new OkHttpClient(); +// 定义请求体的媒体类型为json + MediaType mediaType = MediaType.parse("application/json"); + try { + // 创建JSON对象payload,并设置请求参数 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(); + String formattedDate = dateFormat.format(date); + JSONObject payload = new JSONObject(); + payload.put("reqCode", IdUtils.fastSimpleUUID()); + payload.put("reqTime",formattedDate ); + payload.put("warehouseNo", orderLinete.getWarehouseNo()); + payload.put("orderNo", orderLinete.getOrderNo()); + JSONArray orderLines = new JSONArray(); + List orderList= orderLinete.getList(); + // 创建订单行数组,并将订单行对象添加到数组中 + for (OrderLine orderLine1: + orderList ) { + JSONObject orderLine = new JSONObject(); + orderLine.put("orderLineNo", orderLine1.getOrderLineNo()); + orderLine.put("sku", orderLine1.getMaterialCode()); + orderLines.add(orderLine); + } + payload.put("orderLines", orderLines); + // 创建请求体,将JSON对象转换为字符串 + RequestBody body = RequestBody.create(mediaType, payload.toString()); + // 创建POST请求 + Request request = new Request.Builder() + .url(url) + .post(body) + .build(); + // 执行请求并获取响应 + Response response = client.newCall(request).execute(); + // 获取响应数据并转换为JSON对象 + String responseData = response.body().string(); + JSONObject result = JSONObject.parseObject(responseData); + // 获取返回结果结果JSON对象,请求编码、状态码和消息 + result.get("reqCode"); + result.get("code"); + String message= (String) result.get("message"); + response.close(); + return message; + } catch (IOException e) { + // 捕获IOException并处理异常 + e.printStackTrace(); // 这里最好记录异常到日志文件或者进行其他处理 + } finally { + // 关闭OkHttpClient + client.dispatcher().executorService().shutdown(); + } +// 返回0 + return null; + + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSmissionServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSmissionServiceImpl.java index f1962278..557a2ece 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSmissionServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSmissionServiceImpl.java @@ -65,6 +65,7 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService { @Override public WmsToWCSDTO packingMaterialsInboundCompleted(WmsToWCSDTO wmsToWCSDTO) { DynamicDataSourceContextHolder.push("ds_" + wmsToWCSDTO.getFactory()); + //wms_raw_order_in_sn WmsRawOrderInSn wmsRawOrderInSn= wmsRawOrderInSnMapper.selectwmsRfidNo(wmsToWCSDTO); wmsRawOrderInSn.setWhCode(wmsToWCSDTO.getWarehouseNo()); wmsRawOrderInSn.setWlCode(wmsToWCSDTO.getLocation()); @@ -76,10 +77,12 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService { wmsOdsMateStorageNewsSn.setSn(wmsRawOrderInSn.getSn()); wmsOdsMateStorageNewsSn.setAmount(wmsRawOrderInSn.getAmount()); wmsOdsMateStorageNewsSn.setCreateBy("AGV"); + wmsOdsMateStorageNewsSn.setActiveFlag("1"); wmsOdsMateStorageNewsSn.setGmtCreate(new Date()); wmsOdsMateStorageNewsSn.setMateOrderInSnId(IdUtils.fastSimpleUUID()); wmsOdsMateStorageNewsSn.setFactoryCode(wmsToWCSDTO.getFactory()); wmsOdsMateStorageNewsSn.setSapFactoryCode(wmsToWCSDTO.getFactory()); + //wms_ods_mate_storage_news_sn wmsOdsMateStorageNewsSnMapper.insertWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn); //修改库存 //2,修改库存---/加库存数量--storage_amount = IFNULL(storage_amount, 0) + #{amount}, @@ -128,15 +131,23 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService { //记录明细消减库存 DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory()); - WmsRawOrderInSn wmsRawOrderInSn= wmsRawOrderInSnMapper.selectwmsRfidNotwo(wcsdto); + WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn= wmsOdsMateStorageNewsSnMapper.selectwmsRfidNotwo(wcsdto); + + //user_defined1='2'也就是查询的已经入库的托盘记录,再之后要进行标记备注5为1.不为空即是这, + // 或者直接在库存明细中查询这个托盘,然后后面对这条托盘明细进行标记处理,表示已经出库--用这个 + //修改库存 + //2,修改库存---/加库存数量--storage_amount = IFNULL(storage_amount, 0) + #{amount}, + WmsOdsEmStorageNews wmsOdsEmStorageNews=new WmsOdsEmStorageNews(); - wmsOdsEmStorageNews.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码 - wmsOdsEmStorageNews.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码 - wmsOdsEmStorageNews.setMaterialCode(wmsRawOrderInSn.getMaterialCode()); - wmsOdsEmStorageNews.setAmount(wmsRawOrderInSn.getAmount()); + wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码 + wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码 + wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode()); + wmsOdsEmStorageNews.setAmount(wmsOdsMateStorageNewsSn.getAmount()); wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews); + wmsOdsMateStorageNewsSn.setUserDefined1("1"); + wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn); return wcsdto; } diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsMateStorageNewsMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsMateStorageNewsMapper.xml index 892d7633..0523e4b8 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsMateStorageNewsMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsMateStorageNewsMapper.xml @@ -210,7 +210,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{storageId} - + select storage_id, wh_code, region_code, wa_code, storage_type, wl_code, material_code, material_desc, amount, storage_amount, occupy_amount, lpn, product_batch, receive_date, product_date, user_defined1, user_defined2, user_defined3, user_defined4, user_defined5, user_defined6, user_defined7, user_defined8, user_defined9, user_defined10, create_by, gmt_create, last_modified_by, gmt_modified, active_flag, factory_code, sap_factory_code, wl_name from wms_ods_mate_storage_news + where wh_code=#{whCode} and wl_code=#{wlCode} and material_code=#{materialCode} + + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsMateStorageNewsSnMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsMateStorageNewsSnMapper.xml index 794fcd73..fc59a9da 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsMateStorageNewsSnMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsMateStorageNewsSnMapper.xml @@ -205,4 +205,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where mate_order_in_sn_id = #{mateOrderInSnId} + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsRawOrderInSnMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsRawOrderInSnMapper.xml index dc9b5812..5663bed1 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsRawOrderInSnMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsRawOrderInSnMapper.xml @@ -193,18 +193,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" active_flag='1' and user_defined1='1' - + update wms_raw_order_in_sn set user_defined1 = '2' where raw_order_in_sn_id=#{rawOrderInSnId} +