2 Commits 231d218aca ... 3d980ea691

Author SHA1 Message Date
  zxl 3d980ea691 Merge remote-tracking branch 'origin/yitoa_EDI_REST' into yitoa_EDI_REST 1 month ago
  zxl 1024ddbf11 歌尔订单对接 1 month ago

+ 7 - 0
pom.xml

@@ -130,6 +130,13 @@
 		    <artifactId>flexjson</artifactId>
 		    <version>2.1</version>
 		</dependency>
+
+		<!--hutool-->
+		<dependency>
+			<groupId>cn.hutool</groupId>
+			<artifactId>hutool-all</artifactId>
+			<version>5.8.26</version>
+		</dependency>
 		
 		<dependency>
 		    <groupId>org.springframework.boot</groupId>

+ 32 - 0
src/main/java/com/uas/eis/controller/GEController.java

@@ -0,0 +1,32 @@
+package com.uas.eis.controller;
+
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.entity.GRApiResult;
+import com.uas.eis.service.GEService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import com.uas.eis.dto.*;
+
+@RestController
+public class GEController {
+    @Autowired
+    private GEService gEService;
+
+    /**
+     * 获取订单
+     */
+    @PostMapping("/api/getPoordergr")
+    public GRApiResult<String> getPoordergr(HttpServletRequest request, @RequestBody PoOrderGrDTO dto){
+        return gEService.getPoordergr(request, dto);
+    }
+
+    /**
+     * 推送出货信息
+     */
+    @PostMapping("/api/pushSenderInfo")
+    public ApiResult<String> pushSenderInfo( @RequestBody PoOrderGrDTO dto){
+        return gEService.pushSenderInfo(dto);
+    }
+}

+ 50 - 0
src/main/java/com/uas/eis/dto/PoOrderAddrinfosGrDTO.java

@@ -0,0 +1,50 @@
+package com.uas.eis.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class PoOrderAddrinfosGrDTO {
+    private String addrId;
+    private String senderQualifier;
+    private String senderId;
+    private String receiverQualifier;
+    private String receiverId;
+    private String msgType;
+    private String msgAlias;
+    private String msgId;
+    private String partyType;
+    private String partyName;
+    private String partyCode;
+    private String addiName1;
+    private String addiName2;
+    private String street1;
+    private String street2;
+    private String street3;
+    private String street4;
+    private String city;
+    private String state;
+    private String postalCode;
+    private String countryCode;
+    private String countryName;
+    private String district;
+    private String contactName;
+    private String contactEmail;
+    private String phone;
+    private String fax;
+    private String attr1;
+    private String attr2;
+    private String attr3;
+    private String attr4;
+    private String attr5;
+    private String attr6;
+    private String attr7;
+    private String attr8;
+    private String attr9;
+    private String attr10;
+    private Integer apoid;
+
+
+
+}

+ 51 - 0
src/main/java/com/uas/eis/dto/PoOrderDetailsGrDTO.java

@@ -0,0 +1,51 @@
+package com.uas.eis.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class PoOrderDetailsGrDTO {
+    private String hid;
+    private String poNo;
+    private String poLineNo;
+    private String poLineType;
+    private String orderedQty;
+    private String qtyUom;
+    private String unitPrice;
+    private String priceUom;
+    private String custPartNo;
+    private String custPartDesc;
+    private String vendorPartNo;
+    private String vendorPartDesc;
+    private String manufactoryCode;
+    private String manufactoryName;
+    private String reqDate;
+    private String etd;
+    private String eta;
+    private String transMode;
+    private String soNo;
+    private String soLineNo;
+    private String totalAmount;
+    private String taxRate;
+    private String attr1;
+    private String attr2;
+    private String attr3;
+    private String attr4;
+    private String attr5;
+    private String attr6;
+    private String attr7;
+    private String attr8;
+    private String attr9;
+    private String attr10;
+    private String extraRefCode1;
+    private String extraRefText1;
+    private String extraRefCode2;
+    private String extraRefText2;
+    private Integer dpoid;
+    private Integer detid;
+    private List<PoOrderSubDetailsGrDTO> subDetails;
+
+
+}

+ 66 - 0
src/main/java/com/uas/eis/dto/PoOrderGrDTO.java

