From b6273ac9ae7ddaa6fa112ab2fcd597e9f9a2d6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 26 Apr 2024 16:01:28 +0800 Subject: [PATCH] =?UTF-8?q?optimize:=20=E4=BC=98=E5=8C=96=E5=AF=BC?= =?UTF-8?q?=E5=85=A5SAP=E8=BF=94=E5=9B=9E=E7=9A=84=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/sap/impart2/ImportSapParamDTO.java | 4 +- .../pojo/vo/OperationErrorMsgBaseVO.java | 26 +++++++ .../bomnew/pojo/vo/OperationErrorMsgVO.java | 20 +++--- .../bomnew/service/SapOpUtilService.java | 68 ++++++++----------- .../product/bomnew/service/SapService.java | 2 +- .../exception/BaseGlobalExceptionHandle.java | 10 ++- .../core/exception/ErrorMsgException.java | 24 +++++++ .../java/nflg/product/common/vo/ResultVO.java | 10 ++- 8 files changed, 110 insertions(+), 54 deletions(-) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OperationErrorMsgBaseVO.java create mode 100644 nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/exception/ErrorMsgException.java diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/impart2/ImportSapParamDTO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/impart2/ImportSapParamDTO.java index ddfb7144..8af87d06 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/impart2/ImportSapParamDTO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/sap/impart2/ImportSapParamDTO.java @@ -13,10 +13,10 @@ import java.util.List; public class ImportSapParamDTO { @ApiModelProperty("流程标题,默认“主数据平台") - private String I_LCBT = "主数据"; + private String I_LCBT = "主数据平台"; @ApiModelProperty("默认X") - private String I_ACT = "x"; + private String I_ACT = "X"; private String ZID=""; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OperationErrorMsgBaseVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OperationErrorMsgBaseVO.java new file mode 100644 index 00000000..0cc71b1b --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OperationErrorMsgBaseVO.java @@ -0,0 +1,26 @@ +package com.nflg.product.bomnew.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * @author 曹鹏飞 + * @date 2024/4/26 13:44:01 + */ +public class OperationErrorMsgBaseVO implements Serializable { + + @ApiModelProperty("错误描述") + public String msg; + + public OperationErrorMsgBaseVO() { + } + + public OperationErrorMsgBaseVO(String msg) { + this.msg = msg; + } + + public static OperationErrorMsgBaseVO create(String msg) { + return new OperationErrorMsgBaseVO(msg); + } +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OperationErrorMsgVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OperationErrorMsgVO.java index 64870d44..23e02cb5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OperationErrorMsgVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/OperationErrorMsgVO.java @@ -1,22 +1,26 @@ package com.nflg.product.bomnew.pojo.vo; import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; + +import java.io.Serializable; /** * @author 曹鹏飞 * @date 2024-03-21 14:49:05 */ -@Data -@AllArgsConstructor -public class OperationErrorMsgVO { +public class OperationErrorMsgVO extends OperationErrorMsgBaseVO implements Serializable { @ApiModelProperty("主键数据") - private String primaryKey; + public String primaryKey; - @ApiModelProperty("错误描述") - private String msg; + public OperationErrorMsgVO() { + } + + public OperationErrorMsgVO(String primaryKey, String msg) { + super(msg); + this.primaryKey = primaryKey; + this.msg = msg; + } public static OperationErrorMsgVO create(String primaryKey, String msg) { return new OperationErrorMsgVO(primaryKey, msg); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapOpUtilService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapOpUtilService.java index 006e4aa1..2f64f08b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapOpUtilService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapOpUtilService.java @@ -2,17 +2,18 @@ package com.nflg.product.bomnew.service; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.TypeReference; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; +import com.nflg.product.base.core.exception.ErrorMsgException; import com.nflg.product.bomnew.pojo.dto.sap.ImportToSapDTO; import com.nflg.product.bomnew.pojo.dto.sap.SapReqParams; import com.nflg.product.bomnew.pojo.dto.sap.SapResult; import com.nflg.product.bomnew.pojo.dto.sap.impart2.ImportSapParam2DTO; import com.nflg.product.bomnew.pojo.dto.sap.impart2.ImportSapParamDTO; import com.nflg.product.bomnew.pojo.dto.sap.impart2.T1DTO; +import com.nflg.product.bomnew.pojo.vo.OperationErrorMsgBaseVO; import lombok.extern.slf4j.Slf4j; import nflg.product.common.constant.STATE; import nflg.product.common.vo.ResultVO; @@ -20,10 +21,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @Service @@ -143,18 +141,16 @@ public class SapOpUtilService { if (CollUtil.isEmpty(impartSapParamDTO.getT1())) { return ResultVO.error("同步SAP 参数错误"); } - - SapReqParams params = new SapReqParams(); // 接口名 params.setFunName("ZRFC_PP_003"); - Map> inputStructure = new HashMap<>(); + //Map> inputStructure = new HashMap<>(); ImportSapParam2DTO pp=Convert.convert(ImportSapParam2DTO.class ,impartSapParamDTO); Map parentMap = Convert.convert(new TypeReference>() { }, pp); - inputStructure.put("I_STKO", parentMap); + //inputStructure.put("I_STKO", parentMap); params.setInputParams(parentMap); Map>> inputTables = new HashMap<>(); @@ -177,49 +173,41 @@ public class SapOpUtilService { List< T1DTO > list=null; if (!CollectionUtils.isEmpty(tOut)) { - list = Convert.convert(new TypeReference >() { + list = Convert.convert(new TypeReference>() { }, tOut); } log.info("导入到SAP--返回值:" + JSON.toJSONString(outTablesMap)); - if(CollectionUtil.isNotEmpty(list)){ - - StringBuffer errBuf=new StringBuffer(); + if (CollUtil.isNotEmpty(list)) { + //StringBuffer errBuf=new StringBuffer(); + List liError = new ArrayList<>(); AtomicInteger errCount= new AtomicInteger(); AtomicInteger succCount= new AtomicInteger(); - for (T1DTO item: - list) { - - - if( backList !=null){ - backList.add(item); - } - //"FLAG": "1" -- 0 失败;1 成功 - if(item.getFLAG().equals("0")){ - errCount.getAndIncrement(); - errBuf.append(item.getSTATUS()+","); - }else if (item.getFLAG().equals("1")){ - succCount.getAndIncrement(); - } - - } - - - - if(errCount.get()>0){ - throw new Exception(errBuf.toString()); + for (T1DTO item : list) { + if (backList != null) { + backList.add(item); + } + //"FLAG": "1" -- 0 失败;1 成功 + if (item.getFLAG().equals("0")) { + errCount.getAndIncrement(); + //errBuf.append(item.getSTATUS() + ","); + liError.add(OperationErrorMsgBaseVO.create(item.getSTATUS())); + } else if (item.getFLAG().equals("1")) { + succCount.getAndIncrement(); + } + } + if (errCount.get() > 0) { + //throw new Exception(errBuf.toString()); + throw new ErrorMsgException(STATE.Success, "导入到SAP出错", liError); } - }else{ - throw new Exception("获取sap返回数据转换异常"); + throw new Exception("获取sap返回数据转换异常"); } - - + } catch (ErrorMsgException e) { + throw e; } catch (Exception e) { return ResultVO.error(STATE.Error, e.getMessage()); } - - return ResultVO.success(); } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java index beca05f5..4fa84af4 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/SapService.java @@ -255,7 +255,7 @@ public class SapService implements ApplicationContextAware { res.setOutTablesMap(outTablesMap); } catch (Exception e) { - e.printStackTrace(); + log.error("导入SAP出错", e); res.setCode(500); res.setSuccess(false); res.setMsg(e.getMessage()); diff --git a/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/exception/BaseGlobalExceptionHandle.java b/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/exception/BaseGlobalExceptionHandle.java index 3319d282..c9fcfa81 100644 --- a/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/exception/BaseGlobalExceptionHandle.java +++ b/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/exception/BaseGlobalExceptionHandle.java @@ -35,7 +35,7 @@ public class BaseGlobalExceptionHandle { public ResultVO handleJeecgBootException(NflgBusinessException e) { log.error(e.getMessage(), e); //return ResultVO.error(e.getState(), e.getMessage()); - return ResultVO.error(e.getState(),e.getMessage()); + return ResultVO.error(e.getState(), e.getMessage()); } @ExceptionHandler(value = NoHandlerFoundException.class) @@ -152,4 +152,12 @@ public class BaseGlobalExceptionHandle { log.error(ex.getMessage(),ex); return ResultVO.error(STATE.ParamErr, ex.getParameterName()+"参数不能为空"); } + + @ExceptionHandler(value = ErrorMsgException.class) + @ResponseBody + public ResultVO handleErrorMsgException(ErrorMsgException e) { + log.error(e.getMessage(), e); + //return ResultVO.error(e.getState(), e.getMessage()); + return ResultVO.error(e.getState(), e.getMessage(), e.getData()); + } } diff --git a/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/exception/ErrorMsgException.java b/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/exception/ErrorMsgException.java new file mode 100644 index 00000000..ca1c9a80 --- /dev/null +++ b/nflg_project_dev/nflg-boot-base/nflg-boot-core/src/main/java/com/nflg/product/base/core/exception/ErrorMsgException.java @@ -0,0 +1,24 @@ +package com.nflg.product.base.core.exception; + +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import nflg.product.common.constant.STATE; + +/** + * @author 曹鹏飞 + * @date 2024/4/26 14:18:09 + */ +@Getter +@Slf4j +public class ErrorMsgException extends RuntimeException { + private final STATE state; + private final String msg; + private final Object data; + + public ErrorMsgException(STATE state, String msg, Object data) { + super(msg); + this.state = state; + this.msg = msg; + this.data = data; + } +} diff --git a/nflg_project_dev/nflg-boot-base/nflg-common/src/main/java/nflg/product/common/vo/ResultVO.java b/nflg_project_dev/nflg-boot-base/nflg-common/src/main/java/nflg/product/common/vo/ResultVO.java index 5b9da869..3fdb48e1 100644 --- a/nflg_project_dev/nflg-boot-base/nflg-common/src/main/java/nflg/product/common/vo/ResultVO.java +++ b/nflg_project_dev/nflg-boot-base/nflg-common/src/main/java/nflg/product/common/vo/ResultVO.java @@ -1,6 +1,5 @@ package nflg.product.common.vo; -import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.StrUtil; import lombok.Data; import nflg.product.common.constant.STATE; @@ -44,6 +43,7 @@ public class ResultVO implements Serializable { vo.msg = msg; return vo; } + public static ResultVO error(STATE code, String msg) { return error(msg, code.getState(), null); } @@ -70,6 +70,12 @@ public class ResultVO implements Serializable { return error(msg ,STATE.PassportErr.getState()); } - + public static ResultVO error(STATE state, String msg, Object value) { + ResultVO vo = new ResultVO<>(); + vo.data = value; + vo.state = state.getState(); + vo.msg = msg; + return vo; + } } \ No newline at end of file