package com.uas.eis.service.Impl; import com.uas.eis.core.config.SpObserver; import com.uas.eis.core.support.TokenProperties; import com.uas.eis.dao.*; 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 */ @Service public class ERPServiceImpl implements ERPService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); private static Map tokenConfig = TokenProperties.getAllProperty(); @Autowired private BaseDao baseDao; @Override public Map createSticker(String master, Integer id) { Map retMap = new HashMap<>(); retMap.put("success",true); logger.info("createSticker-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 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 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 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"),""); Map 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 resData = JacksonUtil.fromJson(res); if("S".equals(String.valueOf(resData.get("e_type")))){ List> outdata = (List) resData.get("outdata"); // System.out.println("outdata.size:"+outdata.size()); //栈ID // List> palletIdList = outdata.stream().filter(od->{ // return (Double.valueOf(od.get("levels").toString().trim()) == 0); // }).collect(Collectors.toList()); //箱ID List> boxIdList = outdata.stream().filter(od->{ return (Double.valueOf(od.get("levels").toString().trim()) == 1); }).collect(Collectors.toList()); //袋ID List> panIdList = outdata.stream().filter(od->{ return (Double.valueOf(od.get("levels").toString().trim()) == 2); }).collect(Collectors.toList()); //更新箱ID、袋ID List 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_dc,cd_detno"); List> updateStickerList = new ArrayList<>(); if(panIdList.size() == updateList.getResultList().size()){ for (int i = 0; i < updateList.getResultList().size(); i++) { Map updateMap = updateList.getResultList().get(i); Map idMap = panIdList.get(i); String panId = idMap.get("zalt_id").toString(); String boxId = idMap.get("zalt_id_upper").toString(); //获取栈ID String palletId = ""; Optional> 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 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 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 updateStickerMap = updateStickerByList(master, id,map,updateStickerList); if(!(boolean) updateStickerMap.get("success")){ errMsg.append("更新供应商批次失败:客户料号:"+matnr).append(updateStickerMap.get("message")).append("
"); } } }else { errMsg.append("条码创建数与实际不一致,型号:"+matnr).append("创建数:"+panIdList.size()+",待更新数量:"+updateList.getResultList().size()).append("
"); } }else { if(StringUtil.hasText(resData.get("e_message"))){ errMsg.append("客户料号:"+matnr).append(resData.get("e_message")).append("
"); }else { errMsg.append("客户料号:"+matnr).append("创建条码失败").append("
"); } } }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","对接失败:
"+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 createSticker2(String master, Integer id) { Map retMap = new HashMap<>(); retMap.put("success",true); logger.info("createSticker-Begin:master {} id {}",master,id); SpObserver.putSp(master); SqlRowList docMain = baseDao.queryForRowSet("select nvl(ca_centerflag,0) ca_centerflag from CATLDOC where ca_id = "+id); if(docMain.next()){ if(docMain.getGeneralInt("ca_centerflag")<0){ return createStickerByCenter(master,id); } }else { retMap.put("success",false); retMap.put("message","没有需要对接的单据."); logger.info("createSticker-F:master {} id {} no docLoist!",master,id); return retMap; } 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 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 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 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 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);//供应商编码 固定值 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 resData = JacksonUtil.fromJson(res); if("S".equals(String.valueOf(resData.get("e_type")))){ List> outdata = (List) resData.get("outdata"); // System.out.println("outdata.size:"+outdata.size()); //栈ID // List> palletIdList = outdata.stream().filter(od->{ // return (Double.valueOf(od.get("levels").toString().trim()) == 0); // }).collect(Collectors.toList()); //箱ID List> boxIdList = outdata.stream().filter(od->{ return (Double.valueOf(od.get("levels").toString().trim()) == 1); }).collect(Collectors.toList()); //袋ID List> panIdList = outdata.stream().filter(od->{ return (Double.valueOf(od.get("levels").toString().trim()) == 2); }).collect(Collectors.toList()); //更新箱ID、袋ID List sqls = new ArrayList<>(); // if(outdata.size() != codeCount){ // errMsg.append("条码创建数与实际不一致,型号:"+matnr).append("创建数:"+outdata.size()+",待更新数量:"+codeCount).append("
"); // 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("
"); continue; } for (int i = 0; i < updateList.getResultList().size(); i++) { Map updateMap = updateList.getResultList().get(i); Map idMap = panIdList.get(i); String panId = idMap.get("zalt_id").toString(); String boxId = idMap.get("zalt_id_upper").toString(); //获取栈ID String palletId = ""; Optional> 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")); } // 更新栈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("
"); }else { errMsg.append("客户料号:"+matnr).append("创建条码失败").append("
"); } } }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","对接失败:
"+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; } private Map createStickerByCenter(String master, Integer id) { Map retMap = new HashMap<>(); retMap.put("success",true); logger.info("createStickerByCenter-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 ,cd_newboxcode " + " ,sum(CD_QTY) zmount,cd_wflag zwidth,ca_code||'_'||cd_newboxcode zzstz " + " ,cd_newboxcode||(case when cd_remark is not null then ' '||cd_remark else '' end) zremark,count(1) codecount,wm_concat(cd_id) cd_ids " + "from CatlDocDetail left join product on pr_code = CD_PRCODE left join CatlDoc on ca_id = cd_caid " + "where cd_caid = ? and nvl(pr_capacity,0)>0 and CD_PANID is null " + " group by CD_CPN,pr_capacity,pr_zxbzs,cd_wflag,cd_remark,cd_newboxcode,ca_code||'_'||cd_newboxcode order by min(cd_detno)",id); if(!docLoist.hasNext()){ retMap.put("success",false); retMap.put("message","没有需要对接的明细."); logger.info("createStickerByCenter-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=0" " 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 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 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 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"),""); String cd_ids = StringUtil.nvl(docMap.get("cd_ids"),"0"); Map 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 resData = JacksonUtil.fromJson(res); if("S".equals(String.valueOf(resData.get("e_type")))){ List> outdata = (List) resData.get("outdata"); // System.out.println("outdata.size:"+outdata.size()); for (Map odMap: outdata) { List odsqls = new ArrayList<>(); odsqls.add("insert into CATLDOC_OUTDATA(CDO_ID, CDO_CAID, CDO_DOCDATE,CDO_CDIDS" + ", ZALT_ID, BATCH_ID, MATNR, ZEIVR, ZEIAR, ZLABEL_STOCK, ZLABEL_TRANSFER, PRTBATCHID, ZMANUFACTURING_DATE, ZEFFECTIVE_DATE, WBS, ZREMARKS" + ", LEVELS_, ZALT_ID_UPPER)" + "values (CATLDOC_OUTDATA_SEQ.NEXTVAL,"+id+",SYSDATE,'"+cd_ids+"'" +",'"+odMap.get("zalt_id")+"' ,'"+odMap.get("batch_id")+"' ,'"+odMap.get("matnr")+"' ,'"+odMap.get("zeivr")+"' ,'"+odMap.get("zeiar")+"' ,'"+odMap.get("zlabel_stock")+"' ,'"+odMap.get("zlabel_transfer")+"' ,'"+odMap.get("prtbatchid")+"' ,'"+odMap.get("zmanufacturing_date")+"' ,'"+odMap.get("zeffective_date")+"' ,'"+odMap.get("wbs") +"' ,'"+odMap.get("zremarks")+"' " + ",'"+odMap.get("levels")+"' ,'"+odMap.get("zalt_id_upper")+"')"); baseDao.execute(odsqls); } //栈ID 对应外箱 // List> palletIdList = outdata.stream().filter(od->{ // return (Double.valueOf(od.get("levels").toString().trim()) == 0); // }).collect(Collectors.toList()); //箱ID 对应内箱 List> boxIdList = outdata.stream().filter(od->{ return (Double.valueOf(od.get("levels").toString().trim()) == 1); }).collect(Collectors.toList()); //袋ID 对应包装 List> panIdList = outdata.stream().filter(od->{ return (Double.valueOf(od.get("levels").toString().trim()) == 2); }).collect(Collectors.toList()); String zeivr = StringUtil.nvl(outdata.get(0).get("zeivr"),""); String zeiar = StringUtil.nvl(outdata.get(0).get("zeiar"),""); //更新箱ID、袋ID List 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_id in ("+cd_ids+") order by cd_detno"); List> updateStickerList = new ArrayList<>(); if(panIdList.size() == updateList.getResultList().size()){ for (int i = 0; i < updateList.getResultList().size(); i++) { Map updateMap = updateList.getResultList().get(i); Map idMap = panIdList.get(i); String panId = idMap.get("zalt_id").toString(); String boxId = idMap.get("zalt_id_upper").toString(); //获取栈ID String palletId = ""; Optional> 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")+"',cd_zeivr='" +zeivr+"',cd_zeiar='"+zeiar+"' "+ " where cd_id = "+updateMap.get("cd_id")); //更新内箱、内包装袋真实DC LOTNO if(!idMap.get("prtbatchid").equals(updateMap.get("cd_lotno"))){ Map 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 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 updateStickerMap = updateStickerByList(master, id,map,updateStickerList); if(!(boolean) updateStickerMap.get("success")){ errMsg.append("更新供应商批次失败:客户料号:"+matnr).append(updateStickerMap.get("message")).append("
"); } } }else { errMsg.append("条码创建数与实际不一致,型号:"+matnr).append("【cd_ids:").append(cd_ids).append("】创建数:"+panIdList.size()+",待更新数量:"+updateList.getResultList().size()).append("
"); } }else { if(StringUtil.hasText(resData.get("e_message"))){ errMsg.append("客户料号:"+matnr).append(resData.get("e_message")).append("
"); }else { errMsg.append("客户料号:"+matnr).append("创建条码失败").append("
"); } } }else{ logger.info("createStickerByCenter-F:No ResponseText"); retMap.put("success",false); retMap.put("message", "No ResponseText"); } }else { logger.info("createStickerByCenter-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","对接失败,请取消条码重新创建:
"+errMsg.toString()); }else { baseDao.execute("update CatlDoc set CA_DOCSTATE=1 where ca_id = "+id); } if(errMsg.length()>0){ // System.out.println("errMsg:"+errMsg.toString()); retMap.put("success",false); retMap.put("message","对接失败,请取消条码重新创建:
"+errMsg.toString()); }else { baseDao.execute("update CatlDoc set CA_DOCSTATE=1 where ca_id = "+id); } logger.info("createStickerByCenter-End:master {} id {} retMap {}",master,id,retMap.toString()); return retMap; } @Override public Map getToken(Map map) { Map 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 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 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 updateStickerByList(String master, Integer id,Map map,List> updateLists) { Map 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 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 resMap = JacksonUtil.fromJson(res); if(StringUtil.hasText(resMap.get("OUTPUTDATA"))){ if(StringUtil.hasText(String.valueOf(resMap.get("OUTPUTDATA")))){ List> outputdataList = (List) resMap.get("OUTPUTDATA"); for (Map outputdataMap:outputdataList) { if(!"S".equals(outputdataMap.get("e_msgtype"))){ errMsg.append("条码:").append(outputdataMap.get("zalt_id")).append(",原因:").append(outputdataMap.get("e_msg")).append("
"); baseDao.execute("update CatlDocDetail set cd_errmsg='"+outputdataMap.get("e_msg")+"' where cd_caid = "+id+" and cd_panid = '"+outputdataMap.get("zalt_id")+"'"); } } }else { logger.info("updateSticker-F:No ResponseText"); retMap.put("success",false); retMap.put("message", "No outPutData"); } }else { logger.info("updateSticker-F:No ResponseText"); retMap.put("success",false); retMap.put("message", "No ResponseText"); } }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()); 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){ retMap.put("success",false); retMap.put("message",errMsg.toString()); } return retMap; } }