@@ -0,0 +1,66 @@
+package com.uas.eis.dto;
+
+import lombok.Data;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class PoOrderGrDTO {
+    private String hid;
+    private String transId;
+    private String siteCode;
+    private String senderQualifier;
+    private String senderId;
+    private String receiverQualifier;
+    private String receiverId;
+    private String regionCode;
+    private String poType;
+    private String poHeadId;
+    private String poNo;
+    private String poVersion;
+    private String agentName;
+    private String poDate;
+    private String custRefNo;
+    private String currency;
+    private String rate;
+    private String totalAmount;
+    private String poe;
+    private String modelType;
+    private String manufactoryCode;
+    private String manufactoryName;
+    private String vendorCode;
+    private String vendorName;
+    private String soNo;
+    private String incotermsCode;
+    private String paymentTerm;
+    private String carrierType;
+    private String carrierCode;
+    private String carrierName;
+    private String transMode;
+    private String coc;
+    private String custStorLoc;
+    private String purGroup;
+    private String custCompCode;
+    private String poStatus;
+    private String transFlag;
+    private String transDate;
+    private String attr1;
+    private String attr2;
+    private String attr3;
+    private String attr4;
+    private String attr5;
+    private String attr6;
+    private String attr7;
+    private String attr8;
+    private String attr9;
+    private String attr10;
+    private String extraRefCode1;
+    private String extraRefText1;
+    private String extraRefCode2;
+    private String extraRefText2;
+    private Date porecorddate;
+    private Integer poid;
+    private List<PoOrderDetailsGrDTO> details;
+    private List<PoOrderAddrinfosGrDTO> addrInfos;
+
+}

+ 34 - 0
src/main/java/com/uas/eis/dto/PoOrderSubDetailsGrDTO.java

@@ -0,0 +1,34 @@
+package com.uas.eis.dto;
+
+import lombok.Data;
+import java.util.Date;
+
+@Data
+public class PoOrderSubDetailsGrDTO {
+    private String hid;
+    private String poNo;
+    private String poLineNo;
+    private String poSubLineNo;
+    private String stOrgCode;
+    private String reqQty;
+    private String qtyUom;
+    private String reqDate;
+    private String subETD;
+    private String subETA;
+    private String attr1;
+    private String attr2;
+    private String attr3;
+    private String attr4;
+    private String attr5;
+    private String attr6;
+    private String attr7;
+    private String attr8;
+    private String attr9;
+    private String attr10;
+    private Integer sdpoid;
+    private Integer sdetid;
+
+
+
+
+}

+ 22 - 0
src/main/java/com/uas/eis/sdk/entity/Errors.java

@@ -0,0 +1,22 @@
+package com.uas.eis.sdk.entity;
+
+import lombok.Data;
+
+/**
+ * 歌尔响应接口错误信息类
+ * */
+
+@Data
+public class Errors {
+
+    /**
+     * 错误代码
+     * */
+    private String errorCode;
+
+    /**
+     * 错误明细
+     * */
+    private String errorMsg;
+
+}

+ 64 - 0
src/main/java/com/uas/eis/sdk/entity/GRApiResult.java

@@ -0,0 +1,64 @@
+package com.uas.eis.sdk.entity;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ *歌尔接口响应类
+ */
+
+@Data
+public class GRApiResult<T> {
+
+    /**
+     * 自定义业务码
+     * @return true:成功  false:失败
+     */
+    private String success;
+
+    /**
+     * 交易为宜值,对应PO中的transId
+     * */
+    private String transId;
+
+    /**
+     * 错误明细,数组,出现错误时需要返回
+     * */
+    private List<Errors> errors;
+
+    public String getSuccess() {
+        return success;
+    }
+
+    public GRApiResult<T> setSuccess(String success) {
+        this.success = success;
+        return this;
+    }
+
+    public String getTransId() {
+        return transId;
+    }
+
+    public GRApiResult<T> setTransId(String transId) {
+        this.transId = transId;
+        return this;
+    }
+
+    public GRApiResult(){
+
+    }
+
+    public GRApiResult(String success, String transId){
+        this.success = success;
+        this.transId = transId;
+    }
+
+    public GRApiResult(String success, String transId, List<Errors> errors){
+        this.success = success;
+        this.transId = transId;
+        this.errors = errors;
+    }
+
+}

+ 23 - 0
src/main/java/com/uas/eis/service/GEService.java

@@ -0,0 +1,23 @@
+package com.uas.eis.service;
+
+
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.entity.GRApiResult;
+
+import javax.servlet.http.HttpServletRequest;
+import com.uas.eis.dto.*;
+
+public interface GEService {
+
+    /**
+     * 获取订单
+     */
+    GRApiResult<String> getPoordergr(HttpServletRequest request, PoOrderGrDTO dto);
+
+    /**
+     * http调用歌尔856接口
+     * 暂时使用PoOrderGrDto,后期需要新建替换
+     * */
+    ApiResult<String> pushSenderInfo(PoOrderGrDTO dto);
+
+}

