| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069 |
- package com.uas.eis.service.Impl;
- import com.deppon.dop.module.sdk.shared.util.FastJsonUtil;
- import com.deppon.dop.module.sdk.shared.util.SecurityUtil;
- import com.kyexpress.openapi.sdk.KyeDefaultOpenApi;
- import com.sf.csim.express.service.CallExpressServiceTools;
- import com.sf.csim.express.service.HttpClientUtil;
- import com.sf.csim.express.service.IServiceCodeStandard;
- import com.sf.csim.express.service.code.ExpressServiceCodeEnum;
- import com.uas.eis.core.config.SpObserver;
- import com.uas.eis.dao.*;
- import com.uas.eis.entity.LogisticsPrice;
- import com.uas.eis.entity.dop.DoPApiResp;
- import com.uas.eis.entity.dop.DoPPriceQueryReq;
- import com.uas.eis.entity.dop.DoPResponseParam;
- import com.uas.eis.entity.ky.KYApiResp;
- import com.uas.eis.entity.ky.KYPirceData;
- import com.uas.eis.entity.ky.KYPriceQueryReq;
- import com.uas.eis.entity.sf.*;
- import com.uas.eis.service.ERPService;
- import com.uas.eis.utils.*;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.jdbc.core.BeanPropertyRowMapper;
- import org.springframework.stereotype.Service;
- import java.util.*;
- /**
- * @author wuyx
- * @email wuyx@usoftchina.com
- * @date 2024-09-03
- */
- @Service
- public class ERPServiceImpl implements ERPService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- @Autowired
- private BaseDao baseDao;
- @Override
- public Map<String, Object> creatSFOrder(String master, Integer id,String emCode) {
- Map<String,Object> retMap = new HashMap<>();
- retMap.put("success",true);
- logger.info("creatSFOrder-Begin: id {}",master,id);
- SpObserver.putSp(master);
- SqlRowList outMsg = baseDao.queryForRowSet(" select pi_inoutno,pi_dockingstatus,pi_title,pi_address,pi_purposename,pi_expresscode,pi_dockingcode " +
- " from prodinout where pi_id = ? ",id);
- if(outMsg.next()){
- if(outMsg.getGeneralString("pi_dockingstatus").equals("已创建")){
- retMap.put("success",false);
- retMap.put("message","出货单已创建顺发订单.");
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- Object[] obs = baseDao.getFieldsDataByCondition("JYX_ZS.DOCK_SF_CONFIG A "
- , new String[]{"CALL_URL","CLIENT_CODE","CHECK_WORD","ENABLE_"}, "username='"+master+"' and A.ENABLE_ = 1");
- if(!StringUtil.hasText(obs[0])){
- retMap.put("success",false);
- retMap.put("message","请联系管理员配置创建URL.");
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- if(!StringUtil.hasText(obs[1])){
- retMap.put("success",false);
- retMap.put("message","请联系管理员配置丰桥平台顾客编码.");
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- if(!StringUtil.hasText(obs[2])){
- retMap.put("success",false);
- retMap.put("message","请联系管理员配置丰桥平台校验码.");
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- boolean prodFlag = (Integer.valueOf(obs[3].toString())!=0);
- Object emName = baseDao.getFieldDataByCondition("employee" , "em_name", "em_code='"+emCode+"'");
- if(emName == null){
- emName = "管理员("+emCode+")";
- }
- String inoutNo = outMsg.getGeneralString("pi_inoutno");
- String orderCode = outMsg.getGeneralString("pi_dockingcode");
- if(orderCode.length()>0){
- orderCode=inoutNo+"-"+(Integer.valueOf(orderCode.split("-")[1])+1);
- }else {
- orderCode=inoutNo+"-1";
- }
- String CLIENT_CODE = obs[1].toString(); //此处替换为您在丰桥平台获取的顾客编码
- //沙箱环境的地址 -PRO https://sfapi-sbox.sf-express.com/std/service
- //生产环境的地址 -PRO https://sfapi.sf-express.com/std/service
- String CALL_URL = obs[0].toString();
- //此处替换为您在丰桥平台获取的校验码 生产环境 "GgO0UoyQ5FssNLItii3olo63bQ80ErAE" 沙箱环境 "rMBhSYRa9OtUPkfX5mow01NlxDWtI411"
- String CHECK_WORD = obs[2].toString();
- String monthlyCard = "7551234567";
- if(prodFlag){
- monthlyCard = baseDao.getDBSetting("ProdInOut!Sale","monthlyCard");
- }
- //寄件人
- Object[] en = baseDao.getFieldsDataByCondition("enterprise" , new String[]{"EN_NAME","EN_DELIVERADDR"}, "1=1");
- String sendCop = en[0].toString().trim();
- String sendAddr = en[1].toString();
- String sendMan = baseDao.getDBSetting("ProdInOut!Sale","sendMan");
- String sendMobile = baseDao.getDBSetting("ProdInOut!Sale","sendMobile");
- IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_CREATE_ORDER; //下订单
- CallExpressServiceTools tools=CallExpressServiceTools.getInstance();
- Map<String, String> params = new HashMap<String, String>();
- String timeStamp = String.valueOf(System.currentTimeMillis());
- String msgData = "";
- SFCreatOrderReq sfOrder = new SFCreatOrderReq();
- sfOrder.setOrderId(orderCode);
- sfOrder.setMonthlyCard(monthlyCard);
- sfOrder.setIsSignBack(1);
- //寄件方信息
- List<SFContactInfo> contactInfoList = new ArrayList<>();
- SFContactInfo sendInfo = new SFContactInfo();
- sendInfo.setContactType(1);
- sendInfo.setCompany(sendCop);
- sendInfo.setContact(sendMan);
- sendInfo.setMobile(sendMobile);
- sendInfo.setAddress(sendAddr);
- contactInfoList.add(sendInfo);
- //到件方信息
- SFContactInfo receiveInfo = new SFContactInfo();
- receiveInfo.setContactType(2);
- receiveInfo.setCompany(outMsg.getGeneralString("pi_title"));
- receiveInfo.setContact(outMsg.getGeneralString("pi_purposename"));
- receiveInfo.setMobile(outMsg.getGeneralString("pi_expresscode"));
- receiveInfo.setAddress(outMsg.getGeneralString("pi_address"));
- contactInfoList.add(receiveInfo);
- sfOrder.setContactInfoList(contactInfoList);
- List<SFCargoDetail> cargoDetails = new ArrayList<>();
- /*SqlRowList outList = baseDao.queryForRowSet(" select pr_detail,pr_unit,sum(pd_outqty) outqty from prodiodetail left join product on pr_code = pd_prodcode where pd_piid = ? and pr_detail is not null group by pr_detail,pr_unit",id);
- while (outList.next()){
- SFCargoDetail cargoDetail = new SFCargoDetail();
- cargoDetail.setName(outList.getGeneralString("pr_detail"));
- cargoDetail.setUnit(outList.getGeneralString("pr_unit"));
- cargoDetail.setCount(outList.getGeneralDouble("outqty"));
- cargoDetails.add(cargoDetail);
- }*/
- sfOrder.setCargoDetails(cargoDetails);
- msgData = FlexJsonUtil.toJsonDeep(sfOrder);
- // System.out.println("====请求msgData:" + msgData);
- try {
- params.put("partnerID", CLIENT_CODE); // 顾客编码 ,对应丰桥上获取的clientCode
- params.put("requestID", UUID.randomUUID().toString().replace("-", ""));
- params.put("serviceCode",standardService.getCode());// 接口服务码
- params.put("timestamp", timeStamp);
- params.put("msgData", msgData);
- params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,CHECK_WORD));
- long startTime = System.currentTimeMillis();
- // System.out.println("====调用实际请求:" + params);
- String result = HttpClientUtil.post(CALL_URL, params);
- // System.out.println("====调用丰桥的接口服务代码:" + String.valueOf(standardService.getCode()) + " 接口耗时:"+ String.valueOf(System.currentTimeMillis()-startTime)+"====");
- // System.out.println("===调用地址 ==="+CALL_URL);
- // System.out.println("===顾客编码 ==="+CLIENT_CODE);
- // System.out.println("===返回结果:" +result);
- SFApiResp sfApiResp = FlexJsonUtil.fromJson(result, SFApiResp.class);
- if(sfApiResp!=null){
- if("A1000".equals(sfApiResp.getApiResultCode())){
- String apiResultData = sfApiResp.getApiResultData();
- SFCreatOrderResp sfApiRespData = FlexJsonUtil.fromJson(apiResultData, SFCreatOrderResp.class);
- if(sfApiRespData.isSuccess()){
- SFCreateOrder sfOrderResp = sfApiRespData.getMsgData();
- StringBuffer waybillNoList = new StringBuffer();
- StringBuffer waybillNoP = new StringBuffer();
- StringBuffer waybillSon = new StringBuffer();
- StringBuffer waybillBack = new StringBuffer();
- if(!CollectionUtil.isEmpty(sfOrderResp.getWaybillNoInfoList())){
- for (SFWaybillNoInfo sfWaybillNoInfoResp:sfOrderResp.getWaybillNoInfoList()){
- // System.out.println("顺丰物流单号: ====="+sfWaybillNoInfoResp.getWaybillNo());
- String waybillNo = sfWaybillNoInfoResp.getWaybillNo();
- if(sfWaybillNoInfoResp.getWaybillType() == 1||sfWaybillNoInfoResp.getWaybillType() == 2){//运单号类型1:母单 2 :子单 3 : 签回单
- if(waybillNoList.length()>0){
- waybillNoList.append(",");
- }
- waybillNoList.append(waybillNo);
- if(sfWaybillNoInfoResp.getWaybillType() == 1) {
- if (waybillNoP.length() > 0) {
- waybillNoP.append(",");
- }
- waybillNoP.append(waybillNo);
- }else{
- if (waybillSon.length() > 0) {
- waybillSon.append(",");
- }
- waybillSon.append(waybillNo);
- }
- }else {
- if(waybillBack.length()>0){
- waybillBack.append(",");
- }
- waybillBack.append(waybillNo);
- }
- }
- }
- if(waybillNoList.length()>0){
- baseDao.execute("update prodinout set pi_dockingcode=?,pi_logisticscode = ?,pi_dockingstatus='已创建'" +
- ",pi_sfParentCode=?,pi_sfSonCode=?,pi_sfBackCode=?" +
- ",pi_sf_filterresult=?,pi_sf_remark=? where pi_id = ?"
- ,orderCode,waybillNoList.toString(),waybillNoP.toString(),waybillSon.toString(),waybillBack.toString()
- ,sfOrderResp.getFilterResult(),sfOrderResp.getRemark()
- ,id);
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','创建顺发订单'" +
- ",'创建成功,顺发单号:"+orderCode+",物流单号:"+waybillNoList.toString()+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- } else {
- retMap.put("message","创建失败:["+sfApiRespData.getErrorCode()+"]"+sfApiRespData.getErrorMsg());
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','创建顺发订单','"+retMap.get("message")+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- }else {
- retMap.put("message","创建失败:["+sfApiRespData.getErrorCode()+"]"+sfApiRespData.getErrorMsg());
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','创建顺发订单','"+retMap.get("message")+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- }else {
- // System.out.println("code:"+sfApiResp.getApiResultCode()+"===apiResponseID:"+sfApiResp.getApiResponseID()+"===apiErrorMsg:"+sfApiResp.getApiErrorMsg());
- retMap.put("message","创建失败:["+sfApiResp.getApiResultCode()+"]"+sfApiResp.getApiErrorMsg());
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','创建顺发订单','"+retMap.get("message")+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','创建顺发订单','创建失败:"+(StringUtil.nvl(e.getMessage(),""))+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- retMap.put("success",false);
- retMap.put("message","创建失败"+(StringUtil.nvl(e.getMessage(),"")));
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- }else {
- retMap.put("success",false);
- retMap.put("message","没有需要创建的出货单.");
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- logger.info("creatSFOrder-End: id {}",master,id);
- retMap.put("message","创建成功。");
- return retMap;
- }
- @Override
- public Map<String, Object> cancelSFOrder(String master, Integer id, String emCode) {
- Map<String,Object> retMap = new HashMap<>();
- retMap.put("success",true);
- logger.info("cancelSFOrder-Begin: id {}",master,id);
- SpObserver.putSp(master);
- SqlRowList outMsg = baseDao.queryForRowSet(" select pi_inoutno,pi_dockingstatus,pi_dockingcode from prodinout where pi_id = ? ",id);
- if(outMsg.next()) {
- if (!outMsg.getGeneralString("pi_dockingstatus").equals("已创建")) {
- retMap.put("success", false);
- retMap.put("message", "出货单尚未创建顺发订单.");
- logger.info("cancelSFOrder-F: id {} err {}", master, id, retMap.get("message"));
- return retMap;
- }
- Object[] obs = baseDao.getFieldsDataByCondition("JYX_ZS.DOCK_SF_CONFIG A "
- , new String[]{"CALL_URL", "CLIENT_CODE", "CHECK_WORD", "ENABLE_"}, "username='" + master + "' and A.ENABLE_ = 1");
- if (!StringUtil.hasText(obs[0])) {
- retMap.put("success", false);
- retMap.put("message", "请联系管理员配置创建URL.");
- logger.info("cancelSFOrder-F: id {} err {}", master, id, retMap.get("message"));
- return retMap;
- }
- if (!StringUtil.hasText(obs[1])) {
- retMap.put("success", false);
- retMap.put("message", "请联系管理员配置丰桥平台顾客编码.");
- logger.info("cancelSFOrder-F: id {} err {}", master, id, retMap.get("message"));
- return retMap;
- }
- if (!StringUtil.hasText(obs[2])) {
- retMap.put("success", false);
- retMap.put("message", "请联系管理员配置丰桥平台校验码.");
- logger.info("cancelSFOrder-F: id {} err {}", master, id, retMap.get("message"));
- return retMap;
- }
- Object emName = baseDao.getFieldDataByCondition("employee" , "em_name", "em_code='"+emCode+"'");
- if(emName == null){
- emName = "管理员("+emCode+")";
- }
- String inoutNo = outMsg.getGeneralString("pi_inoutno");
- String orderCode = outMsg.getGeneralString("pi_dockingcode");
- String CLIENT_CODE = obs[1].toString(); //丰桥平台获取的顾客编码
- String CALL_URL = obs[0].toString(); //沙箱环境的地址 -PRO https://sfapi-sbox.sf-express.com/std/service 生产环境的地址 -PRO https://sfapi.sf-express.com/std/service
- String CHECK_WORD = obs[2].toString(); //丰桥平台获取的校验码 生产环境 "GgO0UoyQ5FssNLItii3olo63bQ80ErAE" 沙箱环境 "rMBhSYRa9OtUPkfX5mow01NlxDWtI411"
- IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_UPDATE_ORDER;//订单取消
- CallExpressServiceTools tools=CallExpressServiceTools.getInstance();
- Map<String, String> params = new HashMap<String, String>();
- String timeStamp = String.valueOf(System.currentTimeMillis());
- String msgData = "";
- Map<String,Object> msgDataMap = new HashMap<>();
- msgDataMap.put("orderId",orderCode);
- msgDataMap.put("dealType",2);
- msgData = FlexJsonUtil.toJsonDeep(msgDataMap);
- try {
- params.put("partnerID", CLIENT_CODE); // 顾客编码 ,对应丰桥上获取的clientCode
- params.put("requestID", UUID.randomUUID().toString().replace("-", ""));
- params.put("serviceCode",standardService.getCode());// 接口服务码
- params.put("timestamp", timeStamp);
- params.put("msgData", msgData);
- params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,CHECK_WORD));
- long startTime = System.currentTimeMillis();
- // System.out.println("====调用请求:" + params.get("msgData"));
- // System.out.println("====调用实际请求:" + params);
- String result = HttpClientUtil.post(CALL_URL, params);
- // System.out.println("====调用丰桥的接口服务代码:" + String.valueOf(standardService.getCode()) + " 接口耗时:"+ String.valueOf(System.currentTimeMillis()-startTime)+"====");
- // System.out.println("===调用地址 ==="+CALL_URL);
- // System.out.println("===顾客编码 ==="+CLIENT_CODE);
- // System.out.println("===返回结果:" +result);
- // Map<String,Object> resData = JacksonUtil.fromJson(result);
- SFApiResp sfApiResp = FlexJsonUtil.fromJson(result, SFApiResp.class);
- if(sfApiResp!=null){
- if("A1000".equals(sfApiResp.getApiResultCode())){
- String apiResultData = sfApiResp.getApiResultData();
- SFCancelOrderResp sfApiRespData = FlexJsonUtil.fromJson(apiResultData, SFCancelOrderResp.class);
- if(sfApiRespData.isSuccess()){
- SFCancelOrder sfOrderResp = sfApiRespData.getMsgData();
- StringBuffer waybillNo = new StringBuffer();
- if(!CollectionUtil.isEmpty(sfOrderResp.getWaybillNoInfoList())){
- for (SFWaybillNoInfo sfWaybillNoInfoResp:sfOrderResp.getWaybillNoInfoList()){
- // System.out.println("顺丰物流单号: ====="+sfWaybillNoInfoResp.getWaybillNo());
- if(waybillNo.length()>0){
- waybillNo.append(",");
- }
- waybillNo.append(sfWaybillNoInfoResp.getWaybillNo());
- }
- }
- if(sfOrderResp.getResStatus()==2){
- baseDao.execute("update prodinout set pi_logisticscode = null,pi_dockingstatus=null,pi_sfParentCode=null,pi_sfSonCode=null,pi_sfBackCode=null,pi_sf_filterresult=null,pi_sf_remark=null where pi_id = ?",id);
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','取消顺发订单','取消成功"+(waybillNo.length()>0?",物流单号: "+waybillNo.toString():"")+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- }else {
- if(sfOrderResp.getResStatus()==1){
- retMap.put("message","取消失败:客户订单号与顺丰运单不匹配");
- }else {
- retMap.put("message","取消失败:["+sfOrderResp.getResStatus()+"]");
- }
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','取消顺发订单','"+retMap.get("message")+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- }else {
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','取消顺发订单','取消失败:["+sfApiRespData.getErrorCode()+"]"+sfApiRespData.getErrorMsg()+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- retMap.put("success",false);
- retMap.put("message","取消失败:["+sfApiRespData.getErrorCode()+"]"+sfApiRespData.getErrorMsg());
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- }else {
- retMap.put("message","创建失败:["+sfApiResp.getApiResultCode()+"]"+sfApiResp.getApiErrorMsg());
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','创建顺发订单','"+retMap.get("message")+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- retMap.put("message","取消失败"+(StringUtil.nvl(e.getMessage(),"")));
- baseDao.execute("INSERT INTO MESSAGELOG(ML_ID, ML_DATE, ML_MAN, ML_CONTENT, ML_RESULT, ML_SEARCH, CODE) " +
- "values( MESSAGELOG_SEQ.nextval,SYSDATE,'"+emName+"','取消顺发订单','"+retMap.get("message")+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- }else {
- retMap.put("success",false);
- retMap.put("message","没有需要操作的出货单.");
- logger.info("cancelSFOrder-F: id {} err {}",master,id,retMap.get("message"));
- return retMap;
- }
- logger.info("cancelSFOrder-End: id {}",master,id);
- retMap.put("message","取消成功。");
- return retMap;
- }
- @Override
- public Map<String, Object> getLogisticsPrice(String master, Integer id) {
- SpObserver.putSp(master);
- Map<String, Object> modelMap = new HashMap<String, Object>();
- SqlRowList rs = baseDao.queryForRowSet("select LP_ID, LP_CODE, LP_INDATE, LP_CALDATE, LP_TYPE, LP_ROUTE, LP_WEIGHT, LP_VOLUME, LP_RECIPIENT, LP_TEL, LP_ADD, LP_RECORDER, LP_COMPANY1, LP_PROVINCE, LP_DISTRICT, LP_SENDDATETIME,to_char(LP_SENDDATETIME,'yyyy-mm-dd hh24:mi:ss') SENDDATETIME" +
- " from LogisticsPrice where lp_id="+id);
- if(rs.next()){
- Map<String, Object> data = new HashMap<String, Object>();
- baseDao.callProcedure("SP_LOGISTICSPRICE", new Object[] { rs.getInt("lp_id")});
- //顺丰
- getPrice_SF(id,rs.getGeneralString("LP_TYPE"),rs.getGeneralDouble("LP_WEIGHT"),rs.getGeneralDouble("LP_VOLUME"),
- rs.getGeneralString("lp_province"),
- rs.getGeneralString("lp_route"),
- "广东省","深圳市",
- rs.getDate("LP_SENDDATETIME"));
- //跨越
- getPrice_KY(id,rs.getGeneralString("LP_TYPE"),rs.getGeneralDouble("LP_WEIGHT"),
- rs.getGeneralString("lp_province"),
- rs.getGeneralString("lp_route"),
- rs.getDate("LP_SENDDATETIME"));
- //德邦
- getPrice_DoP(id,rs.getGeneralString("LP_TYPE"),rs.getGeneralDouble("LP_WEIGHT"),rs.getGeneralDouble("LP_VOLUME"),
- rs.getGeneralString("lp_province"),
- rs.getGeneralString("lp_route"),
- rs.getGeneralString("lp_district"),
- rs.getDate("LP_SENDDATETIME")
- );
- modelMap.put("success", true);
- }else{
- modelMap.put("message", "单据不存在!");
- modelMap.put("success", false);
- }
- return modelMap;
- }
- private Map<String, Object> creatOrder_SF(LogisticsPrice logisticsPrice){
- Map<String, Object> retMap = new HashMap<String, Object>();
- logger.info("creatSFOrder-Begin");
- String emCode=logisticsPrice.getLp_Recorder();
- Object[] obs = baseDao.getFieldsDataByCondition("SZSI_P.DOCK_LOGISTICS_CONFIG A "
- , new String[]{"CALL_URL","CLIENT_CODE","CHECK_WORD","ENABLE_"}, "LOGISTICS_='SFTEST' and type_='CREATEORDER' AND A.ENABLE_ = 1");
- if(!StringUtil.hasText(obs[0])){
- retMap.put("success",false);
- retMap.put("message","请联系管理员配置创建URL.");
- logger.info("creatSFOrder-F:id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- if(!StringUtil.hasText(obs[1])){
- retMap.put("success",false);
- retMap.put("message","请联系管理员配置丰桥平台顾客编码.");
- logger.info("creatSFOrder-F:id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- if(!StringUtil.hasText(obs[2])){
- retMap.put("success",false);
- retMap.put("message","请联系管理员配置丰桥平台校验码.");
- logger.info("creatSFOrder-F:id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- boolean prodFlag = (Integer.valueOf(obs[3].toString())!=0);
- Object emName = baseDao.getFieldDataByCondition("employee" , "em_name", "em_code='"+emCode+"'");
- if(emName == null){
- emName = "管理员("+emCode+")";
- }
- String inoutNo = logisticsPrice.getLp_Code();
- String orderCode = logisticsPrice.getLp_DockingCode();
- if(orderCode!=null && orderCode.length()>0){
- orderCode=inoutNo+"-"+(Integer.valueOf(orderCode.split("-")[1])+1);
- }else {
- orderCode=inoutNo+"-1";
- }
- String CLIENT_CODE = obs[1].toString(); //此处替换为您在丰桥平台获取的顾客编码
- String CALL_URL = obs[0].toString();
- String CHECK_WORD = obs[2].toString();
- String monthlyCard = "7551234567";//7550911545";//后续看是否区分市场部和其他部门 先用市场部门的 测试 7551234567
- //寄件人
- Object[] en = baseDao.getFieldsDataByCondition("enterprise" , new String[]{"EN_NAME","EN_DELIVERADDR"}, "1=1");
- String sendCop = en[0].toString().trim();
- String sendAddr = en[1].toString();
- String sendMan = logisticsPrice.getLp_Recorder();
- String sendMobile = baseDao.getFieldValue("employee","max(em_mobile)","em_name='"+ logisticsPrice.getLp_Recorder()+"'",String.class);
- IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_CREATE_ORDER; //下订单
- CallExpressServiceTools tools=CallExpressServiceTools.getInstance();
- Map<String, String> params = new HashMap<String, String>();
- String timeStamp = String.valueOf(System.currentTimeMillis());
- String msgData = "";
- SFCreatOrderReq sfOrder = new SFCreatOrderReq();
- sfOrder.setOrderId(orderCode);
- sfOrder.setMonthlyCard(monthlyCard);
- sfOrder.setTotalWeight(logisticsPrice.getLp_Weight());
- int expressTypeId=0;
- if("特快".equals(logisticsPrice.getLp_Type())){
- expressTypeId=1;
- }else if("普快".equals(logisticsPrice.getLp_Type())){
- expressTypeId=2;
- }else if("物流".equals(logisticsPrice.getLp_Type())){
- expressTypeId=255;//卡航
- }
- sfOrder.setExpressTypeId(expressTypeId);
- //sfOrder.setIsSignBack(1);//回签
- //寄件方信息
- List<SFContactInfo> contactInfoList = new ArrayList<>();
- SFContactInfo sendInfo = new SFContactInfo();
- sendInfo.setContactType(1);
- sendInfo.setCompany(sendCop);
- sendInfo.setContact(sendMan);
- sendInfo.setMobile(sendMobile);
- sendInfo.setAddress(sendAddr);
- contactInfoList.add(sendInfo);
- //到件方信息
- SFContactInfo receiveInfo = new SFContactInfo();
- receiveInfo.setContactType(2);
- receiveInfo.setCompany(logisticsPrice.getLp_ReceiveCompany());
- receiveInfo.setContact(logisticsPrice.getLp_Recipient());
- receiveInfo.setMobile(logisticsPrice.getLp_Tel());
- receiveInfo.setAddress(logisticsPrice.getLp_Add());
- contactInfoList.add(receiveInfo);
- sfOrder.setContactInfoList(contactInfoList);
- List<SFCargoDetail> cargoDetails = new ArrayList<>();
- sfOrder.setCargoDetails(cargoDetails);
- msgData = FlexJsonUtil.toJsonDeep(sfOrder);
- System.out.println("====请求msgData:" + msgData);
- try {
- params.put("partnerID", CLIENT_CODE); // 顾客编码 ,对应丰桥上获取的clientCode
- params.put("requestID", UUID.randomUUID().toString().replace("-", ""));
- params.put("serviceCode",standardService.getCode());// 接口服务码
- params.put("timestamp", timeStamp);
- params.put("msgData", msgData);
- params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,CHECK_WORD));
- System.out.println("====调用实际请求:" + params);
- String result = HttpClientUtil.post(CALL_URL, params);
- SFApiResp sfApiResp = FlexJsonUtil.fromJson(result, SFApiResp.class);
- System.out.println("result:"+result);
- if(sfApiResp!=null){
- if("A1000".equals(sfApiResp.getApiResultCode())){
- String apiResultData = sfApiResp.getApiResultData();
- SFCreatOrderResp sfApiRespData = FlexJsonUtil.fromJson(apiResultData, SFCreatOrderResp.class);
- if(sfApiRespData.isSuccess()){
- SFCreateOrder sfOrderResp = sfApiRespData.getMsgData();
- StringBuffer waybillNoList = new StringBuffer();
- StringBuffer waybillNoP = new StringBuffer();
- StringBuffer waybillSon = new StringBuffer();
- StringBuffer waybillBack = new StringBuffer();
- if(!CollectionUtil.isEmpty(sfOrderResp.getWaybillNoInfoList())){
- for (SFWaybillNoInfo sfWaybillNoInfoResp:sfOrderResp.getWaybillNoInfoList()){
- String waybillNo = sfWaybillNoInfoResp.getWaybillNo();
- if(sfWaybillNoInfoResp.getWaybillType() == 1||sfWaybillNoInfoResp.getWaybillType() == 2){//运单号类型1:母单 2 :子单 3 : 签回单
- System.out.println("顺丰物流单号: ====="+sfWaybillNoInfoResp.getWaybillNo());
- if(waybillNoList.length()>0){
- waybillNoList.append(",");
- }
- waybillNoList.append(waybillNo);
- if(sfWaybillNoInfoResp.getWaybillType() == 1) {
- if (waybillNoP.length() > 0) {
- waybillNoP.append(",");
- }
- waybillNoP.append(waybillNo);
- }else{
- if (waybillSon.length() > 0) {
- waybillSon.append(",");
- }
- waybillSon.append(waybillNo);
- }
- }else {
- if(waybillBack.length()>0){
- waybillBack.append(",");
- }
- waybillBack.append(waybillNo);
- }
- }
- }
- if(waybillNoList.length()>0){
- retMap.put("success",true);
- retMap.put("logisticscode",waybillNoList.toString());
- retMap.put("dockingcode",orderCode);
- } else {
- retMap.put("message","创建失败:["+sfApiRespData.getErrorCode()+"]"+sfApiRespData.getErrorMsg());
- retMap.put("success",false);
- logger.info("creatSFOrder-F:id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- }else {
- retMap.put("message","创建失败:["+sfApiRespData.getErrorCode()+"]"+sfApiRespData.getErrorMsg());
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- }else {
- // System.out.println("code:"+sfApiResp.getApiResultCode()+"===apiResponseID:"+sfApiResp.getApiResponseID()+"===apiErrorMsg:"+sfApiResp.getApiErrorMsg());
- retMap.put("message","创建失败:["+sfApiResp.getApiResultCode()+"]"+sfApiResp.getApiErrorMsg());
- retMap.put("success",false);
- logger.info("creatSFOrder-F:id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- retMap.put("success",false);
- retMap.put("message","创建失败"+(StringUtil.nvl(e.getMessage(),"")));
- logger.info("creatSFOrder-F:id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- return retMap;
- }
- private Map<String, Object> cancelOrder_SF(LogisticsPrice logisticsPrice){
- Map<String,Object> retMap = new HashMap<>();
- retMap.put("success",true);
- logger.info("cancelSFOrder-Begin: id {}",logisticsPrice.getLp_Id());
- if(logisticsPrice!=null) {
- String emCode=logisticsPrice.getLp_Recorder();
- if (!"已创建".equals(logisticsPrice.getLp_dockingstatus())) {
- retMap.put("success", false);
- retMap.put("message", "尚未创建快递订单.");
- logger.info("cancelSFOrder-F: id {} err {}", logisticsPrice.getLp_Id(), retMap.get("message"));
- return retMap;
- }
- Object[] obs = baseDao.getFieldsDataByCondition("SZSI_P.DOCK_LOGISTICS_CONFIG A "
- , new String[]{"CALL_URL","CLIENT_CODE","CHECK_WORD","ENABLE_"}, "LOGISTICS_='SFTEST' and type_='CANCELORDER' AND A.ENABLE_ = 1");
- if (!StringUtil.hasText(obs[0])) {
- retMap.put("success", false);
- retMap.put("message", "请联系管理员配置创建URL.");
- logger.info("cancelSFOrder-F: id {} err {}", logisticsPrice.getLp_Id(), retMap.get("message"));
- return retMap;
- }
- if (!StringUtil.hasText(obs[1])) {
- retMap.put("success", false);
- retMap.put("message", "请联系管理员配置丰桥平台顾客编码.");
- logger.info("cancelSFOrder-F: id {} err {}", logisticsPrice.getLp_Id(), retMap.get("message"));
- return retMap;
- }
- if (!StringUtil.hasText(obs[2])) {
- retMap.put("success", false);
- retMap.put("message", "请联系管理员配置丰桥平台校验码.");
- logger.info("cancelSFOrder-F: id {} err {}", logisticsPrice.getLp_Id(), retMap.get("message"));
- return retMap;
- }
- Object emName = baseDao.getFieldDataByCondition("employee" , "em_name", "em_code='"+emCode+"'");
- if(emName == null){
- emName = "管理员("+emCode+")";
- }
- String inoutNo = logisticsPrice.getLp_Code();
- String orderCode = logisticsPrice.getLp_DockingCode();
- String CLIENT_CODE = obs[1].toString(); //丰桥平台获取的顾客编码
- String CALL_URL = obs[0].toString(); //沙箱环境的地址 -PRO https://sfapi-sbox.sf-express.com/std/service 生产环境的地址 -PRO https://sfapi.sf-express.com/std/service
- String CHECK_WORD = obs[2].toString(); //丰桥平台获取的校验码 生产环境 "GgO0UoyQ5FssNLItii3olo63bQ80ErAE" 沙箱环境 "rMBhSYRa9OtUPkfX5mow01NlxDWtI411"
- IServiceCodeStandard standardService = ExpressServiceCodeEnum.EXP_RECE_UPDATE_ORDER;//订单取消
- CallExpressServiceTools tools=CallExpressServiceTools.getInstance();
- Map<String, String> params = new HashMap<String, String>();
- String timeStamp = String.valueOf(System.currentTimeMillis());
- String msgData = "";
- Map<String,Object> msgDataMap = new HashMap<>();
- msgDataMap.put("orderId",orderCode);
- msgDataMap.put("dealType",2);
- msgData = FlexJsonUtil.toJsonDeep(msgDataMap);
- try {
- params.put("partnerID", CLIENT_CODE); // 顾客编码 ,对应丰桥上获取的clientCode
- params.put("requestID", UUID.randomUUID().toString().replace("-", ""));
- params.put("serviceCode",standardService.getCode());// 接口服务码
- params.put("timestamp", timeStamp);
- params.put("msgData", msgData);
- params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,CHECK_WORD));
- System.out.println("====调用请求:" + params.get("msgData"));
- String result = HttpClientUtil.post(CALL_URL, params);
- System.out.println("===返回结果:" +result);
- SFApiResp sfApiResp = FlexJsonUtil.fromJson(result, SFApiResp.class);
- if(sfApiResp!=null){
- if("A1000".equals(sfApiResp.getApiResultCode())){
- String apiResultData = sfApiResp.getApiResultData();
- SFCancelOrderResp sfApiRespData = FlexJsonUtil.fromJson(apiResultData, SFCancelOrderResp.class);
- if(sfApiRespData.isSuccess()){
- SFCancelOrder sfOrderResp = sfApiRespData.getMsgData();
- StringBuffer waybillNo = new StringBuffer();
- if(!CollectionUtil.isEmpty(sfOrderResp.getWaybillNoInfoList())){
- for (SFWaybillNoInfo sfWaybillNoInfoResp:sfOrderResp.getWaybillNoInfoList()){
- if(waybillNo.length()>0){
- waybillNo.append(",");
- }
- waybillNo.append(sfWaybillNoInfoResp.getWaybillNo());
- }
- }
- if(sfOrderResp.getResStatus()==2){
- retMap.put("success",true);
- retMap.put("logisticscode",waybillNo.length()>0?waybillNo.toString():"");
- }else {
- if(sfOrderResp.getResStatus()==1){
- retMap.put("message","取消失败:客户订单号与顺丰运单不匹配");
- }else {
- retMap.put("message","取消失败:["+sfOrderResp.getResStatus()+"]");
- }
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- }else {
- retMap.put("success",false);
- retMap.put("message","取消失败:["+sfApiRespData.getErrorCode()+"]"+sfApiRespData.getErrorMsg());
- logger.info("creatSFOrder-F: id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- }else {
- retMap.put("message","取消失败:["+sfApiResp.getApiResultCode()+"]"+sfApiResp.getApiErrorMsg());
- retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- retMap.put("message","取消失败"+(StringUtil.nvl(e.getMessage(),""))); retMap.put("success",false);
- logger.info("creatSFOrder-F: id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- }else {
- retMap.put("success",false);
- retMap.put("message","没有需要操作的单据.");
- logger.info("cancelSFOrder-F: id {} err {}",logisticsPrice.getLp_Id(),retMap.get("message"));
- return retMap;
- }
- logger.info("cancelSFOrder-End: id {}",logisticsPrice.getLp_Id());
- retMap.put("message","取消成功。");
- return retMap;
- }
- private Map<String, Object> creatOrder_DoP(LogisticsPrice logisticsPrice){
- Map<String, Object> modelMap = new HashMap<String, Object>();
- logger.info("creatDOPOrder-Begin");
- return modelMap;
- }
- private Map<String, Object> cancelOrder_DoP(LogisticsPrice logisticsPrice){
- Map<String, Object> modelMap = new HashMap<String, Object>();
- logger.info("cancelDOPOrder-Begin");
- return modelMap;
- }
- private Map<String, Object> creatOrder_KY(LogisticsPrice logisticsPrice){
- Map<String, Object> modelMap = new HashMap<String, Object>();
- logger.info("creatKYOrder-Begin");
- return modelMap;
- }
- private Map<String, Object> cancelOrder_KY(LogisticsPrice logisticsPrice){
- Map<String, Object> modelMap = new HashMap<String, Object>();
- logger.info("cancelKYOrder-Begin");
- return modelMap;
- }
- @Override
- public Map<String, Object> creatOrder(String master, Integer id) {
- SpObserver.putSp(master);
- Map<String, Object> modelMap = new HashMap<String, Object>();
- LogisticsPrice logisticsPrice=baseDao.getJdbcTemplate().queryForObject("select * from LogisticsPrice where lp_id="+id, new BeanPropertyRowMapper<LogisticsPrice>(LogisticsPrice.class));
- if(logisticsPrice != null){
- if("顺丰".equals(logisticsPrice.getLp_FinalCompany())){
- creatOrder_SF(logisticsPrice);
- }else if("德邦".equals(logisticsPrice.getLp_FinalCompany())){
- creatOrder_DoP(logisticsPrice);
- }else if("跨越".equals(logisticsPrice.getLp_FinalCompany())){
- creatOrder_KY(logisticsPrice);
- }
- }else{
- modelMap.put("message", "单据不存在!");
- modelMap.put("success", false);
- }
- return modelMap;
- }
- @Override
- public Map<String, Object> cancelOrder(String master, Integer id) {
- SpObserver.putSp(master);
- Map<String, Object> modelMap = new HashMap<String, Object>();
- LogisticsPrice logisticsPrice=baseDao.getJdbcTemplate().queryForObject("select * from LogisticsPrice where lp_id="+id, new BeanPropertyRowMapper<LogisticsPrice>(LogisticsPrice.class));
- if(logisticsPrice != null){
- if("顺丰".equals(logisticsPrice.getLp_FinalCompany())){
- cancelOrder_SF(logisticsPrice);
- }else if("德邦".equals(logisticsPrice.getLp_FinalCompany())){
- cancelOrder_DoP(logisticsPrice);
- }else if("跨越".equals(logisticsPrice.getLp_FinalCompany())){
- cancelOrder_KY(logisticsPrice);
- }
- }else{
- modelMap.put("message", "单据不存在!");
- modelMap.put("success", false);
- }
- return modelMap;
- }
- @Override
- public void getSFPrice(String master, Integer id) {
- SpObserver.putSp(master);
- Map<String, Object> modelMap = new HashMap<String, Object>();
- SqlRowList rs = baseDao.queryForRowSet("select LP_ID, LP_CODE, LP_INDATE, LP_CALDATE, LP_TYPE, LP_ROUTE, LP_WEIGHT, LP_VOLUME, LP_RECIPIENT, LP_TEL, LP_ADD, LP_RECORDER, LP_COMPANY1, LP_PROVINCE, LP_DISTRICT, LP_SENDDATETIME,to_char(LP_SENDDATETIME,'yyyy-mm-dd hh24:mi:ss') SENDDATETIME" +
- " from LogisticsPrice where lp_id="+id);
- if(rs.next()){
- getPrice_SF(id,rs.getGeneralString("LP_TYPE"),rs.getGeneralDouble("LP_WEIGHT"),rs.getGeneralDouble("LP_VOLUME"),
- rs.getGeneralString("lp_province"),
- rs.getGeneralString("lp_route"),
- "广东省","深圳市",
- rs.getDate("LP_SENDDATETIME"));
- }
- }
- @Override
- public void getKYPrice(String master, Integer id) {
- SpObserver.putSp(master);
- Map<String, Object> modelMap = new HashMap<String, Object>();
- SqlRowList rs = baseDao.queryForRowSet("select LP_ID, LP_CODE, LP_INDATE, LP_CALDATE, LP_TYPE, LP_ROUTE, LP_WEIGHT, LP_VOLUME, LP_RECIPIENT, LP_TEL, LP_ADD, LP_RECORDER, LP_COMPANY1, LP_PROVINCE, LP_DISTRICT, LP_SENDDATETIME,to_char(LP_SENDDATETIME,'yyyy-mm-dd hh24:mi:ss') SENDDATETIME" +
- " from LogisticsPrice where lp_id="+id);
- if(rs.next()){
- getPrice_KY(id,rs.getGeneralString("LP_TYPE"),rs.getGeneralDouble("LP_WEIGHT"),
- rs.getGeneralString("lp_province"),
- rs.getGeneralString("lp_route"),
- rs.getDate("LP_SENDDATETIME"));
- }
- }
- @Override
- public void getDOPPrice(String master, Integer id) {
- SpObserver.putSp(master);
- Map<String, Object> modelMap = new HashMap<String, Object>();
- SqlRowList rs = baseDao.queryForRowSet("select LP_ID, LP_CODE, LP_INDATE, LP_CALDATE, LP_TYPE, LP_ROUTE, LP_WEIGHT, LP_VOLUME, LP_RECIPIENT, LP_TEL, LP_ADD, LP_RECORDER, LP_COMPANY1, LP_PROVINCE, LP_DISTRICT, LP_SENDDATETIME,to_char(LP_SENDDATETIME,'yyyy-mm-dd hh24:mi:ss') SENDDATETIME" +
- " from LogisticsPrice where lp_id="+id);
- if(rs.next()){
- getPrice_DoP(id,rs.getGeneralString("LP_TYPE"),rs.getGeneralDouble("LP_WEIGHT"),rs.getGeneralDouble("LP_VOLUME"),
- rs.getGeneralString("lp_province"),
- rs.getGeneralString("lp_route"),
- rs.getGeneralString("lp_district"),
- rs.getDate("LP_SENDDATETIME")
- );
- }
- }
- //
- private Map<String, Object> getPrice_DoP(Integer id,String type,double weight,double volume,String province_d,String city_d,String district,Date sendDateTime){
- /*
- * http://dpsanbox.deppon.com/sandbox-web/standard-order/queryPriceTime.action
- * params String 核算请求参数 是
- digest String 区域密文摘要 是
- timestamp String 核算当前时间戳 ,当前时间毫秒数 是
- companyCode String 核算第三方接入商的公司编码(双方约定,建议公司简拼或者代码,字母大写)请求报文字段 是
- * */
- Map<String,Object> retMap = new HashMap<>();
- try{
- Object[] obs = baseDao.getFieldsDataByCondition("SZSI_P.DOCK_LOGISTICS_CONFIG A "
- , new String[]{"CALL_URL","CLIENT_CODE","CHECK_WORD","ENABLE_"}, "LOGISTICS_='DOP' and type_='GETPRICE' AND A.ENABLE_ = 1");
- String CALL_URL = obs[0].toString();
- String CHECK_WORD = obs[1].toString();
- /* 特快:TZKJC(特快当日)
- 普快:RCP(大件快递3.60)
- 物流:HKDJG(航空大件隔日达)
- */
- if(volume==0){
- volume=0.001;
- }else{
- volume=volume*0.000001;//ERP单位立方厘米 DOP接口单为立方米
- }
- String businessType="";
- if("特快".equals(type)){
- businessType="TZKJC";
- }else if("普快".equals(type)){
- businessType="RCP";//RCP
- }else if("物流".equals(type)){
- businessType="NFLF";//新精准卡航:NFLF
- }
- /* originalsStreet": "上海-上海市-长宁区",
- "originalsaddress": "上海-上海市-长宁区",
- "sendDateTime": "2018-08-07 11:00:03",
- "totalVolume": 0.001,
- "totalWeight": 500,*/
- DoPPriceQueryReq doPPriceQueryReq=new DoPPriceQueryReq();
- //目标城市
- doPPriceQueryReq.setOriginalsStreet(province_d+"-"+city_d+"-"+district);
- //出发城市
- doPPriceQueryReq.setOriginalsaddress("广东省-深圳市-龙岗区");
- doPPriceQueryReq.setSendDateTime(DateUtil.format(sendDateTime,"yyyy-MM-dd HH:mm:ss"));
- doPPriceQueryReq.setTotalVolume(String.valueOf(volume));
- doPPriceQueryReq.setTotalWeight( String.valueOf(weight));
- doPPriceQueryReq.setProductCode(businessType);//特快专递
- String msgData = FastJsonUtil.toJSONString(doPPriceQueryReq);
- String timeStamp = SecurityUtil.getTimestamp();
- Map<String, String> params = new HashMap<String, String>();
- String appkey="8626840f067f147f983c499e03e1a873";
- String digest= SecurityUtil.getDigest(msgData+appkey+timeStamp);
- params.put("params", msgData);
- params.put("digest", digest);
- params.put("timestamp", timeStamp);
- params.put("companyCode", CHECK_WORD);
- System.out.println(msgData);
- String result = HttpClientUtil.post(CALL_URL, params);
- System.out.println(result);
- DoPApiResp doPApiResp= FlexJsonUtil.fromJson(result, DoPApiResp.class);
- if("true".equals(doPApiResp.getResult())){
- for(DoPResponseParam dop:doPApiResp.getResponseParam()){
- if(businessType.equals(dop.getProducteCode())){
- baseDao.execute("update LogisticsPrice set lp_msg2='',LP_REALTIMEPRICE2="+dop.getTotalfee()+" where lp_id="+id);
- }
- }
- }else{
- baseDao.execute("update LogisticsPrice set lp_msg2='"+doPApiResp.getReason()+"',LP_REALTIMEPRICE2=0 where lp_id="+id);
- }
- return retMap;
- }catch (Exception e){
- e.printStackTrace();
- retMap.put("success",false);
- retMap.put("message","获取失败"+(StringUtil.nvl(e.getMessage(),"")));
- logger.info("getPrice_dop-F:id {} err {}",id,retMap.get("message"));
- return retMap;
- }
- }
- //跨越
- private Map<String, Object> getPrice_KY(Integer id,String type,double weight,String province_d,String city_d,Date sendDateTime){
- /*
- 正式环境:https://open.ky-express.com/router/rest
- 沙箱环境:https://open.ky-express.com/sandbox/router/rest
- ======================================================
- 参数名称 类型 是否必填 描述
- appkey string 是 应用key 11000
- format string 是 返回参数格式(默认json) json
- timestamp string 否 时间戳 12345672333
- method string 是 请求方法 open.api.openCommon.queryFreightCharge
- sign string 否 签名 CF529FFB8B49499EC30BE2C29C02AE67
- token string 是 请求票据 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....
- */
- Map<String,Object> retMap = new HashMap<>();
- try{
- Object[] obs = baseDao.getFieldsDataByCondition("SZSI_P.DOCK_LOGISTICS_CONFIG A "
- , new String[]{"CALL_URL","CLIENT_CODE","CHECK_WORD","ENABLE_"}, "LOGISTICS_='KY' and type_='GETPRICE' AND A.ENABLE_ = 1");
- String timeStamp = String.valueOf(System.currentTimeMillis());
- // 是否沙盒环境 true标识沙盒环境,false标识正式环境,发布生产环境时注意切换
- boolean isSandbox = false;
- Map<String, String> params = new HashMap<String, String>();
- String appkey="83955";//obs[1].toString();
- String appSecret = obs[2].toString();//"46129BED8B381806B1FE15562523E2E0";
- String businessType="";
- /*次日达(特快),隔日达(普快),陆运件(物流)
- * 10-当天达,20-次日达,30-隔日达,40-陆运件,50-同城次日,70-同城即日,160-省内次日,170-省内即日,210-空运,220-专运
- * */
- if("特快".equals(type)){
- businessType="20";
- }else if("普快".equals(type)){
- businessType="30";
- }else if("物流".equals(type)){
- businessType="40";
- if("深圳市".equals(city_d)){
- businessType="50";
- }else if("广东省".equals(province_d)){
- businessType="160";
- }
- }
- System.out.println("businessType:"+businessType);
- params.put("format","json");
- params.put("timestamp",timeStamp);
- String method="open.api.openCommon.queryFreightCharge";
- KYPriceQueryReq kyPriceQueryReq=new KYPriceQueryReq();
- kyPriceQueryReq.setBeginAreaCode("0755");
- kyPriceQueryReq.setBeginCityName("深圳");
- kyPriceQueryReq.setBillingTime(DateUtil.format(sendDateTime,"yyyy-MM-dd HH:mm:ss"));
- kyPriceQueryReq.setEndCityName(city_d);
- kyPriceQueryReq.setWeight(weight);
- String bizBody = FlexJsonUtil.toJsonDeep(kyPriceQueryReq);
- System.out.println("msgData:"+bizBody);
- String result = KyeDefaultOpenApi.builder(appkey, appSecret ) //应用Key,密钥
- .env("prod") // //对应环境,包含(uat:测试环境,prod:生产环境),获取对应环境的请求路径
- .api(method) //所调用Api Code
- .sandbox(isSandbox) //是否沙盒环境(env=prod且isSandbox=true时对应的就是跨越测试环境)
- .body(bizBody) //请求体参数,可接受字符串,List,Map三种类型的参数
- .connectTimeout(3000) //连接超时时间
- .readTimeout(15000) //读取超时时间
- .request()
- .response();
- System.out.println(result);
- KYApiResp kyApiResp= FlexJsonUtil.fromJson(result, KYApiResp.class);
- if(kyApiResp.isSuccess()){
- for(KYPirceData ky:kyApiResp.getData()){
- if(businessType.equals(ky.getServiceMode())){
- if(ky.getTotalJF()!=null){
- baseDao.execute("update LogisticsPrice set lp_msg3='',LP_REALTIMEPRICE3="+ky.getTotalJF()+" where lp_id="+id);
- }else{
- baseDao.execute("update LogisticsPrice set lp_msg3='"+ky.getRetMsg()+"',LP_REALTIMEPRICE3=0 where lp_id="+id);
- }
- }
- }
- }else{
- baseDao.execute("update LogisticsPrice set lp_msg3='"+kyApiResp.getMsg()+"' where lp_id="+id);
- }
- }catch (Exception e){
- e.printStackTrace();
- retMap.put("success",false);
- retMap.put("message","获取失败"+(StringUtil.nvl(e.getMessage(),"")));
- logger.info("getPrice_KY-F:id {} err {}",id,retMap.get("message"));
- return retMap;
- }
- return retMap;
- }
- //顺丰
- private Map<String, Object> getPrice_SF(Integer id,String type,double weight,double volume,String province_d,String city_d,String province_s,String city_s,Date sendDateTime) {
- Map<String,Object> retMap = new HashMap<>();
- /*生产环境地址 https://bspgw.sf-express.com/std/service
- 沙箱环境地址 https://sfapi-sbox.sf-express.com/std/service*/
- /*1 partnerID String(64) 是 合作伙伴编码(即顾客编码)
- 2 requestID String(40) 是 请求唯一号UUID
- 3 serviceCode String(50) 是 接口服务代码
- 4 timestamp long 是 调用接口时间戳
- 5 msgDigest String(128) 条件 数字签名,使用数字签名方式认证时必填
- 6 accessToken Number 条件 访问令牌,使用OAuth2方式认证时必填
- 7 msgData String 是 业务数据报文*/
- try{
- Object[] obs = baseDao.getFieldsDataByCondition("SZSI_P.DOCK_LOGISTICS_CONFIG A "
- , new String[]{"CALL_URL","CLIENT_CODE","CHECK_WORD","ENABLE_"}, "LOGISTICS_='SF' and type_='GETPRICE' AND A.ENABLE_ = 1");
- String msgData = "";
- String businessType="";
- if("特快".equals(type)){
- businessType="1";
- }else if("普快".equals(type)){
- businessType="2";
- }else if("物流".equals(type)){
- businessType="255";//卡航
- }
- //businessType="299";
- SFPriceQueryReq sfPriceQueryReq=new SFPriceQueryReq();
- sfPriceQueryReq.setBusinessType(businessType);//特快
- sfPriceQueryReq.setWeight(weight);
- sfPriceQueryReq.setVolume(volume);
- sfPriceQueryReq.setConsignedTime(DateUtil.format(sendDateTime,"yyyy-MM-dd HH:mm:ss"));
- //目的地
- SFDestAddress sfDestAddress=new SFDestAddress();
- sfDestAddress.setProvince(province_d);
- sfDestAddress.setCity(city_d);
- sfPriceQueryReq.setDestAddress(sfDestAddress);
- //寄件方信息
- SFSrcAddress srcAddress=new SFSrcAddress();
- srcAddress.setProvince(province_s);
- srcAddress.setCity(city_s);
- sfPriceQueryReq.setSrcAddress(srcAddress);
- msgData = FlexJsonUtil.toJsonDeep(sfPriceQueryReq);
- CallExpressServiceTools tools=CallExpressServiceTools.getInstance();
- String CLIENT_CODE = obs[1].toString();
- String CHECK_WORD = obs[2].toString();
- String CALL_URL = obs[0].toString();
- System.out.println("msgData:"+msgData);
- String timeStamp = String.valueOf(System.currentTimeMillis());
- Map<String, String> params = new HashMap<String, String>();
- params.put("partnerID", CLIENT_CODE); // 顾客编码 ,对应丰桥上获取的clientCode
- params.put("requestID", UUID.randomUUID().toString().replace("-", ""));
- params.put("serviceCode",ExpressServiceCodeEnum.EXP_RECE_QUERY_DELIVERTM.getCode());// 接口服务码
- params.put("timestamp", timeStamp);
- params.put("msgData", msgData);
- params.put("msgDigest", tools.getMsgDigest(msgData,timeStamp,CHECK_WORD));
- String result = HttpClientUtil.post(CALL_URL, params);
- SFApiResp sfApiResp= FlexJsonUtil.fromJson(result, SFApiResp.class);
- if(sfApiResp!=null){
- if("A1000".equals(sfApiResp.getApiResultCode())){
- String apiResultData = sfApiResp.getApiResultData();
- SFPriceApiResultData sfPriceApiResultData=FlexJsonUtil.fromJson(apiResultData, SFPriceApiResultData.class);
- if(sfPriceApiResultData.isSuccess()){
- for(SFPriceDeliverTmDto sfd:sfPriceApiResultData.getMsgData().getDeliverTmDto() ){
- if(businessType.equals(sfd.getBusinessType()) && sfd.getFee() !=null){
- baseDao.execute("update LogisticsPrice set lp_msg1='',LP_REALTIMEPRICE1="+sfd.getFee()+" where lp_id="+id);
- }
- }
- }else{
- baseDao.execute("update LogisticsPrice set lp_msg1='"+sfPriceApiResultData.getErrorMsg()+"',LP_REALTIMEPRICE1=0 where lp_id="+id);
- }
- }
- }
- System.out.println("result:"+result);
- }catch (Exception e){
- e.printStackTrace();
- retMap.put("success",false);
- retMap.put("message","获取失败"+(StringUtil.nvl(e.getMessage(),"")));
- logger.info("getPrice_SF-F:id {} err {}",id,retMap.get("message"));
- return retMap;
- }
- return retMap;
- }
- }
|