|
|
@@ -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 接口调用需要的参数;
|
|
|
+ }*/
|
|
|
+}
|