+ 185 - 0
src/main/java/com/uas/eis/service/Impl/GEServiceImpl.java

@@ -0,0 +1,185 @@
+package com.uas.eis.service.Impl;
+
+import com.alibaba.fastjson.JSON;
+import com.uas.eis.config.SynaConfig;
+import com.uas.eis.core.config.SpObserver;
+import com.uas.eis.core.support.TokenProperties;
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.entity.*;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.entity.GRApiResult;
+import com.uas.eis.sdk.entity.Errors;
+import com.uas.eis.sdk.resp.ApiResponse;
+import com.uas.eis.service.CommonService;
+import com.uas.eis.service.GEService;
+import com.uas.eis.utils.HttpUtil;
+import com.uas.eis.utils.HuToolUtils;
+import com.uas.eis.vo.HttpResultResponse;
+import okhttp3.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.constraints.Null;
+import java.util.*;
+import com.uas.eis.dto.*;
+
+/**
+ * @author zxl
+ * @email zxl@usoftchina.com
+ */
+@Service
+public class GEServiceImpl implements GEService {
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+    private static Map<String, String> tokenConfig = TokenProperties.getAllProperty();
+
+    @Autowired
+    private BaseDao baseDao;
+
+    @Autowired
+    private SynaConfig synaConfig;
+    @Autowired
+    private CommonService commonService;
+
+    @Value("${api.url.geer.asn}")
+    private String asnUrl;
+
+
+    @Override
+    public GRApiResult<String> getPoordergr(HttpServletRequest request, PoOrderGrDTO dto) {
+        GRApiResult<String> grApiResult = new GRApiResult<String>();
+        if("18850".equals(dto.getVendorCode())){
+            SpObserver.putSp("N_HUASL_QD");
+        }else if("14780".equals(dto.getVendorCode())){
+            SpObserver.putSp("N_HUASL_T");
+        }else {
+            grApiResult.setSuccess("false");
+            grApiResult.setTransId(dto.getTransId());
+            List<Errors> errorss = new ArrayList<Errors>();
+            Errors errors = new Errors();
+            errors.setErrorCode("E07");
+            errors.setErrorMsg("供应商编号不是18850或者14780!");
+            errorss.add(errors);
+            grApiResult.setErrors(errorss);
+            return grApiResult;
+        }
+
+        List<String> sqls = new ArrayList<>();
+        //PO表增加主键ID
+        int poid = baseDao.getSeqId("POORDERGR_SEQ");
+        sqls.add("insert into POORDERGR (HID,TRANSID,SITECODE,SENDERQUALIFIER,SENDERID,RECEIVERQUALIFIER,RECEIVERID,REGIONCODE," +
+                "POTYPE,POHEADID,PONO,POVERSION,AGENTNAME," +
+                "PODATE,CUSTREFNO,CURRENCY,RATE,TOTALAMOUNT," +
+                "POE,MODELTYPE,MANUFACTORYCODE,MANUFACTORYNAME,VENDORCODE,VENDORNAME,SONO,INCOTERMSCODE,PAYMENTTERM," +
+                "CARRIERTYPE,CARRIERCODE,CARRIERNAME,TRANSMODE,COC,CUSTSTORLOC,PURGROUP,CUSTCOMPCODE,POSTATUS," +
+                "TRANSFLAG,TRANSDATE,ATTR1,ATTR2,ATTR3,ATTR4,ATTR5,ATTR6,ATTR7,ATTR8,ATTR9," +
+                "ATTR10,EXTRAREFCODE1,EXTRAREFTEXT1,EXTRAREFCODE2,EXTRAREFTEXT2,PORECORDDATE,POID) " +
+                "values ('"+dto.getHid()+"','"+dto.getTransId()+"','"+dto.getSiteCode()+"','"+dto.getSenderQualifier()+"','"+dto.getSenderId()+"','"+dto.getReceiverQualifier()+"','"+dto.getReceiverId()+"','"+dto.getRegionCode()+"'" +
+                ",'"+dto.getPoType()+"','"+dto.getPoHeadId()+"','"+dto.getPoNo()+"','"+dto.getPoVersion()+"','"+dto.getAgentName()+"'," +
+                "case when '"+dto.getPoDate()+"' = 'null' then null else TO_DATE('"+dto.getPoDate()+"', 'YYYY-MM-DD HH24:MI:SS') end,'"+dto.getCustRefNo()+"','"+dto.getCurrency()+"','"+dto.getRate()+"','"+dto.getTotalAmount()+"'" +
+                ",'"+dto.getPoe()+"','"+dto.getModelType()+"','"+dto.getManufactoryCode()+"','"+dto.getManufactoryName()+"','"+dto.getVendorCode()+"','"+dto.getVendorName()+"','"+dto.getSoNo()+"','"+dto.getIncotermsCode()+"','"+dto.getPaymentTerm()+"'" +
+                ",'"+dto.getCarrierType()+"','"+dto.getCarrierCode()+"','"+dto.getCarrierName()+"','"+dto.getTransMode()+"','"+dto.getCoc()+"','"+dto.getCustStorLoc()+"','"+dto.getPurGroup()+"','"+dto.getCustCompCode()+"','"+dto.getPoStatus()+"'" +
+                ",'"+dto.getTransFlag()+"'," +
+                "case when '"+dto.getTransDate()+"' = 'null' then null else TO_DATE('"+dto.getTransDate()+"', 'YYYY-MM-DD HH24:MI:SS') end,'"+dto.getAttr1()+"','"+dto.getAttr2()+"','"+dto.getAttr3()+"','"+dto.getAttr4()+"','"+dto.getAttr5()+"','"+dto.getAttr6()+"','"+dto.getAttr7()+"','"+dto.getAttr8()+"','"+dto.getAttr9()+"'" +
+                ",'"+dto.getAttr10()+"','"+dto.getExtraRefCode1()+"','"+dto.getExtraRefText1()+"','"+dto.getExtraRefCode2()+"','"+dto.getExtraRefText2()+"',sysdate,"+poid+")");
+        for (int i = 0; i < dto.getDetails().size(); i++) {
+            //PO明细表增加主键ID
+            int podetailid = baseDao.getSeqId("POORDERDETAILSGR_SEQ");
+            PoOrderDetailsGrDTO podetail = dto.getDetails().get(i);
+            sqls.add("insert into POORDERDETAILSGR (HID,PONO,POLINENO,POLINETYPE,ORDEREDQTY,QTYUOM,UNITPRICE,PRICEUOM," +
+                    "CUSTPARTNO,CUSTPARTDESC,VENDORPARTNO,VENDORPARTDESC,MANUFACTORYCODE,MANUFACTORYNAME," +
+                    "REQDATE,ETD,ETA," +
+                    "TRANSMODE,SONO,SOLINENO,TOTALAMOUNT,TAXRATE,ATTR1,ATTR2,ATTR3,ATTR4,ATTR5,ATTR6," +
+                    "ATTR7,ATTR8,ATTR9,ATTR10,EXTRAREFCODE1,EXTRAREFTEXT1,EXTRAREFCODE2,EXTRAREFTEXT2,DPOID,DETID) " +
+                    "values ('"+podetail.getHid()+"','"+podetail.getPoNo()+"','"+podetail.getPoLineNo()+"','"+podetail.getPoLineType()+"','"+podetail.getOrderedQty()+"','"+podetail.getQtyUom()+"','"+podetail.getUnitPrice()+"','"+podetail.getPriceUom()+"'" +
+                    ",'"+podetail.getCustPartNo()+"','"+podetail.getCustPartDesc()+"','"+podetail.getVendorPartNo()+"','"+podetail.getVendorPartDesc()+"','"+podetail.getManufactoryCode()+"','"+podetail.getManufactoryName()+"'" +
+                    ",case when '"+podetail.getReqDate()+"' = 'null' then null else TO_DATE('"+podetail.getReqDate()+"', 'YYYY-MM-DD HH24:MI:SS') end " +
+                    ",case when '"+podetail.getEtd()+"' = 'null' then null else TO_DATE('"+podetail.getEtd()+"', 'YYYY-MM-DD HH24:MI:SS') end " +
+                    ",case when '"+podetail.getEta()+"' = 'null' then null else TO_DATE('"+podetail.getEta()+"', 'YYYY-MM-DD HH24:MI:SS') end " +
+                    ",'"+podetail.getTransMode()+"','"+podetail.getSoNo()+"','"+podetail.getSoLineNo()+"','"+podetail.getTotalAmount()+"','"+podetail.getTaxRate()+"','"+podetail.getAttr1()+"','"+podetail.getAttr2()+"','"+podetail.getAttr3()+"','"+podetail.getAttr4()+"','"+podetail.getAttr5()+"','"+podetail.getAttr6()+"'" +
+                    ",'"+podetail.getAttr7()+"','"+podetail.getAttr8()+"','"+podetail.getAttr9()+"','"+podetail.getAttr10()+"','"+podetail.getExtraRefCode1()+"','"+podetail.getExtraRefText1()+"','"+podetail.getExtraRefCode2()+"','"+podetail.getExtraRefText2()+"',"+poid+","+podetailid+")");
+            for (int j = 0; j < podetail.getSubDetails().size(); j++) {
+                PoOrderSubDetailsGrDTO subdetails = dto.getDetails().get(i).getSubDetails().get(j);
+                subdetails.setSdpoid(poid);
+                subdetails.setSdetid(podetailid);
+                sqls.add("insert into POORDERSUBDETAILSGR (HID,PONO,POLINENO,POSUBLINENO,STORGCODE,REQQTY,QTYUOM," +
+                        "REQDATE," +
+                        "SUBETD,SUBETA,ATTR1,ATTR2,ATTR3,ATTR4,ATTR5,ATTR6,ATTR7," +
+                        "ATTR8,ATTR9,ATTR10,SDPOID,SDETID)" +
+                        "values ('"+subdetails.getHid()+"','"+subdetails.getPoNo()+"','"+subdetails.getPoLineNo()+"','"+subdetails.getPoSubLineNo()+"','"+subdetails.getStOrgCode()+"','"+subdetails.getReqQty()+"','"+subdetails.getQtyUom()+"'" +
+                        ",case when '"+subdetails.getReqDate()+"' = 'null' then null else TO_DATE('"+subdetails.getReqDate()+"', 'YYYY-MM-DD HH24:MI:SS') end " +
+                        ",case when '"+subdetails.getSubETD()+"' = 'null' then null else TO_DATE('"+subdetails.getSubETD()+"', 'YYYY-MM-DD HH24:MI:SS') end " +
+                        ",case when '"+subdetails.getSubETA()+"' = 'null' then null else TO_DATE('"+subdetails.getSubETA()+"', 'YYYY-MM-DD HH24:MI:SS') end " +
+                        ",'"+subdetails.getAttr1()+"','"+subdetails.getAttr2()+"','"+subdetails.getAttr3()+"','"+subdetails.getAttr4()+"','"+subdetails.getAttr5()+"','"+subdetails.getAttr6()+"','"+subdetails.getAttr7()+"'" +
+                        ",'"+subdetails.getAttr8()+"','"+subdetails.getAttr9()+"','"+subdetails.getAttr10()+"',"+poid+","+podetailid+")");
+            }
+        }
+        for (int i = 0; i < dto.getAddrInfos().size(); i++) {
+            PoOrderAddrinfosGrDTO addrinfos = dto.getAddrInfos().get(i);
+            sqls.add("insert into POORDERADDRINFOSGR (ADDRID,SENDERQUALIFIER,SENDERID,RECEIVERQUALIFIER,RECEIVERID,MSGTYPE,MSGALIAS,MSGID," +
+                    "PARTYTYPE,PARTYNAME,PARTYCODE,ADDINAME1,ADDINAME2,STREET1,STREET2,STREET3,STREET4," +
+                    "CITY,STATE,POSTALCODE,COUNTRYCODE,COUNTRYNAME,DISTRICT,CONTACTNAME,CONTACTEMAIL,PHONE," +
+                    "FAX,ATTR1,ATTR2,ATTR3,ATTR4,ATTR5,ATTR6,ATTR7,ATTR8," +
+                    "ATTR9,ATTR10,APOID)" +
+                    "values ('"+addrinfos.getAddrId()+"','"+addrinfos.getSenderQualifier()+"','"+addrinfos.getSenderId()+"','"+addrinfos.getReceiverQualifier()+"','"+addrinfos.getReceiverId()+"','"+addrinfos.getMsgType()+"','"+addrinfos.getMsgAlias()+"','"+addrinfos.getMsgId()+"'" +
+                    ",'"+addrinfos.getPartyType()+"','"+addrinfos.getPartyName()+"','"+addrinfos.getPartyCode()+"','"+addrinfos.getAddiName1()+"','"+addrinfos.getAddiName2()+"','"+addrinfos.getStreet1()+"','"+addrinfos.getStreet2()+"','"+addrinfos.getStreet3()+"','"+addrinfos.getStreet4()+"'" +
+                    ",'"+addrinfos.getCity()+"','"+addrinfos.getState()+"','"+addrinfos.getPostalCode()+"','"+addrinfos.getCountryCode()+"','"+addrinfos.getCountryName()+"','"+addrinfos.getDistrict()+"','"+addrinfos.getContactName()+"','"+addrinfos.getContactEmail()+"','"+addrinfos.getPhone()+"'" +
+                    ",'"+addrinfos.getFax()+"','"+addrinfos.getAttr1()+"','"+addrinfos.getAttr2()+"','"+addrinfos.getAttr3()+"','"+addrinfos.getAttr4()+"','"+addrinfos.getAttr5()+"','"+addrinfos.getAttr6()+"','"+addrinfos.getAttr7()+"','"+addrinfos.getAttr8()+"'" +
+                    ",'"+addrinfos.getAttr9()+"','"+addrinfos.getAttr10()+"',"+poid+")");
+        }
+
+        //插入系统中间表
+        int scgid = baseDao.getSeqId("SALECONFIRMGR_SEQ");
+        String scgcode = baseDao.sGetMaxNumber("SaleConfirmGr", 2);
+        sqls.add("insert into SALECONFIRMGR (SCG_ID,SCG_CODE,SCG_RECORDDATE,SCG_RECORDER,SCG_STATUS,SCG_STATUSCODE,SCG_REMARK,SCG_AUDITMAN,SCG_AUDITDATE," +
+                "SCG_CUSTGRCODE,SCG_CUSTGRNAME,SCG_CUSTCODE,SCG_CUSTNAME,SCG_SAKIND,SCG_POCODE,SCG_CURRENCY,SCG_RATE," +
+                "SCG_SADATE,SCG_GRPOCODE,SCG_GRHID,SCG_GRPOID)" +
+                "select "+scgid+",'"+scgcode+"',sysdate,'王平','在录入','ENTERING','','','', " +
+                "PARTYCODE,PARTYNAME,nvl(cd_varchar50_1,PARTYCODE),nvl(cd_varchar50_2,PARTYNAME),'标准订单','poNo',currency,case when rate = 'null' then '0' else rate end," +
+                "poDate,soNo,case when HID = 'null' then '0' else HID end,POID " +
+                "from POORDERGR left join POORDERADDRINFOSGR on APOID = POID and nvl(PARTYTYPE,' ') = 'BY'  " +
+                "left join N_HUASL_QD.CUSTOMTABLE on ct_caller='GECUSTDZ' left join N_HUASL_QD.CUSTOMTABLEDETAIL ON CD_CTID = CT_ID and ct_varchar50_5 = PARTYNAME " +
+                "where POID = " + poid);
+        sqls.add("insert into SALECONFIRMGRDETAIL (SCGD_ID,SCGD_SCGID,SCGD_DETNO,SCGD_REMARK,SCGD_GRDETNO,SCGD_GRPRCODE,SCGD_GRPRNAME," +
+                "SCGD_PRCODE,SCGD_PRDETAIL,SCGD_SELLERCODE,SCGD_SELLERNAME,SCGD_DELIVERY," +
+                "SCGD_QTY,SCGD_PRICE,SCGD_TOTAL," +
+                "SCGD_GRPOCODE,SCGD_GRHID,SCGD_GRPOID,SCGD_GRDPOID)" +
+                "select SALECONFIRMGRDETAIL_SEQ.nextval,"+scgid+",rownum,'',poLineNo,custPartNo,custPartDesc," +
+                "nvl(custPartNo,pc_prodcode),nvl(custPartDesc,pr_detail),pc_sellercode_user,pc_sellername_user,reqDate," +
+                "case when orderedQty = 'null' then '0' else orderedQty end, case when unitPrice = 'null' then '0' else unitPrice end,case when totalAmount = 'null' then '0' else totalAmount end,  " +
+                "soNo,case when HID = 'null' then '0' else HID end,DPOID,DETID " +
+                "from POORDERDETAILSGR left join N_HUASL_QD.PRODUCTCUSTOMER on custPartNo = pc_custprodcode and pc_custcode = 'GOERTEK' left join Product on pc_prodid=pr_id  " +
+                "where DPOID = " + poid);
+        sqls.add("update SALECONFIRMGRDETAIL set SCGD_TOTAL = round(nvl(SCGD_QTY,0)*nvl(SCGD_PRICE,0),2) where SCGD_SCGID = " + scgid);
+        baseDao.execute(sqls);
+        return new GRApiResult("true",dto.getTransId(),null);
+    }
+
+    @Override
+    public ApiResult<String> pushSenderInfo(PoOrderGrDTO dto) {
+
+        // todo 入参dto需要改成数据库查询出来的数据
+        //dtoFrom();  方法完善后放开
+
+        //接口返回
+        HttpResultResponse resultResponse = null;
+        try{
+            resultResponse =  HuToolUtils.post(asnUrl,dto);
+            logger.info("推送发货信息到歌尔,接口返回结果:{}",resultResponse);
+        }catch (Exception e){
+            logger.error("推送发货信息到歌尔,调用接口异常:{}",e);
+            return ApiResponse.failRsp("400","推送发货信息到歌尔,接口调用异常 !", null,e.getMessage());
+        }
+        return ApiResponse.successRsp("200", JSON.toJSONString(resultResponse));
+    }
+
+    /**
+     * 数据转换,将数据参数转换成接口需要参数
+     * */
+    /*public 接口调用参数 dtoFrom(数据库查询出来的参数){
+        return 接口调用需要的参数;
+    }*/
+}

