diff --git a/pom.xml b/pom.xml
index b7900ac..68cfee9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,11 @@
2.2.4
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 2.3.1
+
com.alibaba
diff --git a/zi-wms-boot/src/main/java/com/zi/mwms/solution/Application.java b/zi-wms-boot/src/main/java/com/zi/mwms/solution/Application.java
index 8b02e50..19eefb0 100644
--- a/zi-wms-boot/src/main/java/com/zi/mwms/solution/Application.java
+++ b/zi-wms-boot/src/main/java/com/zi/mwms/solution/Application.java
@@ -8,6 +8,7 @@ import java.util.PriorityQueue;
import com.cim.idm.framework.autoconfigure.ZidmPlatformLicenseAutoConfiguration;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
+import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +26,7 @@ import com.zi.mwms.solution.config.Globals;
@SpringBootApplication(scanBasePackages = { "com.cim.idm","com.zi.mwms"},exclude = ZidmPlatformLicenseAutoConfiguration.class)
@PropertySource("file:${configRootPath}/db/oracle.properties")
@PropertySource("file:${configRootPath}/middleware/middleware.properties")
+@MapperScan("com.cim.idm.dao")
//@EnableAdminServer
public class Application {
diff --git a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java
index 8ad59ec..bb66125 100644
--- a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java
+++ b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java
@@ -395,6 +395,68 @@ public class ToSAPServiceImpl {
}
return undoId;
}
+
+ /**
+ * 手动入库处理FGStockIn请求
+ * 该方法负责将特定的物料信息发送到SAP系统,并处理返回的结果
+ *
+ * @param bodyJson 包含物料信息的JSON字符串
+ * @param user 执行操作的用户
+ * @return 返回物料凭证相关的ID
+ * @throws Exception 如果与SAP系统的通信或其他错误发生时抛出异常
+ */
+ public String FGStockInByManulIn(String bodyJson, String user) throws Exception {
+ // 初始化SAP返回信息、结果代码、消息文本和撤销ID
+ String sapreturn = "";
+ String rcode = "";
+ String rmsg = "";
+ String undoId = "";
+
+ try {
+ // 发送物料信息到SAP系统
+ sapreturn = toSAPMessageUtil.sendHttpPost(toSAPMessageUtil.materialChangeLocationUrl, "",
+ bodyJson);
+
+ // 解析SAP系统的返回信息
+ org.json.JSONObject receiveJsonObject = new org.json.JSONObject(sapreturn);
+
+ // 提取返回信息中的RETURN对象
+ org.json.JSONObject returnJsonObject = (org.json.JSONObject) receiveJsonObject.get("RETURN");
+ rcode = returnJsonObject.get("STATUS").toString();
+ rmsg = returnJsonObject.get("MSGTXT").toString();
+
+ // 如果返回结果状态为"S"(成功),则拼接物料凭证号和凭证年度作为undoId
+ if ("S".equals(rcode)) {
+ undoId = returnJsonObject.get("MBLNR").toString()+"_"+returnJsonObject.get("MJAHR").toString();//将物料凭证号与凭证年度拼在一起
+ }
+ } catch (Exception e) {
+ // 记录异常日志,并抛出运行时异常
+ log.error("WMS请求SAP异常:" + e.getMessage(), e);
+ throw new RuntimeException("WMS请求SAP异常:" + rmsg);
+ } finally {
+ // 将消息记录log表
+ ErpMessageLog erplog = new ErpMessageLog();
+ erplog.setEventUser(user);
+ erplog.setServerName("WmsToErp");
+ erplog.setEventName("FGStockIn");
+ erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
+ erplog.setMessageId("");
+ erplog.setSendMsg2(bodyJson);
+ erplog.setSendMsg(bodyJson);
+ erplog.setReturnMsg2(sapreturn);
+ erplog.setResultCode(rcode);
+ MessageLogUtil.writeMessageLog(erplog);
+ }
+
+ // 如果返回结果状态不是"S",则抛出异常
+ if (!"S".equals(rcode)) {
+ throw new RuntimeException("SAP返回" + rmsg);
+ }
+
+ // 返回物料凭证相关的ID
+ return undoId;
+ }
+
//取消成品入库接口。zd.2024.8.29
public String cancelFGStockIn(List boxList, String user,String siteName) throws Exception {
diff --git a/zi-wms-inf/src/main/java/com/cim/idm/util/ToSAPMessageUtil.java b/zi-wms-inf/src/main/java/com/cim/idm/util/ToSAPMessageUtil.java
index 066374a..7b73f07 100644
--- a/zi-wms-inf/src/main/java/com/cim/idm/util/ToSAPMessageUtil.java
+++ b/zi-wms-inf/src/main/java/com/cim/idm/util/ToSAPMessageUtil.java
@@ -79,16 +79,16 @@ public class ToSAPMessageUtil {
// SDK
// 获取接口返回token
public static String authStr = "";
- public static String baseUrl = "http://172.22.10.53:51000/RESTAdapter/OAuthServer";
+ public static String baseUrl = "http://218.93.237.50:51000/RESTAdapter/OAuthServer";
// public static String baseUrl = "http://172.22.10.53:8101/RESTAdapter/OAuthServer";
// public static String baseUrl = "http://172.22.10.53:8003/RESTAdapter/OAuthServer";
// public static String DNUrl = "http://218.93.237.50:51000/RESTAdapter/sd023/api";
// DN回传接口
- public static String DNUrl = "http://172.22.10.53:51000/RESTAdapter/sd023/api";
+ public static String DNUrl = "http://218.93.237.50:51000/RESTAdapter/sd023/api";
// 货物移动接口
- public static String materialChangeLocationUrl = "http://172.22.10.53:51000/RESTAdapter/mm067/api";
+ public static String materialChangeLocationUrl = "http://218.93.237.50:51000/RESTAdapter/mm067/api";
// 物料凭证冲销接口
- public static String materilUndoUrl = "http://172.22.10.53:51000/RESTAdapter/mm068/api";
+ public static String materilUndoUrl = "http://218.93.237.50:51000/RESTAdapter/mm068/api";
public static String userName = "";
@@ -511,6 +511,9 @@ public class ToSAPMessageUtil {
public static String sendHttpPost(String url, String interfaceID, String JSONBody) throws Exception {
+ log.info("*************************************************" );
+ log.info("*************************************************" );
+ log.info("******************开始发送******************" );
// 调用业务接口,需实时获取token
authStr = getAccessToken(baseUrl);
@@ -528,6 +531,9 @@ public class ToSAPMessageUtil {
response.close();
httpClient.close();
log.info("Response:>>>>" + responseContent);
+ log.info("******************发送结束******************" );
+ log.info("*************************************************" );
+ log.info("*************************************************" );
return responseContent;
}
diff --git a/zi-wms-pda/src/main/java/com/cim/idm/config/LogAspect.java b/zi-wms-pda/src/main/java/com/cim/idm/config/LogAspect.java
new file mode 100644
index 0000000..69635b3
--- /dev/null
+++ b/zi-wms-pda/src/main/java/com/cim/idm/config/LogAspect.java
@@ -0,0 +1,61 @@
+package com.cim.idm.config;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 日志切面类,用于记录方法的执行情况
+ */
+@Aspect
+@Component
+public class LogAspect {
+
+ private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
+
+ /**
+ * 定义切点,匹配Service中的所有方法
+ */
+ @Pointcut("execution(* com.cim.idm.service.Impl.*Impl.*(..))")
+ public void logPointCut() {}
+
+ /**
+ * 环绕通知,记录方法执行前后的信息
+ *
+ * @param joinPoint 切入点
+ * @return 方法返回值
+ * @throws Throwable 如果方法抛出异常,则重新抛出
+ */
+ @Around("logPointCut()")
+ @Transactional // 添加事务管理
+ public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
+ long startTime = System.currentTimeMillis();
+ try {
+ // 记录方法执行前的日志
+ logger.info("Method Name : {}", joinPoint.getSignature().getName());
+ logger.info("Class Name : {}", joinPoint.getTarget().getClass().getName());
+ logger.info("Arguments : {}", joinPoint.getArgs());
+
+ // 执行目标方法
+ Object result = joinPoint.proceed();
+
+ // 记录方法执行后的日志
+ logger.info("Result : {}", result);
+
+ return result;
+ } catch (Throwable e) {
+ // 捕获异常并记录错误日志
+ logger.error("Exception in {} occurred.", joinPoint.getSignature().getName(), e);
+ throw e;
+ } finally {
+ // 记录方法执行时间
+ long endTime = System.currentTimeMillis();
+ logger.info("Execution Time : {} ms", (endTime - startTime));
+ }
+ }
+}
\ No newline at end of file
diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/FGStockInController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/FGStockInController.java
index bebaf36..125934e 100644
--- a/zi-wms-pda/src/main/java/com/cim/idm/controller/FGStockInController.java
+++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/FGStockInController.java
@@ -6,6 +6,8 @@ import com.cim.idm.exception.GlobalException;
import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.model.MaterialPacking;
import com.cim.idm.model.MaterialReceiveRequest;
+import com.cim.idm.response.BaseResponse;
+import com.cim.idm.response.RespGenerator;
import com.cim.idm.utils.AjaxResult;
import com.cim.idm.utils.CommonUtils;
import com.cim.idm.wmspackage.name.NameServiceProxy;
@@ -171,7 +173,7 @@ public class FGStockInController {
* @throws Exception 如果处理过程中发生异常
*/
@RequestMapping(value = "/FGStockIn", method = RequestMethod.POST)
- public AjaxResult fgStockIn(@RequestBody JSONObject in) throws Exception {
+ public BaseResponse