|
@@ -1,457 +1,349 @@
|
|
|
package com.uas.eis.service.Impl;
|
|
|
|
|
|
+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.core.support.TokenProperties;
|
|
|
import com.uas.eis.dao.*;
|
|
|
+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.http.HttpStatus;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
- * @author koul
|
|
|
- * @email koul@usoftchina.com
|
|
|
- * @date 2021-12-06 18:27
|
|
|
+ * @author wuyx
|
|
|
+ * @email wuyx@usoftchina.com
|
|
|
+ * @date 2024-09-03
|
|
|
*/
|
|
|
@Service
|
|
|
public class ERPServiceImpl implements ERPService {
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
- private static Map<String, String> tokenConfig = TokenProperties.getAllProperty();
|
|
|
-
|
|
|
@Autowired
|
|
|
private BaseDao baseDao;
|
|
|
-
|
|
|
@Override
|
|
|
- public Map<String, Object> createSticker(String master, Integer id) {
|
|
|
+ public Map<String, Object> creatSFOrder(String master, Integer id,String emCode) {
|
|
|
Map<String,Object> retMap = new HashMap<>();
|
|
|
retMap.put("success",true);
|
|
|
- logger.info("createSticker-Begin:master {} id {}",master,id);
|
|
|
+ logger.info("creatSFOrder-Begin:master {} id {}",master,id);
|
|
|
SpObserver.putSp(master);
|
|
|
- SqlRowList docLoist = baseDao.queryForRowSet("select cd_cpn,min(CD_DC) ztcnno,pr_capacity zzbsmount,pr_zxbzs zzxsmount,pr_zxbzs zbzsmount" +
|
|
|
- " ,sum(CD_QTY) zmount,cd_wflag zwidth,cd_remark zremark,min(cd_lotno) zzstz " +
|
|
|
- "from CatlDocDetail left join product on pr_code = CD_PRCODE " +
|
|
|
- "where cd_caid = ? and CD_PANID is null and nvl(pr_capacity,0)>0 " +
|
|
|
- "group by CD_CPN,pr_capacity,pr_zxbzs,cd_wflag,cd_remark order by min(cd_detno)",id);
|
|
|
- if(!docLoist.hasNext()){
|
|
|
-// System.out.println("no docLoist!");
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message","没有需要对接的明细.");
|
|
|
- logger.info("createSticker-F:master {} id {} no docLoist!",master,id);
|
|
|
- }
|
|
|
- Object[] obs = baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_catl_config A "
|
|
|
- , new String[]{"URL_","deipaaskeyauth","appKey", "appSecret","VENDCODE"}
|
|
|
- , "username='"+master+"' and A.ENVTYPE = (SELECT B.ENVTYPE FROM YITOA_DATACENTER.DOCK_CATL_EVCONFIG B WHERE A.username = B.username )");
|
|
|
- String url = String.valueOf(obs[0]);
|
|
|
- String deipaaskeyauth = String.valueOf(obs[1]);
|
|
|
- String vendcode = String.valueOf(obs[4]);
|
|
|
- Map<String,String> map = new HashMap<>();
|
|
|
- map.put("url",url);
|
|
|
- map.put("deipaaskeyauth",deipaaskeyauth);
|
|
|
- map.put("appKey",String.valueOf(obs[2]));
|
|
|
- map.put("appSecret",String.valueOf(obs[3]));
|
|
|
- Map<String,Object> tokenMap = getToken(map);
|
|
|
- if(!(boolean)tokenMap.get("success")){
|
|
|
- return tokenMap;
|
|
|
- }
|
|
|
- String action="/SNC/outer_SNC_createSticker?sap-client=810&interfacename=ZIRFC_TP2SNC_CREATESTICKER";
|
|
|
- String deipaasjwt = "Bearer "+tokenMap.get("token");
|
|
|
- map.put("deipaasjwt",deipaasjwt);
|
|
|
- StringBuffer errMsg = new StringBuffer();
|
|
|
- for (Map<String,Object> docMap: docLoist.getResultList()) {
|
|
|
- try {
|
|
|
- // CD_CPN,pr_capacity,pr_zxbzs,cd_wflag,cd_remark
|
|
|
- String matnr = String.valueOf(docMap.get("cd_cpn"));
|
|
|
- String zwidth = StringUtil.nvl(docMap.get("zwidth"),"");
|
|
|
- String zremark = StringUtil.nvl(docMap.get("zremark"),"");
|
|
|
+ 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:master {} 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:master {} 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:master {} 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:master {} 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();
|
|
|
+ String sendAddr = en[1].toString();
|
|
|
+ String sendMan = baseDao.getDBSetting("ProdInOut!Sale","sendMan");
|
|
|
+ String sendMobile = baseDao.getDBSetting("ProdInOut!Sale","sendMobile");
|
|
|
|
|
|
- Map<String,Object> paraMap=new HashMap<>();
|
|
|
- paraMap.put("matnr",matnr);//物料号:客户料号
|
|
|
- paraMap.put("ztcnno",docMap.get("ztcnno"));//制造日期: 取最小DC
|
|
|
- paraMap.put("zzstz",docMap.get("zzstz"));//供应商批次: 用最小批次作为虚拟批次
|
|
|
-// paraMap.put("zeiar",docMap.get("zeiar"));//版本
|
|
|
- paraMap.put("zwidth",zwidth);//宽度
|
|
|
- paraMap.put("zmount",docMap.get("zmount"));//本次生产总数量
|
|
|
- paraMap.put("zzbsmount",docMap.get("zzbsmount"));//栈板容量
|
|
|
- paraMap.put("zzxsmount",docMap.get("zzxsmount"));//纸箱容量
|
|
|
- paraMap.put("zbzsmount",docMap.get("zbzsmount"));//包装袋容量
|
|
|
- paraMap.put("zremark",zremark);//备注
|
|
|
- paraMap.put("partner",vendcode);//供应商编码 固定值
|
|
|
- HttpUtil.Response response = HttpUtil.doPost(url+action, JacksonUtil.toJson(paraMap), deipaaskeyauth,deipaasjwt);
|
|
|
- if (response.getStatusCode() == HttpStatus.OK.value()){
|
|
|
- String res = response.getResponseText();
|
|
|
- if(res!=null && !"".equals(res)){
|
|
|
-// System.out.println("res:"+res);
|
|
|
- Map<String,Object> resData = JacksonUtil.fromJson(res);
|
|
|
- if("S".equals(String.valueOf(resData.get("e_type")))){
|
|
|
- List<Map<String,Object>> outdata = (List) resData.get("outdata");
|
|
|
-// System.out.println("outdata.size:"+outdata.size());
|
|
|
- //栈ID
|
|
|
-// List<Map<String,Object>> palletIdList = outdata.stream().filter(od->{
|
|
|
-// return (Double.valueOf(od.get("levels").toString().trim()) == 0);
|
|
|
-// }).collect(Collectors.toList());
|
|
|
- //箱ID
|
|
|
- List<Map<String,Object>> boxIdList = outdata.stream().filter(od->{
|
|
|
- return (Double.valueOf(od.get("levels").toString().trim()) == 1);
|
|
|
- }).collect(Collectors.toList());
|
|
|
- //袋ID
|
|
|
- List<Map<String,Object>> panIdList = outdata.stream().filter(od->{
|
|
|
- return (Double.valueOf(od.get("levels").toString().trim()) == 2);
|
|
|
- }).collect(Collectors.toList());
|
|
|
- //更新箱ID、袋ID
|
|
|
- List<String> sqls = new ArrayList<>();
|
|
|
- // CD_CPN,pr_capacity,pr_zxbzs,cd_wflag,cd_remark
|
|
|
- // matnr,zwidth,zremark
|
|
|
- SqlRowList updateList = baseDao.queryForRowSet("select cd_id,cd_lotno,cd_dc,nvl(cd_ed,to_char(to_date(cd_dc,'yyyymmdd')+365,'yyyymmdd')) cd_ed from CatlDocDetail " +
|
|
|
- " where cd_caid = "+id+" and CD_PANID is null and CD_CPN = '"+matnr+"' " +
|
|
|
- " and nvl(cd_wflag,' ') = '"+StringUtil.nvl(zwidth," ")+"'" +
|
|
|
- " and nvl(cd_remark,' ') = '"+StringUtil.nvl(zremark," ")+"'" +
|
|
|
- " order by cd_detno");
|
|
|
- List<Map<String,Object>> updateStickerList = new ArrayList<>();
|
|
|
- if(panIdList.size() == updateList.getResultList().size()){
|
|
|
- for (int i = 0; i < updateList.getResultList().size(); i++) {
|
|
|
- Map<String,Object> updateMap = updateList.getResultList().get(i);
|
|
|
- Map<String,Object> idMap = panIdList.get(i);
|
|
|
- String panId = idMap.get("zalt_id").toString();
|
|
|
- String boxId = idMap.get("zalt_id_upper").toString();
|
|
|
- //获取栈ID
|
|
|
- String palletId = "";
|
|
|
- Optional<Map<String,Object>> boxMsg = boxIdList.stream()
|
|
|
- .filter(bMap -> bMap.get("zalt_id").equals(boxId))
|
|
|
- .findFirst();
|
|
|
- if(boxMsg.isPresent()&&!boxMsg.get().isEmpty()){
|
|
|
- palletId = boxMsg.get().get("zalt_id_upper").toString();
|
|
|
- }
|
|
|
- sqls.add("update CatlDocDetail set cd_palletid='"+StringUtil.nvl(palletId,"")+"' ,CD_PANID='"+panId+"',CD_BOXID='"+boxId+"'" +
|
|
|
- ",cd_batchid='"+idMap.get("batch_id")+"',cd_wbs='"+idMap.get("wbs")+"' " +
|
|
|
- "where cd_id = "+updateMap.get("cd_id"));
|
|
|
- if(!updateMap.get("cd_lotno").equals(idMap.get("prtbatchid"))){
|
|
|
- Map<String,Object> updatePanMap = new HashMap<>();
|
|
|
- updatePanMap.put("matnr",matnr);//物料号
|
|
|
- updatePanMap.put("zalt_id",panId);//贴纸ID
|
|
|
- updatePanMap.put("prtbatchid",updateMap.get("cd_lotno"));//供应商批次
|
|
|
- updatePanMap.put("manufacturing_date",updateMap.get("cd_dc"));//生产日期
|
|
|
- updatePanMap.put("atlyx",updateMap.get("cd_ed"));//有效日期
|
|
|
- updateStickerList.add(updatePanMap);
|
|
|
- Map<String,Object> updateBoxMap = new HashMap<>();
|
|
|
- updateBoxMap.put("matnr",matnr);//物料号
|
|
|
- updateBoxMap.put("zalt_id",boxId);//贴纸ID
|
|
|
- updateBoxMap.put("prtbatchid",updateMap.get("cd_lotno"));//供应商批次
|
|
|
- updateBoxMap.put("manufacturing_date",updateMap.get("cd_dc"));//生产日期
|
|
|
- updateBoxMap.put("atlyx",updateMap.get("cd_ed"));//有效日期
|
|
|
- updateStickerList.add(updateBoxMap);
|
|
|
- }
|
|
|
- }
|
|
|
- // 更新栈ID、箱ID、袋ID
|
|
|
- if(sqls.size()>0){
|
|
|
- baseDao.execute(sqls);
|
|
|
- //第二个接口 更新供应商批次
|
|
|
- Map<String,Object> updateStickerMap = updateStickerByList(master, id,map,updateStickerList);
|
|
|
- if(!(boolean) updateStickerMap.get("success")){
|
|
|
- errMsg.append("更新供应商批次失败:客户料号:"+matnr).append(updateStickerMap.get("message")).append("</br>");
|
|
|
+ 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);
|
|
|
+ //寄件方信息
|
|
|
+ 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);
|
|
|
+ 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 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());
|
|
|
}
|
|
|
- }else {
|
|
|
- errMsg.append("条码创建数与实际不一致,型号:"+matnr).append("创建数:"+panIdList.size()+",待更新数量:"+updateList.getResultList().size()).append("</br>");
|
|
|
}
|
|
|
- }else {
|
|
|
- if(StringUtil.hasText(resData.get("e_message"))){
|
|
|
- errMsg.append("客户料号:"+matnr).append(resData.get("e_message")).append("</br>");
|
|
|
+ if(waybillNo.length()>0){
|
|
|
+ baseDao.execute("update prodinout set pi_dockingcode=?,pi_logisticscode = ?,pi_dockingstatus='已创建' where pi_id = ?",orderCode,waybillNo.toString(),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+",物流单号:"+waybillNo.toString()+"','ProdInOut!Sale|pi_id="+id+"','"+inoutNo+"')");
|
|
|
}else {
|
|
|
- errMsg.append("客户料号:"+matnr).append("创建条码失败").append("</br>");
|
|
|
+ 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:master {} 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:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
- }else{
|
|
|
- logger.info("getToken-F:No ResponseText");
|
|
|
+ }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);
|
|
|
- retMap.put("message", "No ResponseText");
|
|
|
+ logger.info("creatSFOrder-F:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
- }else {
|
|
|
- logger.info("createSticker-F:StatusCode {} ResponseText {}",response.getStatusCode(),response.getResponseText());
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message", response.getStatusCode()+":"+response.getResponseText());
|
|
|
}
|
|
|
}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","创建条码异常。");
|
|
|
+ retMap.put("message","创建失败"+(StringUtil.nvl(e.getMessage(),"")));
|
|
|
+ logger.info("creatSFOrder-F:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
- }
|
|
|
- if(errMsg.length()>0){
|
|
|
-// System.out.println("errMsg:"+errMsg.toString());
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message","对接失败:</br>"+errMsg.toString());
|
|
|
}else {
|
|
|
- baseDao.execute("update CatlDoc set CA_DOCSTATE=1 where ca_id = "+id);
|
|
|
+ retMap.put("success",false);
|
|
|
+ retMap.put("message","没有需要创建的出货单.");
|
|
|
+ logger.info("creatSFOrder-F:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
- logger.info("createSticker-End:master {} id {} retMap {}",master,id,retMap.toString());
|
|
|
+ logger.info("creatSFOrder-End:master {} id {}",master,id);
|
|
|
+ retMap.put("message","创建成功。");
|
|
|
return retMap;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String, Object> createSticker2(String master, Integer id) {
|
|
|
+ public Map<String, Object> cancelSFOrder(String master, Integer id, String emCode) {
|
|
|
Map<String,Object> retMap = new HashMap<>();
|
|
|
retMap.put("success",true);
|
|
|
- logger.info("createSticker-Begin:master {} id {}",master,id);
|
|
|
+ logger.info("cancelSFOrder-Begin:master {} id {}",master,id);
|
|
|
SpObserver.putSp(master);
|
|
|
- SqlRowList docLoist = baseDao.queryForRowSet(
|
|
|
- " select CD_CPN matnr,CD_DC ztcnno,pr_capacity zzbsmount,pr_zxbzs zzxsmount,pr_zxbzs zbzsmount " +
|
|
|
- " ,sum(CD_QTY) zmount,cd_wflag zwidth,cd_lotno zzstz " +
|
|
|
- ",cd_newboxcode||(case when cd_remark is not null then ' '||cd_remark else '' end) zremark,count(1) codecount " +
|
|
|
- " from CatlDocDetail left join product on pr_code = CD_PRCODE " +
|
|
|
- " where cd_caid = ? and CD_PANID is null and nvl(pr_capacity,0)>0 " +
|
|
|
- " group by CD_CPN,CD_DC,pr_capacity,pr_zxbzs,cd_lotno,cd_wflag,cd_newboxcode||(case when cd_remark is not null then ' '||cd_remark else '' end) " +
|
|
|
- " order by min(cd_detno) ",id);
|
|
|
- if(!docLoist.hasNext()){
|
|
|
-// System.out.println("no docLoist!");
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message","没有需要对接的明细.");
|
|
|
- logger.info("createSticker-F:master {} id {} no docLoist!",master,id);
|
|
|
- }
|
|
|
- Object[] obs = baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_catl_config A "
|
|
|
- , new String[]{"URL_","deipaaskeyauth","appKey", "appSecret","VENDCODE"}
|
|
|
- , "username='"+master+"' and A.ENVTYPE = (SELECT B.ENVTYPE FROM YITOA_DATACENTER.DOCK_CATL_EVCONFIG B WHERE A.username = B.username )");
|
|
|
- String url = String.valueOf(obs[0]);
|
|
|
- String deipaaskeyauth = String.valueOf(obs[1]);
|
|
|
- String vendcode = String.valueOf(obs[4]);
|
|
|
- Map<String,String> map = new HashMap<>();
|
|
|
- map.put("url",url);
|
|
|
- map.put("deipaaskeyauth",deipaaskeyauth);
|
|
|
- map.put("appKey",String.valueOf(obs[2]));
|
|
|
- map.put("appSecret",String.valueOf(obs[3]));
|
|
|
- Map<String,Object> tokenMap = getToken(map);
|
|
|
- if(!(boolean)tokenMap.get("success")){
|
|
|
- return tokenMap;
|
|
|
- }
|
|
|
- String action="/SNC/outer_SNC_createSticker?sap-client=810&interfacename=ZIRFC_TP2SNC_CREATESTICKER";
|
|
|
- String deipaasjwt = "Bearer "+tokenMap.get("token");
|
|
|
- map.put("deipaasjwt",deipaasjwt);
|
|
|
- StringBuffer errMsg = new StringBuffer();
|
|
|
- for (Map<String,Object> docMap: docLoist.getResultList()) {
|
|
|
- try {
|
|
|
- int codeCount = Integer.valueOf(String.valueOf(docMap.get("codecount")));
|
|
|
- // CD_CPN,pr_capacity,pr_zxbzs,cd_wflag,cd_remark
|
|
|
- String matnr = String.valueOf(docMap.get("matnr"));
|
|
|
- String zwidth = StringUtil.nvl(docMap.get("zwidth"),"");
|
|
|
- String zremark = StringUtil.nvl(docMap.get("zremark"),"");
|
|
|
- String ztcnno = String.valueOf(docMap.get("ztcnno"));
|
|
|
- String zzstz = String.valueOf(docMap.get("zzstz"));
|
|
|
- Map<String,Object> paraMap=new HashMap<>();
|
|
|
- paraMap.put("matnr",matnr);//物料号:客户料号
|
|
|
- paraMap.put("ztcnno",ztcnno);//制造日期: 取最小DC
|
|
|
- paraMap.put("zzstz",zzstz);//供应商批次: 用最小批次作为虚拟批次
|
|
|
-// paraMap.put("zeiar",docMap.get("zeiar"));//版本
|
|
|
- paraMap.put("zwidth",zwidth);//宽度
|
|
|
- paraMap.put("zmount",docMap.get("zmount"));//本次生产总数量
|
|
|
- paraMap.put("zzbsmount",docMap.get("zzbsmount"));//栈板容量
|
|
|
- paraMap.put("zzxsmount",docMap.get("zzxsmount"));//纸箱容量
|
|
|
- paraMap.put("zbzsmount",docMap.get("zbzsmount"));//包装袋容量
|
|
|
- paraMap.put("zremark",zremark);//备注
|
|
|
- paraMap.put("partner",vendcode);//供应商编码 固定值
|
|
|
+ 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:master {} 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:master {} 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:master {} 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:master {} 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"
|
|
|
|
|
|
- HttpUtil.Response response = HttpUtil.doPost(url+action, JacksonUtil.toJson(paraMap), deipaaskeyauth,deipaasjwt);
|
|
|
- if (response.getStatusCode() == HttpStatus.OK.value()){
|
|
|
- String res = response.getResponseText();
|
|
|
- if(res!=null && !"".equals(res)){
|
|
|
-// System.out.println("res:"+res);
|
|
|
- Map<String,Object> resData = JacksonUtil.fromJson(res);
|
|
|
- if("S".equals(String.valueOf(resData.get("e_type")))){
|
|
|
- List<Map<String,Object>> outdata = (List) resData.get("outdata");
|
|
|
-// System.out.println("outdata.size:"+outdata.size());
|
|
|
- //栈ID
|
|
|
-// List<Map<String,Object>> palletIdList = outdata.stream().filter(od->{
|
|
|
-// return (Double.valueOf(od.get("levels").toString().trim()) == 0);
|
|
|
-// }).collect(Collectors.toList());
|
|
|
- //箱ID
|
|
|
- List<Map<String,Object>> boxIdList = outdata.stream().filter(od->{
|
|
|
- return (Double.valueOf(od.get("levels").toString().trim()) == 1);
|
|
|
- }).collect(Collectors.toList());
|
|
|
- //袋ID
|
|
|
- List<Map<String,Object>> panIdList = outdata.stream().filter(od->{
|
|
|
- return (Double.valueOf(od.get("levels").toString().trim()) == 2);
|
|
|
- }).collect(Collectors.toList());
|
|
|
- //更新箱ID、袋ID
|
|
|
- List<String> sqls = new ArrayList<>();
|
|
|
-// if(outdata.size() != codeCount){
|
|
|
-// errMsg.append("条码创建数与实际不一致,型号:"+matnr).append("创建数:"+outdata.size()+",待更新数量:"+codeCount).append("</br>");
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// CD_CPN matnr,CD_DC ztcnno,cd_wflag zwidth,cd_lotno zzstz,cd_newboxcode||(case when cd_remark is not null then ' '||cd_remark else '' end) zremark,count(1) codecount " +
|
|
|
- SqlRowList updateList = baseDao.queryForRowSet("select cd_id from CatlDocDetail " +
|
|
|
- " where cd_caid = "+id+" and CD_PANID is null " +
|
|
|
- " and CD_CPN = '"+matnr+"' " +
|
|
|
- " and nvl(CD_DC,' ') = '"+StringUtil.nvl(ztcnno," ")+"'" +
|
|
|
- " and nvl(cd_wflag,' ') = '"+StringUtil.nvl(zwidth," ")+"'" +
|
|
|
- " and nvl(cd_lotno,' ') = '"+StringUtil.nvl(zzstz," ")+"'" +
|
|
|
- " and cd_newboxcode||(case when cd_remark is not null then ' '||cd_remark else '' end) = '"+StringUtil.nvl(zremark," ")+"'" +
|
|
|
- " order by cd_detno");
|
|
|
- if(panIdList.size() != updateList.getResultList().size()){
|
|
|
- errMsg.append("条码创建数与实际不一致,型号:"+matnr).append("创建数:"+panIdList.size()+",待更新数量:"+updateList.getResultList().size()).append("</br>");
|
|
|
- continue;
|
|
|
- }
|
|
|
- for (int i = 0; i < updateList.getResultList().size(); i++) {
|
|
|
- Map<String,Object> updateMap = updateList.getResultList().get(i);
|
|
|
- Map<String,Object> idMap = panIdList.get(i);
|
|
|
- String panId = idMap.get("zalt_id").toString();
|
|
|
- String boxId = idMap.get("zalt_id_upper").toString();
|
|
|
- //获取栈ID
|
|
|
- String palletId = "";
|
|
|
- Optional<Map<String,Object>> boxMsg = boxIdList.stream()
|
|
|
- .filter(bMap -> bMap.get("zalt_id").equals(boxId))
|
|
|
- .findFirst();
|
|
|
- if(boxMsg.isPresent()&&!boxMsg.get().isEmpty()){
|
|
|
- palletId = boxMsg.get().get("zalt_id_upper").toString();
|
|
|
+ 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());
|
|
|
}
|
|
|
- sqls.add("update CatlDocDetail set cd_palletid='"+StringUtil.nvl(palletId,"")+"' ,CD_PANID='"+panId+"',CD_BOXID='"+boxId+"'" +
|
|
|
- ",cd_batchid='"+idMap.get("batch_id")+"',cd_wbs='"+idMap.get("wbs")+"' " +
|
|
|
- "where cd_id = "+updateMap.get("cd_id"));
|
|
|
- }
|
|
|
- // 更新栈ID、箱ID、袋ID
|
|
|
- if(sqls.size()>0){
|
|
|
-// System.out.println(sqls);
|
|
|
- baseDao.execute(sqls);
|
|
|
}
|
|
|
- }else {
|
|
|
- if(StringUtil.hasText(resData.get("e_message"))){
|
|
|
- errMsg.append("客户料号:"+matnr).append(resData.get("e_message")).append("</br>");
|
|
|
+ if(sfOrderResp.getResStatus()==2){
|
|
|
+ baseDao.execute("update prodinout set pi_logisticscode = null,pi_dockingstatus=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 {
|
|
|
- errMsg.append("客户料号:"+matnr).append("创建条码失败").append("</br>");
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- logger.info("getToken-F:No ResponseText");
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message", "No ResponseText");
|
|
|
- }
|
|
|
- }else {
|
|
|
- logger.info("createSticker-F:StatusCode {} ResponseText {}",response.getStatusCode(),response.getResponseText());
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message", response.getStatusCode()+":"+response.getResponseText());
|
|
|
- }
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message","创建条码异常。");
|
|
|
- }
|
|
|
- }
|
|
|
- if(errMsg.length()>0){
|
|
|
-// System.out.println("errMsg:"+errMsg.toString());
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message","对接失败:</br>"+errMsg.toString());
|
|
|
- }else {
|
|
|
- baseDao.execute("update CatlDoc set CA_DOCSTATE=1 where ca_id = "+id);
|
|
|
- }
|
|
|
- logger.info("createSticker-End:master {} id {} retMap {}",master,id,retMap.toString());
|
|
|
- return retMap;
|
|
|
- }
|
|
|
- @Override
|
|
|
- public Map<String, Object> getToken(Map<String, String> map) {
|
|
|
- Map<String, Object> retMap = new HashMap<>();
|
|
|
- retMap.put("success",true);
|
|
|
- String url = map.get("url");
|
|
|
- String deipaaskeyauth = map.get("deipaaskeyauth");
|
|
|
- String appKey = map.get("appKey");
|
|
|
- String appSecret = map.get("appSecret");
|
|
|
- logger.info("getToken-begin: url {} ,deipaaskeyauth {},appKey {},appSecret {} ", url,deipaaskeyauth,appKey,appSecret);
|
|
|
- String action="/ipaas/ipaas_getJwtToken";
|
|
|
- Map<String,Object> paraMap=new HashMap<>();
|
|
|
- paraMap.put("appKey",appKey);
|
|
|
- paraMap.put("appSecret",appSecret);
|
|
|
- paraMap.put("time",60);
|
|
|
- try {
|
|
|
- HttpUtil.Response response =HttpUtil.doPost(url+action, JacksonUtil.toJson(paraMap), deipaaskeyauth,"");
|
|
|
- if (response.getStatusCode() == HttpStatus.OK.value()){
|
|
|
- String res = response.getResponseText();
|
|
|
- if(res!=null && !"".equals(res)){
|
|
|
- Map<String,Object> resMap = JacksonUtil.fromJson(res);
|
|
|
- logger.info("getToken-S: {} ", String.valueOf(resMap.get("accessToken")));
|
|
|
- retMap.put("token", String.valueOf(resMap.get("accessToken")));
|
|
|
- }else{
|
|
|
- logger.info("getToken-F:No ResponseText");
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message", "No ResponseText");
|
|
|
- }
|
|
|
- }else {
|
|
|
- logger.info("getToken-F:StatusCode {} ResponseText {}",response.getStatusCode(),response.getResponseText());
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message", response.getStatusCode()+":"+response.getResponseText());
|
|
|
- }
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message", "对接异常");
|
|
|
- }
|
|
|
- return retMap;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public Map<String, Object> updateStickerByList(String master, Integer id,Map<String, String> map,List<Map<String,Object>> updateLists) {
|
|
|
- Map<String, Object> retMap = new HashMap<>();
|
|
|
- retMap.put("success",true);
|
|
|
- if(CollectionUtil.isEmpty(updateLists)){
|
|
|
- return retMap;
|
|
|
- }
|
|
|
- String url = map.get("url");
|
|
|
- String deipaaskeyauth = map.get("deipaaskeyauth");
|
|
|
- String appKey = map.get("appKey");
|
|
|
- String appSecret = map.get("appSecret");
|
|
|
- String deipaasjwt = map.get("deipaasjwt");
|
|
|
- logger.info("updateSticker-begin: url {} ,deipaaskeyauth {},appKey {},appSecret {},deipaasjwt {} ", url,deipaaskeyauth,appKey,appSecret,deipaasjwt);
|
|
|
- String action="/SNC/outer_SNC_updateGyspc?sap-client=810&interfacename=ZIRFC_TP2SNC_UPDATEGYSPC";
|
|
|
- Map<String,Object> paraMap=new HashMap<>();
|
|
|
- paraMap.put("inputdata",updateLists);
|
|
|
- StringBuffer errMsg = new StringBuffer();
|
|
|
- try {
|
|
|
- HttpUtil.Response response =HttpUtil.doPost(url+action, JacksonUtil.toJson(paraMap), deipaaskeyauth,deipaasjwt);
|
|
|
- if (response.getStatusCode() == HttpStatus.OK.value()){
|
|
|
- String res = response.getResponseText();
|
|
|
- if(res!=null && !"".equals(res)){
|
|
|
- Map<String,Object> resMap = JacksonUtil.fromJson(res);
|
|
|
- if(StringUtil.hasText(resMap.get("OUTPUTDATA"))){
|
|
|
- if(StringUtil.hasText(String.valueOf(resMap.get("OUTPUTDATA")))){
|
|
|
- List<Map<String,Object>> outputdataList = (List) resMap.get("OUTPUTDATA");
|
|
|
- for (Map<String,Object> outputdataMap:outputdataList) {
|
|
|
- if(!"S".equals(outputdataMap.get("e_msgtype"))){
|
|
|
- errMsg.append("条码:").append(outputdataMap.get("zalt_id")).append(",原因:").append(outputdataMap.get("e_msg")).append("</br>");
|
|
|
- baseDao.execute("update CatlDocDetail set cd_errmsg='"+outputdataMap.get("e_msg")+"' where cd_caid = "+id+" and cd_panid = '"+outputdataMap.get("zalt_id")+"'");
|
|
|
+ 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:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
}else {
|
|
|
- logger.info("updateSticker-F:No ResponseText");
|
|
|
+ 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", "No outPutData");
|
|
|
+ retMap.put("message","取消失败:["+sfApiRespData.getErrorCode()+"]"+sfApiRespData.getErrorMsg());
|
|
|
+ logger.info("creatSFOrder-F:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
}else {
|
|
|
- logger.info("updateSticker-F:No ResponseText");
|
|
|
+ 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);
|
|
|
- retMap.put("message", "No ResponseText");
|
|
|
+ logger.info("creatSFOrder-F:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
- }else{
|
|
|
- logger.info("updateSticker-F:No ResponseText");
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message", "No ResponseText");
|
|
|
}
|
|
|
- }else {
|
|
|
- logger.info("updateSticker-F:StatusCode {} ResponseText {}",response.getStatusCode(),response.getResponseText());
|
|
|
+ }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);
|
|
|
- retMap.put("message", response.getStatusCode()+":"+response.getResponseText());
|
|
|
+ logger.info("creatSFOrder-F:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- retMap.put("success",false);
|
|
|
- retMap.put("message", "对接异常");
|
|
|
- }
|
|
|
- if(errMsg.length()>0){
|
|
|
+ }else {
|
|
|
retMap.put("success",false);
|
|
|
- retMap.put("message",errMsg.toString());
|
|
|
+ retMap.put("message","没有需要操作的出货单.");
|
|
|
+ logger.info("cancelSFOrder-F:master {} id {} err {}",master,id,retMap.get("message"));
|
|
|
+ return retMap;
|
|
|
}
|
|
|
+ logger.info("cancelSFOrder-End:master {} id {}",master,id);
|
|
|
+ retMap.put("message","取消成功。");
|
|
|
return retMap;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|