From 278319b6d2cb27ab0109916d673fb65785d4dbaf Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Fri, 23 Jan 2026 14:11:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E311=E8=BD=AC=E5=82=A8?= =?UTF-8?q?=E8=BF=87=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/system/api/RemoteSapService.java | 11 +- .../api/factory/RemoteSapFallbackFactory.java | 10 + .../com/op/sap/controller/SapController.java | 9 + .../com/op/sap/service/SapWmsService.java | 2 + .../sap/service/impl/SapWmsServicelmpl.java | 40 +++ .../main/java/com/op/wms/WmsApplication.java | 2 + .../OdsProcureOutOrderController.java | 20 ++ .../WmsRawMaterialOutController.java | 58 +++++ .../com/op/wms/domain/OdsProcureOutOrder.java | 13 + .../query/BatchProductionMaterialQuery.java | 72 ++++++ .../com/op/wms/mapper/MesPrepareMapper.java | 22 ++ .../wms/mapper/OdsProcureOutOrderMapper.java | 8 +- .../wms/mapper/ProOrderWorkorderMapper.java | 3 +- .../service/IOdsProcureOutOrderService.java | 4 + .../service/IWmsRawMaterialOutService.java | 23 ++ .../impl/OdsProcureOutOrderServiceImpl.java | 95 +++++++ .../impl/WmsRawMaterialOutServiceImpl.java | 235 ++++++++++++++++++ .../resources/mapper/mes/MesPrepareMapper.xml | 18 ++ .../mapper/wms/OdsProcureOutOrderMapper.xml | 51 ++++ 19 files changed, 691 insertions(+), 5 deletions(-) create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/controller/WmsRawMaterialOutController.java create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/domain/query/BatchProductionMaterialQuery.java create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/mapper/MesPrepareMapper.java create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/service/IWmsRawMaterialOutService.java create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsRawMaterialOutServiceImpl.java create mode 100644 op-modules/op-wms/src/main/resources/mapper/mes/MesPrepareMapper.xml diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java index e35333810..0a7eba004 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java @@ -20,7 +20,6 @@ import java.util.Map; * @author OP */ @FeignClient(contextId = "remoteSapService", value = ServiceNameConstants.SAP_SERVICE, fallbackFactory = RemoteSapFallbackFactory.class) - public interface RemoteSapService { @PostMapping("/sap/shopOrderSync") public R> shopOrderSync(@RequestBody SapShopOrderQuery sapProOrder); @@ -157,8 +156,14 @@ public interface RemoteSapService { public R handMadeInStorage(@RequestBody List list); @PostMapping("/sap/updateMaterialEntry") - R updateMaterialEntry(@RequestBody List list, @RequestParam("optionType") String optionType // 关键:指定value - ); + R updateMaterialEntry(@RequestBody List list, @RequestParam("optionType") String optionType); + + /** + * 311转储过账 + * **/ + @PostMapping("/sap/sapTransferPosting") + R sapTransferPosting(@RequestBody List> list); + } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java index 1def8ec25..8cdabb5bc 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java @@ -198,6 +198,16 @@ public class RemoteSapFallbackFactory implements FallbackFactory> list) { + return R.fail("311转储过账" + throwable.getMessage()); + } + }; } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java index 14d3b6670..b547c0d5b 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java @@ -666,4 +666,13 @@ public class SapController extends BaseController { public R updateMaterialEntry(@RequestBody List list, @RequestParam("optionType") String optionType) { return sapWmsService.updateMaterialEntry(list, optionType); } + + /** + * 311转储过账 + * **/ + @PostMapping("/sapTransferPosting") + @Log(title = "311转储过账", businessType = BusinessType.SAP) + public R sapTransferPosting(@RequestBody List> list) { + return sapWmsService.sapTransferPosting(list); + } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java index 8afc9e00a..f34fa55ff 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java @@ -20,4 +20,6 @@ public interface SapWmsService { R sapProductOutboundCostTW(List> mapList); R updateMaterialEntry(List list, String optionType) ; + + R sapTransferPosting(List> list); } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java index a932ea1d8..d00826b50 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java @@ -375,4 +375,44 @@ public class SapWmsServicelmpl implements SapWmsService { return R.fail(e.getMessage()); } } + + @Override + public R sapTransferPosting(List> list) { + try { + if (list == null || list.isEmpty()) { + return R.fail(); + } + + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZMES_311_MB1B"); + if (func == null) { + return R.fail("ZMES_311_MB1B函数不存在"); + } + + JCoTable item = func.getTableParameterList().getTable("L_ITEM"); + log.info("311转储过账开始----------------------------------------"); + for (Map map : list) { + item.appendRow(); + item.setValue("PLANT", map.get("PLANT")); + item.setValue("LGORT", map.get("LGORT")); + item.setValue("MATNR", map.get("MATNR")); + item.setValue("QUANTITY", map.get("QUANTITY")); + item.setValue("MEINS", map.get("MEINS")); + item.setValue("MOVE_STLOC", map.get("MOVE_STLOC")); + } + func.execute(dest); + String msg = func.getExportParameterList().getString("L_MSG"); + String code = func.getExportParameterList().getString("RETCODE"); + String postCode = func.getExportParameterList().getString("MATERIALDOCUMENT"); + if (!("0").equals(code)) { + return R.fail(msg); + } else { + Map map = new HashMap<>(); + map.put("postCode", postCode); + return R.ok(map, msg); + } + }catch (Exception e){ + return R.fail(e.getMessage()); + } + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/WmsApplication.java b/op-modules/op-wms/src/main/java/com/op/wms/WmsApplication.java index ca1619428..a9d65e944 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/WmsApplication.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/WmsApplication.java @@ -5,6 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import com.op.common.security.annotation.EnableCustomConfig; import com.op.common.security.annotation.EnableRyFeignClients; import com.op.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.cloud.openfeign.EnableFeignClients; /** * 系统模块 @@ -15,6 +16,7 @@ import com.op.common.swagger.annotation.EnableCustomSwagger2; @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication +@EnableFeignClients(basePackages = "com.op.system.api") public class WmsApplication { public static void main(String[] args) { SpringApplication.run(WmsApplication.class, args); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java index 9fc2b8f53..986f14a21 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java @@ -3,6 +3,7 @@ package com.op.wms.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.op.common.core.context.SecurityContextHolder; import com.op.common.core.utils.uuid.IdUtils; import com.op.wms.service.IOdsProcureOrderService; import org.springframework.beans.factory.annotation.Autowired; @@ -210,4 +211,23 @@ public class OdsProcureOutOrderController extends BaseController { odsProcureOrderService.batchSapTl(orderList); return success(); } + + /** + * 电脑端提交转储过账 + * **/ + @PostMapping("/submitTransferPosting") + @Log(title = "电脑端提交转储过账") + public AjaxResult submitTransferPosting(@RequestBody List orderList) { + return odsProcureOutOrderService.submitTransferPosting(orderList,SecurityContextHolder.getUserName()); + } + + /** + * 电脑端提交反冲过账 + * **/ + @PostMapping("/submitReversePosting") + @Log(title = "电脑端提交反冲过账") + public AjaxResult submitReversePosting(@RequestBody List orderList) { + odsProcureOutOrderService.submitReversePosting(orderList,SecurityContextHolder.getUserName()); + return success(); + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsRawMaterialOutController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsRawMaterialOutController.java new file mode 100644 index 000000000..89e7b380b --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsRawMaterialOutController.java @@ -0,0 +1,58 @@ +package com.op.wms.controller; + +import com.op.common.core.context.SecurityContextHolder; +import com.op.common.core.web.domain.AjaxResult; +import com.op.common.log.annotation.Log; +import com.op.wms.domain.OdsProcureOutOrder; +import com.op.wms.domain.query.BatchProductionMaterialQuery; +import com.op.wms.service.IWmsRawMaterialOutService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 手持机原料出库控制类 + * + * @author 019117 + * @date + */ +@RestController +@RequestMapping("/rawMaterialOut") +@RequiredArgsConstructor +public class WmsRawMaterialOutController { + + private final IWmsRawMaterialOutService wmsRawMaterialOutService; + + /** + * 获取转储物料 + * **/ + @GetMapping("/transferMaterialList") + public AjaxResult getTransferMaterialList(BatchProductionMaterialQuery query) { + List list = wmsRawMaterialOutService.getTransferMaterialList(query); + return AjaxResult.success(list); + } + + /** + * 提交转储数据 + * **/ + @PostMapping("/submitTransferList") + @Log(title = "手机端提交转储数据") + public AjaxResult submitTransferMaterialList(@RequestBody OdsProcureOutOrder params) { + return wmsRawMaterialOutService.submitTransferMaterialList(params); + } + + /** + * 提交反冲数据 + * **/ + @PostMapping("/submitReverseList") + @Log(title = "手机端提交反冲数据") + public AjaxResult submitReverseMaterialList(@RequestBody OdsProcureOutOrder params) { + return wmsRawMaterialOutService.submitReverseMaterialList(params); + } + + + + + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java index e95084351..f8c97dba8 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java @@ -421,6 +421,11 @@ public class OdsProcureOutOrder extends BaseEntity { * **/ private String sort; + /** + * 是否过账(默认否) + * **/ + private String isPost = "0"; + public String getWhCode() { return whCode; } @@ -741,6 +746,14 @@ public class OdsProcureOutOrder extends BaseEntity { this.sort = sort; } + public String getIsPost() { + return isPost; + } + + public void setIsPost(String isPost) { + this.isPost = isPost; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/query/BatchProductionMaterialQuery.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/query/BatchProductionMaterialQuery.java new file mode 100644 index 000000000..27d5010dc --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/query/BatchProductionMaterialQuery.java @@ -0,0 +1,72 @@ +package com.op.wms.domain.query; + +import lombok.Data; + +import java.util.List; + +/** + * 批量生产领料查询条件 + * + * @author 019117 + * @date + */ +@Data +public class BatchProductionMaterialQuery { + + /** + * 领料单 + * **/ + private String code; + + /** + * 领料类型 + * **/ + private String type; + + /** + * 工单号 + * **/ + private String workOrderCode; + + /** + * 工厂编码 + * **/ + private String factoryCode; + + /** + * 操作者 + * **/ + private String operator; + + /** + * 生产日期 + * **/ + private String productDate; + + /** + * 订单状态 + * **/ + private String orderStatus; + + /** + * 活动状态 + * **/ + private String active; + + /** + * 过账类型 + * **/ + private String userDefined3; + + /** + * 备用字段-存放物料订单号 + * **/ + private String userDefined6; + + /** + * 过账状态 + * **/ + private String userDefined10; + + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/MesPrepareMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/MesPrepareMapper.java new file mode 100644 index 000000000..d4eed0adc --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/MesPrepareMapper.java @@ -0,0 +1,22 @@ +package com.op.wms.mapper; + +import com.op.wms.domain.query.BatchProductionMaterialQuery; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * remark + * + * @author 019117 + * @date + */ +@Mapper +public interface MesPrepareMapper { + + /** + * 获取备料单的生产工单号 + * **/ + List selectMesPrepareList(BatchProductionMaterialQuery query); + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java index 404823bce..bc3ceaf93 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java @@ -2,8 +2,9 @@ package com.op.wms.mapper; import java.util.List; -import com.op.system.api.domain.sap.SapMaterialPosting; import com.op.wms.domain.*; +import com.op.wms.domain.query.BatchProductionMaterialQuery; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** @@ -12,6 +13,7 @@ import org.apache.ibatis.annotations.Param; * @author Open Platform * @date 2023-07-06 */ +@Mapper public interface OdsProcureOutOrderMapper { /** * 查询包材出库单 @@ -188,4 +190,8 @@ public interface OdsProcureOutOrderMapper { List batchCheckDuplication(List list ); void batchInsertMaterialEntry(List list); + + List getBatchProductionMaterialList(BatchProductionMaterialQuery query); + + void batchUpdateWmsOdsProcureOutOrder(@Param("orderList") List orderList); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java index 191547d38..2cbb7ef3c 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java @@ -3,7 +3,7 @@ package com.op.wms.mapper; import com.op.wms.domain.ProOrderWorkorder; import com.op.wms.domain.ProWetMaterialPlanDetail; - +import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -15,6 +15,7 @@ import java.util.List; * @date 2023-07-18 */ +@Mapper public interface ProOrderWorkorderMapper { List selectProOrderWorkorderList999(ProOrderWorkorder proOrderWorkorder); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java index ef1f55568..7b1e6a55a 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java @@ -2,6 +2,7 @@ package com.op.wms.service; import java.util.List; +import com.op.common.core.web.domain.AjaxResult; import com.op.wms.domain.OdsProcureOutOrder; /** @@ -90,4 +91,7 @@ public interface IOdsProcureOutOrderService { List selectOdsProcureOutOrderListZCTC(OdsProcureOutOrder odsProcureOutOrder); public int removeReturn(List iDs); + + AjaxResult submitTransferPosting(List list, String operator); + AjaxResult submitReversePosting( List list, String operator); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsRawMaterialOutService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsRawMaterialOutService.java new file mode 100644 index 000000000..82607b173 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsRawMaterialOutService.java @@ -0,0 +1,23 @@ +package com.op.wms.service; + +import com.op.common.core.web.domain.AjaxResult; +import com.op.wms.domain.OdsProcureOutOrder; +import com.op.wms.domain.query.BatchProductionMaterialQuery; + +import java.util.List; + +/** + * remark + * + * @author 019117 + * @date + */ +public interface IWmsRawMaterialOutService { + + List getTransferMaterialList(BatchProductionMaterialQuery query); + + AjaxResult submitTransferMaterialList(OdsProcureOutOrder params); + + AjaxResult submitReverseMaterialList(OdsProcureOutOrder params); + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java index 15b9e6021..6d5bf4091 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.domain.R; import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.system.api.RemoteSapService; import com.op.system.api.domain.sap.SapBackflushMPQuery; @@ -633,4 +634,98 @@ public class OdsProcureOutOrderServiceImpl implements IOdsProcureOutOrderService } + + @Override + @DS("#header.poolName") + public AjaxResult submitTransferPosting(List orderList, String operator) { + List> list = new ArrayList<>(); + for(OdsProcureOutOrder order : orderList){ + Map map = new HashMap<>(); + map.put("PLANT", order.getSiteCode()); + map.put("LGORT", "0001"); + map.put("MATNR", order.getMaterialCode()); + map.put("QUANTITY", order.getOutNumber()); + map.put("MEINS", order.getUnit()); + map.put("MOVE_STLOC", "0087"); + list.add(map); + } + + //过账 + R result = remoteSapService.sapTransferPosting(list); + //过账后处理 + return postHandle(result,orderList,operator); + } + + @Override + @DS("#header.poolName") + public AjaxResult submitReversePosting(List orderList, String operator) { + List> list = new ArrayList<>(); + for(OdsProcureOutOrder order : orderList){ + Map map = new HashMap<>(); + map.put("PLANT", order.getSiteCode()); + map.put("LGORT", "0001"); + map.put("MATNR", order.getMaterialCode()); + map.put("QUANTITY", order.getOutNumber()); + map.put("MEINS", order.getUnit()); + map.put("MOVE_STLOC", "0013"); + list.add(map); + } + //过账 + R result = remoteSapService.sapTransferPosting(list); + //过账后处理 + return postHandle(result,orderList,operator); + } + + private AjaxResult postHandle( R result, List orderList, String operator){ + String msg = result.getMsg(); + if (result.getCode() == 200) { + //过账成功 + Map map = (Map) result.getData(); + String postCode = (String) map.get("postCode"); + updateOdsProcureOutOrderAndRawMissionOut(orderList, msg, postCode, operator, "2"); + odsProcureOutOrderMapper.batchUpdateWmsOdsProcureOutOrder(orderList); + return AjaxResult.success(msg); + } else { + //过账失败 + updateOdsProcureOutOrderAndRawMissionOut(orderList, msg, "", operator, "3"); + odsProcureOutOrderMapper.batchUpdateWmsOdsProcureOutOrder(orderList); + return AjaxResult.error(msg); + } + + } + + //更新出库单及出库明细 + private void updateOdsProcureOutOrderAndRawMissionOut(List orderList,String msg, String postCode, String operator, String postingStatus) { + //遍历列表 + for (OdsProcureOutOrder order : orderList) { + //更新更新出库数量以及出库状态 + order.setOrderStatus("3"); + order.setUserDefined9(postCode); + order.setUserDefined10(postingStatus); + order.setUserDefined11(msg); + order.setLastUpdateBy(operator); + order.setLastUpdateDate(new Date()); + //新增出库明细 + if ("2".equals(postingStatus)){ + OdsProcureOutOrder missionOut = new OdsProcureOutOrder(); + + missionOut.setID(IdUtils.fastSimpleUUID()); + missionOut.setProduceCode(order.getProduceCode()); + missionOut.setMaterialCode(order.getMaterialCode()); + missionOut.setMaterialDesc(order.getMaterialDesc()); + missionOut.setUnit(order.getUnit()); + missionOut.setPlanNumber(order.getOutNumber()); + missionOut.setActive("1"); + missionOut.setUserDefined3(order.getUserDefined3()); + missionOut.setUserDefined4(order.getUserDefined4()); + missionOut.setUserDefined5(postingStatus); + missionOut.setFactoryCode(order.getSiteCode()); + missionOut.setCreateBy(operator); + missionOut.setCreateDate(new Date()); + //出库记录 + odsProcureOutOrderMapper.insertWmsRawMissionOut(missionOut); + } + + } + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsRawMaterialOutServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsRawMaterialOutServiceImpl.java new file mode 100644 index 000000000..1756c870a --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsRawMaterialOutServiceImpl.java @@ -0,0 +1,235 @@ +package com.op.wms.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.domain.R; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.core.web.domain.AjaxResult; +import com.op.system.api.RemoteSapService; +import com.op.system.api.domain.sap.SapBackflushMPQuery; +import com.op.wms.domain.OdsProcureOutOrder; +import com.op.wms.domain.query.BatchProductionMaterialQuery; +import com.op.wms.mapper.MesPrepareMapper; +import com.op.wms.mapper.OdsProcureOutOrderMapper; +import com.op.wms.service.IWmsRawMaterialOutService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.*; + +/** + * remark + * + * @author 019117 + * @date + */ +@Service +@RequiredArgsConstructor +public class WmsRawMaterialOutServiceImpl implements IWmsRawMaterialOutService { + + private final OdsProcureOutOrderMapper odsProcureOutOrderMapper; + + private final MesPrepareMapper mesPrepareMapper; + + private final RemoteSapService remoteSapService; + + + @Override + @DS("#header.poolName") + public List getTransferMaterialList(BatchProductionMaterialQuery query) { + + //获取当前生产工单号 + List workOrderCodeList = mesPrepareMapper.selectMesPrepareList(query); + + //查询包材出库单是否有数据(查询每张订单是否都有物料) + for (String code : workOrderCodeList) { + query.setUserDefined6(code); + List list = odsProcureOutOrderMapper.getBatchProductionMaterialList(query); + if (list.isEmpty()){ + //如果没有数据则从生产工单获取到生产物料 + OdsProcureOutOrder order = new OdsProcureOutOrder(); + order.setWorkorderCode(code); + List orderList= odsProcureOutOrderMapper.selectMesPrepareDetailBC(order); + Integer orderItem = 0; + for (OdsProcureOutOrder order1: orderList) { + orderItem++; + OdsProcureOutOrder odsProcureOutOrder1 = new OdsProcureOutOrder(); + odsProcureOutOrder1.setID(IdUtils.fastSimpleUUID()); + odsProcureOutOrder1.setSiteCode(query.getFactoryCode()); + odsProcureOutOrder1.setProduceCode(query.getCode()); + odsProcureOutOrder1.setOutNumber(new BigDecimal("0")); + odsProcureOutOrder1.setMaterialCode(order1.getMaterialCode()); + odsProcureOutOrder1.setMaterialDesc(order1.getMaterialDesc()); + odsProcureOutOrder1.setPlanDate(new Date()); + odsProcureOutOrder1.setUnit(order1.getUnit()); + odsProcureOutOrder1.setActive("1"); + odsProcureOutOrder1.setOrderStatus("1"); + odsProcureOutOrder1.setPlanNumber(order1.getPlanNumber()); + odsProcureOutOrder1.setUserDefined2(String.format("%05d", orderItem)); + odsProcureOutOrder1.setUserDefined3("ZC"); + odsProcureOutOrder1.setUserDefined4(query.getCode()); + odsProcureOutOrder1.setUserDefined10("1"); + odsProcureOutOrder1.setUserDefined5(order1.getNeedDate()); + odsProcureOutOrder1.setUserDefined6(code); + odsProcureOutOrder1.setCreateBy(query.getOperator()); + odsProcureOutOrder1.setCreateDate(new Date()); + //写入包材出库单 + odsProcureOutOrderMapper.insertWmsOdsProcureOutOrder(odsProcureOutOrder1); + } + } + } + + //重新查询(相同物料需要合并计算) + query.setUserDefined6(null); + return odsProcureOutOrderMapper.getBatchProductionMaterialList(query); + + } + + @Override + @DS("#header.poolName") + public AjaxResult submitTransferMaterialList(OdsProcureOutOrder params) { + + //更新出库单及新增出库明细 + updateOdsProcureOutOrder(params); + + //获取已完成,但没有过账的转储物料 + BatchProductionMaterialQuery query = new BatchProductionMaterialQuery(); + query.setUserDefined3("ZC"); + query.setOrderStatus("3"); + query.setActive("1"); + query.setUserDefined10("1"); + List orderList = odsProcureOutOrderMapper.getBatchProductionMaterialList(query); + + if (orderList.isEmpty()){ + return AjaxResult.success(); + } + + List> list = new ArrayList<>(); + for(OdsProcureOutOrder order : orderList){ + Map map = new HashMap<>(); + map.put("PLANT", params.getFactoryCode()); + map.put("LGORT", "0001"); + map.put("MATNR", order.getMaterialCode()); + map.put("QUANTITY", order.getOutNumber()); + map.put("MEINS", order.getUnit()); + map.put("MOVE_STLOC", "0087"); + list.add(map); + } + + //过账 + R result = remoteSapService.sapTransferPosting(list); + return postHandle(result,orderList); + + } + + @Override + @DS("#header.poolName") + public AjaxResult submitReverseMaterialList(OdsProcureOutOrder params) { + //更新出库单及新增出库明细 + updateOdsProcureOutOrder(params); + + //获取已完成,但没有过账的反冲物料 + BatchProductionMaterialQuery query = new BatchProductionMaterialQuery(); + query.setUserDefined3("X"); + query.setOrderStatus("3"); + query.setActive("1"); + query.setUserDefined10("1"); + List orderList = odsProcureOutOrderMapper.getBatchProductionMaterialList(query); + if (orderList.isEmpty()){ + return AjaxResult.success(); + } + + List> list = new ArrayList<>(); + for(OdsProcureOutOrder order : orderList){ + Map map = new HashMap<>(); + map.put("PLANT", params.getFactoryCode()); + map.put("LGORT", "0001"); + map.put("MATNR", order.getMaterialCode()); + map.put("QUANTITY", order.getOutNumber()); + map.put("MEINS", order.getUnit()); + map.put("MOVE_STLOC", "0013"); + list.add(map); + } + + R result = remoteSapService.sapTransferPosting(list); + return postHandle(result,orderList); + } + + //更新出库单及出库明细 + private void updateOdsProcureOutOrder(OdsProcureOutOrder params) { + List orderList = params.getOrderList(); + + //遍历列表 + for (OdsProcureOutOrder order : orderList) { + //计划数量 + BigDecimal planQty = order.getPlanNumber(); + //已出数量 + BigDecimal outQty = order.getOutNumber(); + //当前需出库数量 + BigDecimal currentQty = order.getQty(); + //应出数量 = 已出+需出 + BigDecimal totalQty = BigDecimal.ZERO; + if (currentQty == null) { + totalQty = outQty; + }else { + totalQty = outQty.add(currentQty); + } + + //已出+需出=计划数量,则满足出库状态 + if (totalQty.compareTo(planQty) >= 0) { + order.setOrderStatus("3"); + }else { + order.setOrderStatus("2"); + } + if ("1".equals(order.getIsPost())){ + order.setOrderStatus("3"); + } + + if ("3".equals(order.getOrderStatus())) { + //应出数量为0,返回错误 + if (totalQty.compareTo(BigDecimal.ZERO) == 0) { + throw new RuntimeException("物料编码:"+ order.getMaterialCode() + ",出库数量为0,无法过账"); + } + } + + //更新已出数量 + order.setOutNumber(totalQty); + order.setLastUpdateBy(params.getCreateBy()); + order.setLastUpdateDate(new Date()); + //更新出库单 + odsProcureOutOrderMapper.updateWmsOdsProcureOutOrder(order); + //新增出库明细 + order.setID(IdUtils.fastSimpleUUID()); + order.setActive("1"); + order.setCreateBy(params.getCreateBy()); + order.setCreateDate(new Date()); + order.setUserDefined1(null); + order.setUserDefined2(null); + odsProcureOutOrderMapper.insertWmsRawMissionOut(order); + } + } + + //过账信息处理 + private AjaxResult postHandle(R result, List list) { + int code = result.getCode(); + OdsProcureOutOrder order = new OdsProcureOutOrder(); + String msg = result.getMsg(); + order.setUserDefined11(msg); + if (code == 200) { + //过账成功 + Map map = (Map) result.getData(); + String userDefined9 = (String) map.get("postCode"); + order.setUserDefined9(userDefined9); + //成功 + order.setUserDefined10("2"); + odsProcureOutOrderMapper.updateWMSOdsProcureOutOrderByids(order, list); + return AjaxResult.success(msg); + } else { + order.setUserDefined9(""); + //失败 + order.setUserDefined10("3"); + odsProcureOutOrderMapper.updateWMSOdsProcureOutOrderByids(order, list); + return AjaxResult.error(msg); + } + } + +} diff --git a/op-modules/op-wms/src/main/resources/mapper/mes/MesPrepareMapper.xml b/op-modules/op-wms/src/main/resources/mapper/mes/MesPrepareMapper.xml new file mode 100644 index 000000000..ba029f389 --- /dev/null +++ b/op-modules/op-wms/src/main/resources/mapper/mes/MesPrepareMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml index 134972833..8a6849afa 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml @@ -2203,4 +2203,55 @@ ) + + + + + + UPDATE wms_ods_procure_out_order + SET + order_status = #{item.orderStatus}, + Out_Number = #{item.outNumber}, + user_defined9 = #{item.userDefined9}, + user_defined10 = #{item.userDefined10}, + user_defined11 = #{item.userDefined11}, + last_update_by = #{item.lastUpdateBy}, + last_update_date = #{item.lastUpdateDate} + WHERE + id = #{item.ID} + + + +