+ 200 - 0
src/main/java/com/uas/eis/utils/HuToolUtils.java

@@ -0,0 +1,200 @@
+package com.uas.eis.utils;
+
+import cn.hutool.http.HttpException;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSON;
+import com.uas.eis.vo.HttpResultResponse;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Map;
+
+@Slf4j
+public class HuToolUtils {
+
+    /**
+     * 超时毫秒数。http的连接与读取
+     */
+    private static final int TIME_OUT_MILLISECONDS = 60000;
+
+    /**
+     * Content-Type
+     */
+    private static final String CONTENT_TYPE_JSON = "application/json; charset=utf-8";
+
+    private static final String CONTENT_TYPE_FORM = "multipart/form-data";
+
+    /**
+     * GET请求
+     */
+    public static HttpResultResponse get(String url) {
+        return get(url, null);
+    }
+
+    public static HttpResultResponse get(String url, Map<String, String> headerMap) {
+        HttpResultResponse httpResultResponse = new HttpResultResponse();
+        try {
+            HttpResponse response = HttpRequest
+                .get(url)
+                .timeout(TIME_OUT_MILLISECONDS)
+                .addHeaders(headerMap)
+                .execute();
+
+            if (!response.isOk()) {
+                log.error("HttpUtils get 响应失败. url={},headerMap={}, response={}", url, headerMap, response.toString());
+                return httpResultResponse.buildError();
+            }
+
+            return httpResultResponse.buildSuccess(response.body());
+        } catch (HttpException e) {
+            log.error("HttpUtils get HttpException异常. url={},headerMap={}", url, headerMap, e);
+            return httpResultResponse.buildError(e.getMessage());
+        } catch (Exception e) {
+            log.error("HttpUtils get Exception异常. url={},headerMap={}", url, headerMap, e);
+            return httpResultResponse.buildError(e.getMessage());
+        }
+    }
+
+    public static HttpResultResponse post(String url, Object postBody) {
+        return post(url, postBody, null);
+    }
+
+    /**
+     * post 请求
+     *
+     * @param url       请求链接
+     * @param postBody  请求对象 or 请求json字符串
+     * @param headerMap 请求头map
+     *
+     * @return HttpResultResponse
+     */
+    public static HttpResultResponse post(String url, Object postBody, Map<String, String> headerMap) {
+        HttpResultResponse httpResultResponse = new HttpResultResponse();
+		HttpResponse response = null;
+        try {
+            HttpRequest httpRequest = HttpRequest
+                .post(url)
+                .timeout(TIME_OUT_MILLISECONDS)
+                .addHeaders(headerMap);
+
+            if (postBody instanceof byte[]) {
+                httpRequest.body((byte[]) postBody);
+            } else if (postBody instanceof String) {
+                httpRequest.body((String) postBody);
+            } else {
+                httpRequest.body(JSON.toJSONString(postBody), CONTENT_TYPE_JSON);
+            }
+
+            response = httpRequest.execute();
+
+            if (!response.isOk()) {
+                log.error("HttpUtils post 响应失败. url={},postBody={}, headerMap={}, response={}", url, postBody,
+                    headerMap, response.toString());
+                return httpResultResponse.buildError(response.body());
+            }
+
+            return httpResultResponse.buildSuccess(response.body());
+        } catch (HttpException e) {
+            log.error("HttpUtils post HttpException异常. url={},postBody={}, headerMap={}", url, postBody, headerMap, e);
+            return httpResultResponse.buildError(e.getMessage());
+        } catch (Exception e) {
+            log.error("HttpUtils post Exception异常. url={},postBody={},headerMap={}", url, postBody, headerMap, e);
+            return httpResultResponse.buildError(e.getMessage());
+        } finally {
+			if (response != null) {
+				response.close(); // 确保关闭响应
+			}
+		}
+    }
+
+    public static HttpResultResponse postByForm(String url, Object postBody, Map<String, String> headerMap) {
+        HttpResultResponse httpResultResponse = new HttpResultResponse();
+
+        String body;
+        if (postBody instanceof String) {
+            body = (String) postBody;
+        } else {
+            body = JSON.toJSONString(postBody);
+        }
+
+        try {
+            HttpResponse response = HttpRequest
+                .post(url)
+                .body(body, CONTENT_TYPE_FORM)
+                .timeout(TIME_OUT_MILLISECONDS)
+                .addHeaders(headerMap)
+                .execute();
+
+            if (!response.isOk()) {
+                log.error("HttpUtils post 响应失败. url={},postBody={}, headerMap={}, response={}", url, postBody,
+                    headerMap, response.toString());
+                return httpResultResponse.buildError();
+            }
+
+            return httpResultResponse.buildSuccess(response.body());
+        } catch (HttpException e) {
+            log.error("HttpUtils post HttpException异常. url={},postBody={}, headerMap={}", url, postBody, headerMap, e);
+            return httpResultResponse.buildError(e.getMessage());
+        } catch (Exception e) {
+            log.error("HttpUtils post Exception异常. url={},postBody={},headerMap={}", url, postBody, headerMap, e);
+            return httpResultResponse.buildError(e.getMessage());
+        }
+    }
+
+    /**
+     * put 请求, 无header
+     *
+     * @param url     链接
+     * @param putBody 请求对象 or 请求json字符串
+     *
+     * @return HttpResultResponse
+     */
+    public static HttpResultResponse put(String url, Object putBody) {
+        return put(url, putBody, null);
+    }
+
+    /**
+     * put 请求
+     *
+     * @param url       请求链接
+     * @param putBody   请求对象 or 请求json字符串
+     * @param headerMap 请求头map
+     *
+     * @return HttpResultResponse
+     */
+    public static HttpResultResponse put(String url, Object putBody, Map<String, String> headerMap) {
+        HttpResultResponse httpResultResponse = new HttpResultResponse();
+
+        try {
+            HttpRequest httpRequest = HttpRequest
+                .put(url)
+                .timeout(TIME_OUT_MILLISECONDS)
+                .addHeaders(headerMap);
+
+            if (putBody instanceof byte[]) {
+                httpRequest.body((byte[]) putBody);
+            } else if (putBody instanceof String) {
+                httpRequest.body((String) putBody);
+            } else {
+                httpRequest.body(JSON.toJSONString(putBody), CONTENT_TYPE_JSON);
+            }
+
+            HttpResponse response = httpRequest.execute();
+
+            if (!response.isOk()) {
+                log.error("HttpUtil put 响应失败. url={},putBody={}, headerMap={}, response={}", url, putBody,
+                    headerMap, response.toString());
+                return httpResultResponse.buildError();
+            }
+
+            return httpResultResponse.buildSuccess(response.body());
+        } catch (HttpException e) {
+            log.error("HttpUtil put HttpException异常. url={},putBody={}, headerMap={}", url, putBody, headerMap, e);
+            return httpResultResponse.buildError(e.getMessage());
+        } catch (Exception e) {
+            log.error("HttpUtil put Exception异常. url={},putBody={},headerMap={}", url, putBody, headerMap, e);
+            return httpResultResponse.buildError(e.getMessage());
+        }
+    }
+
+}

+ 45 - 0
src/main/java/com/uas/eis/vo/HttpResultResponse.java

@@ -0,0 +1,45 @@
+package com.uas.eis.vo;
+
+import lombok.Data;
+
+@Data
+public class HttpResultResponse {
+
+    /**
+     * 响应成功 or 失败
+     */
+    private Boolean success;
+
+    /**
+     * 信息提示
+     */
+    private String message;
+
+    /**
+     * http响应的body
+     */
+    private String body;
+
+    public HttpResultResponse buildSuccess(String body) {
+        return buildSuccess(body, "响应成功");
+    }
+
+    public HttpResultResponse buildSuccess(String body, String message) {
+        this.success = true;
+        this.message = message;
+        this.body = body;
+        return this;
+    }
+
+    public HttpResultResponse buildError() {
+        return buildError("响应失败");
+    }
+
+    public HttpResultResponse buildError(String message) {
+        this.success = false;
+        this.message = message;
+        this.body = null;
+        return this;
+    }
+
+}