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 21ebcbbd..77e1738d 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 @@ -591,5 +591,87 @@ public class WmsToWCSmissionController { + /** + * 成品自动码垛完以后,RGV 接驳要入库的托盘,扫描 RFID 号,请求 WMS 获取入库托盘信息。 + * 触发时机:扫描 RFID 编码,进行入库 + * @param wcsdto + * @return + */ + @PostMapping("/finishedProductRequestInbound") + public WmsToWCSODTO finishedProductRequestInbound(@RequestBody WmsToWCSDTO wcsdto) { + if (StringUtils.isBlank(wcsdto.getFactory())) { + WmsToWCSODTO wmsToWCSODTO = new WmsToWCSODTO(); + wmsToWCSODTO.setCode("1"); + wmsToWCSODTO.setMessage("factory is not null"); + return wmsToWCSODTO; + } + return iWmsToWCSmissionService.finishedProductRequestInbound(wcsdto); + } + + + /** + *成品品入库或移库完成 + *成品入库完成以后,WCS 通知 WMS 入库完成信息,将最终入库的库位返回至 WMS + * • 触发时机:设备将托盘放到库内以后 WmsProductPutByWorkOrderConfirm + * @param wcsdto + * @return + */ + @PostMapping("/finishedProductInboundCompleted") + public WmsToWCSDTO finishedProductInboundCompleted(@RequestBody WmsToWCSDTO wcsdto) { + if (StringUtils.isBlank(wcsdto.getFactory())) { + wcsdto.setCode("1"); + wcsdto.setMessage("factory is not null"); + return wcsdto; + } + return iWmsToWCSmissionService.finishedProductInboundCompleted(wcsdto); + } + + /** + * 成品出库完成 + *WCS 将成品出库,反馈 WMS 出库完成信息。 + * @param wcsdto + * @return + */ + @PostMapping("/finishedProductOutBoundCompleted") + public WmsToWCSDTO finishedProductOutBoundCompleted(@RequestBody WmsToWCSDTO wcsdto) { + if (StringUtils.isBlank(wcsdto.getFactory())) { + wcsdto.setCode("1"); + wcsdto.setMessage("factory is not null"); + return wcsdto; + } + return iWmsToWCSmissionService.finishedProductOutBoundCompleted(wcsdto); + } + /** + * 出库自动扫描回传 + *• 接口描述:机械手自动拆垛完,自动扫描完成,回传 WMS。 + * • 相机自动扫描 + * @param wcsdto + * @return + */ + @PostMapping("/finishedProductOutBoundScanReply") + public WmsToWCSDTO finishedProductOutBoundScanReply(@RequestBody WmsToWCSDTO wcsdto) { + if (StringUtils.isBlank(wcsdto.getFactory())) { + wcsdto.setCode("1"); + wcsdto.setMessage("factory is not null"); + return wcsdto; + } + return iWmsToWCSmissionService.finishedProductOutBoundScanReply(wcsdto); + } + /** + * 电梯口人工取货或者放货完成 + *• 接口描述:针对于电蚊香和蚊香液,当操作人员将托盘放到电梯内,或者将托盘从电梯内拿走,需要应用 PDA 进行操作。 + * •• 触发时机:手持 PDA 触发。 + * @param wcsdto + * @return + */ + @PostMapping("/liftTakeOrPutCompleted") + public WmsToWCSDTO liftTakeOrPutCompleted(@RequestBody WmsToWCSDTO wcsdto) { + if (StringUtils.isBlank(wcsdto.getFactory())) { + wcsdto.setCode("1"); + wcsdto.setMessage("factory is not null"); + return wcsdto; + } + return iWmsToWCSmissionService.liftTakeOrPutCompleted(wcsdto); + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/WmsToWCSDTO.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/WmsToWCSDTO.java index 3e677bf0..b45d1630 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/WmsToWCSDTO.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/WmsToWCSDTO.java @@ -10,10 +10,28 @@ import java.util.List; @JsonInclude(JsonInclude.Include.NON_NULL) public class WmsToWCSDTO extends BaseEntity { + private String wlcode;//请求ID + + public String getWlcode() { + return wlcode; + } + + public void setWlcode(String wlcode) { + this.wlcode = wlcode; + } private String reqCode;//请求ID @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date reqTime;//请求时间 + private List items; + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } private String planNo; private List orderLines; diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsRawOrderInMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsRawOrderInMapper.java index 13d7a9e0..96d459f1 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsRawOrderInMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsRawOrderInMapper.java @@ -61,4 +61,8 @@ public interface WmsRawOrderInMapper { public int deleteWmsRawOrderInByRawOrderInIds(String[] rawOrderInIds); WmsToWCSDTO packagingStorage(WmsToWCSDTO wcsdto); + + WmsToWCSDTO finishedProductRequestInbound(WmsToWCSDTO wcsdto); + + List finishedProductRequestInboundsn(WmsToWCSDTO wcsdto); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsSellOutEmbryoMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsSellOutEmbryoMapper.java index e65557d9..31442789 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsSellOutEmbryoMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/WmsSellOutEmbryoMapper.java @@ -83,4 +83,6 @@ public interface WmsSellOutEmbryoMapper { WmsAllocationOutEmbryo selectWmsAllocationOutEmbryoById(String id); void updateWmsAllocationOutEmbryo(WmsAllocationOutEmbryo wmsAllocationOutEmbryo); + + void updateWmsSellOutEmbryotwo(WmsSellOutEmbryo wmsSellOutEmbryoUpdate); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsToWCSmissionService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsToWCSmissionService.java index ad5616dc..9cbe256e 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsToWCSmissionService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsToWCSmissionService.java @@ -9,4 +9,14 @@ public interface IWmsToWCSmissionService { WmsToWCSDTO packingMaterialsInboundCompleted(WmsToWCSDTO wcsdto); WmsToWCSDTO packingMaterialsOutBoundCompleted(WmsToWCSDTO wcsdto); + + WmsToWCSODTO finishedProductRequestInbound(WmsToWCSDTO wcsdto); + + WmsToWCSDTO finishedProductInboundCompleted(WmsToWCSDTO wcsdto); + + WmsToWCSDTO finishedProductOutBoundCompleted(WmsToWCSDTO wcsdto); + + WmsToWCSDTO finishedProductOutBoundScanReply(WmsToWCSDTO wcsdto); + + WmsToWCSDTO liftTakeOrPutCompleted(WmsToWCSDTO wcsdto); } 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 e32dd1e7..756f8b94 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 @@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; +import java.util.List; @Service public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService { @@ -22,12 +23,19 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService { @Autowired private WmsRawOrderInSnMapper wmsRawOrderInSnMapper; @Autowired + private WmsFpStorageNewsSnMapper wmsFpStorageNewsSnMapper; + @Autowired + private WmsFpStorageNewsMapper wmsFpStorageNewsMapper; + @Autowired private WmsOdsMateStorageNewsSnMapper wmsOdsMateStorageNewsSnMapper; @Autowired private WmsOdsEmStorageNewsMapper wmsOdsEmStorageNewsMapper; @Autowired private WmsOdsMateStorageNewsMapper wmsOdsMateStorageNewsMapper; - + @Autowired + private WmsSellOutEmbryoMapper wmsSellOutEmbryoMapper; + @Autowired + private WmsProductPutTrayCodeMapper wmsProductPutTrayCodeMapper; @Override public WmsToWCSODTO packagingStorage(WmsToWCSDTO wcsdto) { DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory()); @@ -153,5 +161,175 @@ public class WmsToWCSmissionServiceImpl implements IWmsToWCSmissionService { return wcsdto; } + @Override + public WmsToWCSODTO finishedProductRequestInbound(WmsToWCSDTO wcsdto) { + DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory()); + //其中wcsdto的rfidNo属性先传托盘号,,原因---还没有自动码垛 + WmsToWCSDTO wmsToWCSDTO = wmsRawOrderInMapper.finishedProductRequestInbound(wcsdto); + + List items=wmsRawOrderInMapper.finishedProductRequestInboundsn(wcsdto); + // wmsToWCSDTO.set// + if (wmsToWCSDTO == null) { + WmsToWCSODTO wms = new WmsToWCSODTO(); + wms.setCode("0"); + wms.setReqCode(wcsdto.getReqCode()); + wms.setMessage("OK"); + return wms; + } + wmsToWCSDTO.setQualityStatus("1"); + wmsToWCSDTO.setItems(items); + wmsToWCSDTO.setCode("0"); + wmsToWCSDTO.setReqCode(wcsdto.getReqCode()); + wmsToWCSDTO.setMessage("OK"); + WmsToWCSODTO wmsToWCSODTO = new WmsToWCSODTO(); + wmsToWCSODTO.setCode("0"); + + // 创建Gson对象 + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + + // 将对象转换为JSON格式的字符串并格式化输出 + String MESSAGE = gson.toJson(wmsToWCSDTO); + + wmsToWCSODTO.setMessage(MESSAGE); + return wmsToWCSODTO; + } + + @Override + public WmsToWCSDTO finishedProductInboundCompleted(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()); +// WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = new WmsOdsMateStorageNewsSn(); +// wmsOdsMateStorageNewsSn.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码 +// wmsOdsMateStorageNewsSn.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码 +// wmsOdsMateStorageNewsSn.setMaterialCode(wmsRawOrderInSn.getMaterialCode()); +// wmsOdsMateStorageNewsSn.setMaterialDesc(wmsRawOrderInSn.getMaterialDesc()); +// 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}, +// WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews(); +// wmsOdsEmStorageNews.setWhCode(wmsRawOrderInSn.getWhCode());//仓库编码 +// wmsOdsEmStorageNews.setWlCode(wmsRawOrderInSn.getWlCode());//库位编码 +// wmsOdsEmStorageNews.setMaterialCode(wmsRawOrderInSn.getMaterialCode()); +// wmsOdsEmStorageNews.setAmount(wmsRawOrderInSn.getAmount()); +// +// //添加库存--这个要有个判断有没有这个库存如果没有的话,就插入 +// WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectByWhCodeAndMate(wmsOdsEmStorageNews); +// if (wmsOdsMateStorageNews == null) { +// WmsOdsMateStorageNews wmsOdsMateStorageNews1 = new WmsOdsMateStorageNews(); +// wmsOdsMateStorageNews1.setStorageId(IdUtils.fastSimpleUUID()); +// wmsOdsMateStorageNews1.setWhCode(wmsRawOrderInSn.getWhCode()); +// wmsOdsMateStorageNews1.setWlCode(wmsRawOrderInSn.getWlCode()); +// wmsOdsMateStorageNews1.setAmount(wmsRawOrderInSn.getAmount()); +// // wmsOdsMateStorageNews1.setStorageAmount(wmsRawOrderInSn.getAmount()); +// wmsOdsMateStorageNews1.setMaterialCode(wmsRawOrderInSn.getMaterialCode()); +// wmsOdsMateStorageNews1.setMaterialDesc(wmsRawOrderInSn.getMaterialDesc()); +// wmsOdsMateStorageNews1.setStorageType("BC"); +// wmsOdsMateStorageNews1.setCreateBy("wcs"); +// wmsOdsMateStorageNews1.setGmtCreate(new Date()); +// wmsOdsMateStorageNews1.setActiveFlag("1"); +// wmsOdsMateStorageNews1.setFactoryCode(wmsToWCSDTO.getFactory()); +// wmsOdsMateStorageNews1.setSapFactoryCode(wmsToWCSDTO.getFactory()); +// wmsOdsMateStorageNews1.setUserDefined1(wmsRawOrderInSn.getUserDefined4());//单位 +// wmsOdsMateStorageNewsMapper.insertWmsOdsMateStorageNews(wmsOdsMateStorageNews1); +// } else { +// wmsOdsMateStorageNewsSnMapper.updateAdd(wmsOdsEmStorageNews); +// } +// //修改托盘记录为入库 +// wmsRawOrderInSnMapper.updateU1Byid(wmsRawOrderInSn); + //在入库手持那里已经入了,他没有用rfid而是托盘,但是成品手持下线入库,在下下线入库那里已经入了,除非后续用自动码垛,不用手持的下线入库 + wmsToWCSDTO.setCode("0"); + wmsToWCSDTO.setMessage("OK"); + return wmsToWCSDTO; + } + + @Override + public WmsToWCSDTO finishedProductOutBoundCompleted(WmsToWCSDTO wcsdto) { + //记录明细消减库存--wms_raw_mission_out- + DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory()); + WmsSellOutEmbryo wmsSellOutEmbryo=new WmsSellOutEmbryo(); + wmsSellOutEmbryo.setDeliveryOrder(wcsdto.getOrderNo());//查询对应的销售订单 + List wmsSellOutEmbryos = wmsSellOutEmbryoMapper.selectWmsSellOutEmbryoList(wmsSellOutEmbryo); + WmsSellOutEmbryo wmsSellOutEmbryo1=wmsSellOutEmbryos.get(0); + + WmsToWCSDTO wmsToWCSDTO = wmsRawOrderInMapper.finishedProductRequestInbound(wcsdto);//根据托盘查询明细 + //修改销售订单 + String tem= wmsToWCSDTO.getQty(); + BigDecimal OutQuantity= wmsSellOutEmbryo1.getOutQuantity().add(new BigDecimal(tem));//2 + int result = wmsSellOutEmbryo1.getPlanQuantity().compareTo(OutQuantity); + WmsSellOutEmbryo wmsSellOutEmbryoUpdate=new WmsSellOutEmbryo(); + if (result == 0){//出库完 + wmsSellOutEmbryoUpdate.setStatus("1"); + }else { + wmsSellOutEmbryoUpdate.setStatus("0"); + } + wmsSellOutEmbryoUpdate.setDeliveryOrder(wcsdto.getOrderNo()); + wmsSellOutEmbryoUpdate.setOutQuantity(OutQuantity); + wmsSellOutEmbryoMapper.updateWmsSellOutEmbryotwo(wmsSellOutEmbryoUpdate); + //订单修改完成 + // + WmsProductPutTrayCode wmsProductPutTrayCode=new WmsProductPutTrayCode(); + //解除绑定 + wmsProductPutTrayCode.setSn(wcsdto.getRfidNo());//托盘号 + wmsProductPutTrayCode.setWlCode(wmsToWCSDTO.getWlcode());//库位 + wmsProductPutTrayCode.setRelatStatus("0"); + wmsProductPutTrayCodeMapper.updateWmsProductPutTrayCode(wmsProductPutTrayCode); + //改明细 + WmsFpStorageNewsSn wmsFpStorageNewsSn=new WmsFpStorageNewsSn(); + wmsFpStorageNewsSn.setSn(wmsProductPutTrayCode.getSn()); + wmsFpStorageNewsSn.setWlCode(wmsProductPutTrayCode.getWlCode()); + wmsFpStorageNewsSn.setActiveFlag("1"); + wmsFpStorageNewsSn.setProductCode(wmsSellOutEmbryo1.getProductCode()); + wmsFpStorageNewsSnMapper.updateWmsFpStorageNewsSnOut(wmsFpStorageNewsSn); + //判断如果托盘数据被出完,就关闭这个明细 + List wmsFpStorageNewsSns= wmsFpStorageNewsSnMapper.selectWmsFpStorageNewsSnList(wmsFpStorageNewsSn); + if (wmsFpStorageNewsSns.size()>0){ + WmsFpStorageNewsSn wmsFpStorageNewsSn1= wmsFpStorageNewsSns.get(0); + + BigDecimal ken= new BigDecimal(wmsFpStorageNewsSn1.getUserDefined2()); + int comparisonResult = ken.compareTo(wmsFpStorageNewsSn1.getAmount()); + if (comparisonResult == 0) { + // ken和amount相等 + wmsFpStorageNewsSn1.setActiveFlag("0"); + //修改明细 + wmsFpStorageNewsSnMapper.updateWmsFpStorageNewsSn(wmsFpStorageNewsSn1); + } + } + //改主库存表 + WmsFpStorageNews wmsFpStorageNews=new WmsFpStorageNews(); + wmsFpStorageNews.setActiveFlag("1"); + wmsFpStorageNews.setWlCode(wmsProductPutTrayCode.getWlCode()); + wmsFpStorageNews.setProductCode(wmsSellOutEmbryo1.getProductCode()); + wmsFpStorageNewsMapper.updateWmsFpStorageNewsOut(wmsFpStorageNews); + wcsdto.setCode("0"); + wcsdto.setMessage("OK"); + return wcsdto; + } + + @Override + public WmsToWCSDTO finishedProductOutBoundScanReply(WmsToWCSDTO wcsdto) { + wcsdto.setCode("0"); + wcsdto.setMessage("OK"); + return wcsdto; + } + + @Override + public WmsToWCSDTO liftTakeOrPutCompleted(WmsToWCSDTO wcsdto) { + wcsdto.setCode("0"); + wcsdto.setMessage("OK"); + return wcsdto; + } + } diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsRawOrderInMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsRawOrderInMapper.xml index c2064b92..8401b5be 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsRawOrderInMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsRawOrderInMapper.xml @@ -323,4 +323,30 @@ sn=#{rfidNo} and user_defined1 = '1' + + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsSellOutEmbryoMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsSellOutEmbryoMapper.xml index 7bcb6193..d6d601e2 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsSellOutEmbryoMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsSellOutEmbryoMapper.xml @@ -270,7 +270,46 @@ where id = #{id} - + + update wms_sell_out_embryo + + Item_number = #{itemNumber}, + factory_code = #{factoryCode}, + wh_code = #{whCode}, + wa_code = #{waCode}, + wl_code = #{wlCode}, + delivery_place = #{deliveryPlace}, + product_name = #{productName}, + product_code = #{productCode}, + product_sort = #{productSort}, + specification = #{specification}, + unit_of_measure = #{unitOfMeasure}, + lot_number = #{lotNumber}, + plan_quantity = #{planQuantity}, + out_quantity = #{outQuantity}, + status = #{status}, + SAP_status = #{sapStatus}, + SAP_proof = #{sapProof}, + SAP_message = #{sapMessage}, + out_date = #{outDate}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + attr5 = #{attr5}, + attr6 = #{attr6}, + attr7 = #{attr7}, + attr8 = #{attr8}, + attr9 = #{attr9}, + attr10 = #{attr10}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where delivery_order = #{deliveryOrder} + delete from wms_sell_out_embryo where id = #{id}