| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716 |
- 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<String, String> tokenConfig = TokenProperties.getAllProperty();
- @Autowired
- private BaseDao baseDao;
- @Override
- public Map<String, Object> createSticker(String master, Integer id) {
- Map<String,Object> 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,pc_zbzsmount_user zzbsmount,pc_zzxsmount_user zzxsmount,pc_zzbsmount_user zbzsmount " +
- " ,sum(CD_QTY) zmount,cd_wflag zwidth,cd_remark zremark,min(cd_lotno) zzstz " +
- "from CatlDocDetail left join CatlDoc on ca_id = cd_caid left join customer on cu_code = CA_CUSTCODE left join product on pr_code = CD_PRCODE left join PRODUCTCUSTOMER on pc_custid= cu_id and pc_prodid=pr_id " +
- "where cd_caid = ? and CD_PANID is null and nvl(pc_zbzsmount_user,0)>0 " +
- "group by CD_CPN,pc_zbzsmount_user,pc_zzxsmount_user,pc_zzbsmount_user,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"),"");
- 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_dc,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>");
- }
- }
- }else {
- errMsg.append("条码创建数与实际不一致,型号:"+matnr).append("创建数:"+panIdList.size()+",待更新数量:"+updateList.getResultList().size()).append("</br>");
- }
- }else {
- logger.info("getToken-F:"+res);
- if(StringUtil.hasText(resData.get("e_message"))){
- errMsg.append("客户料号:"+matnr).append(resData.get("e_message")).append("</br>");
- }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> createSticker2(String master, Integer id) {
- Map<String,Object> 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,nvl(ca_docstate,0) ca_docstate from CATLDOC where ca_id = "+id);
- if(docMain.next()){
- if(docMain.getGeneralInt("ca_docstate") == 1){
- retMap.put("success",false);
- retMap.put("message","单据已创建CATL条码。");
- logger.info("createSticker-F:master {} id {} 单据已创建CATL条码。",master,id);
- return retMap;
- }
- if(docMain.getGeneralInt("ca_docstate") == 2){
- retMap.put("success",false);
- retMap.put("message","CATL条码正在创建中,请勿重复点击。");
- logger.info("createSticker-F:master {} id {} CATL条码正在创建中,请勿重复点击。",master,id);
- return retMap;
- }
- 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 没有需要对接的单据",master,id);
- return retMap;
- }
- //创建中
- baseDao.execute("update CatlDoc set ca_docstate=2 where ca_id = "+id);
- SqlRowList docLoist = baseDao.queryForRowSet(
- "SELECT * FROM ( select CD_CPN matnr,CD_DC ztcnno,pc_zbzsmount_user zzbsmount,pc_zzxsmount_user zzxsmount,pc_zzbsmount_user 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 CatlDoc on ca_id = cd_caid left join customer on cu_code = CA_CUSTCODE left join product on pr_code = CD_PRCODE left join PRODUCTCUSTOMER on pc_custid= cu_id and pc_prodid=pr_id " +
- " where cd_caid = ? and CD_PANID is null and nvl(pc_zbzsmount_user,0)>0 " +
- " group by CD_CPN,CD_DC,pc_zbzsmount_user,pc_zzxsmount_user,pc_zzbsmount_user,cd_lotno,cd_wflag,cd_newboxcode||(case when cd_remark is not null then ' '||cd_remark else '' end) " +
- " ) order by ztcnno,zremark ",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);//供应商编码 固定值
- 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_dc,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();
- }
- 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 {
- logger.info("getToken-F:"+res);
- if(StringUtil.hasText(resData.get("e_message"))){
- errMsg.append("客户料号:"+matnr).append(resData.get("e_message")).append("</br>");
- }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;
- }
- private Map<String, Object> createStickerByCenter(String master, Integer id) {
- Map<String,Object> retMap = new HashMap<>();
- retMap.put("success",true);
- logger.info("createStickerByCenter-Begin:master {} id {}",master,id);
- SpObserver.putSp(master);
- //创建中
- baseDao.execute("update CatlDoc set CA_DOCSTATE=2 where ca_id = "+id);
- SqlRowList docList = baseDao.queryForRowSet("SELECT * FROM ( " +
- "select cd_cpn,min(CD_DC) ztcnno,pc_zbzsmount_user zzbsmount,pc_zzxsmount_user zzxsmount,pc_zzbsmount_user 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 CatlDoc on ca_id = cd_caid left join customer on cu_code = CA_CUSTCODE left join product on pr_code = CD_PRCODE left join PRODUCTCUSTOMER on pc_custid= cu_id and pc_prodid=pr_id " +
- "where cd_caid = ? and nvl(pc_zbzsmount_user,0)>0 " +
- " and CD_PANID is null "+
- " group by CD_CPN,pc_zbzsmount_user,pc_zzxsmount_user,pc_zzbsmount_user,cd_wflag,cd_remark,cd_newboxcode,ca_code||'_'||cd_newboxcode order by min(cd_detno)" +
- " ) order by to_number(cd_newboxcode)",id);
- if(!docList.hasNext()){
- retMap.put("success",false);
- retMap.put("message","没有需要对接的明细.");
- logger.info("createStickerByCenter-F:master {} id {} no docList!",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<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();
- List<Map<String, Object>> docMapList = docList.getResultList();
- for (int j = 0; j < docMapList.size(); j++) {
- Map<String,Object> docMap = docMapList.get(j);
- // 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<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);//供应商编码 固定值
- logger.info("createSticker-begin: zremark {} matnr {} zmount {} zzbsmount {} zzxsmount {} zbzsmount {}"
- , zremark,matnr,docMap.get("zmount"),docMap.get("zzbsmount"),docMap.get("zzxsmount"),docMap.get("zbzsmount"));
- boolean isDoc = baseDao.checkIf("CatlDocDetail " ," cd_caid = "+id+" and CD_PANID is null and CD_id in ("+cd_ids+") ");
- if(!isDoc){
- logger.info("createSticker-F-重复: zremark {} matnr {} zmount {} zzbsmount {} zzxsmount {} zbzsmount {}"
- , zremark,matnr,docMap.get("zmount"),docMap.get("zzbsmount"),docMap.get("zzxsmount"),docMap.get("zbzsmount"));
- continue;
- }
- 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)){
- // 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");
- logger.info("outdata.size {}", outdata.size());
- for (Map<String,Object> odMap: outdata) {
- List<String> 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<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排序
- panIdList.sort(Comparator.comparing(
- pm -> (String) pm.get("zalt_id"),
- Comparator.nullsFirst(String::compareTo)
- ));
- String zeivr = StringUtil.nvl(outdata.get(0).get("zeivr"),"");
- String zeiar = StringUtil.nvl(outdata.get(0).get("zeiar"),"");
- //更新箱ID、袋ID
- List<String> sqls = new ArrayList<>();
- 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<Map<String,Object>> updateStickerList = new ArrayList<>();
- Map<String,Map<String,Object>> updateBoxStickers = new HashMap<>();
- 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")+"',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<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<>();
- if(docMap.get("zzxsmount").equals(docMap.get("zbzsmount"))){//箱容量 = 盘容量 一起更
- 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);
- }else {
- if(!updateBoxStickers.containsKey(boxId)) {
- 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"));//有效日期
- updateBoxStickers.put(boxId,updateBoxMap);
- }else{
- updateBoxMap = updateBoxStickers.get(boxId);
- if(DateUtil.compare(updateBoxMap.get("manufacturing_date").toString(),updateMap.get("cd_dc").toString(),Constant.YMD2)>0){//取最小DC
- updateBoxMap.put("prtbatchid",updateMap.get("cd_lotno"));//供应商批次
- updateBoxMap.put("manufacturing_date",updateMap.get("cd_dc"));//生产日期
- updateBoxMap.put("atlyx",updateMap.get("cd_ed"));//有效日期
- updateBoxStickers.put(boxId,updateBoxMap);
- }
- }
- }
- }
- }
- if(!docMap.get("zzxsmount").equals(docMap.get("zbzsmount"))){
- logger.info("updateSticker-begin: boxcode {}", docMap.get("cd_newboxcode"));
- for(String boxId:updateBoxStickers.keySet()){
- updateStickerList.add(updateBoxStickers.get(boxId));
- // logger.info("updateSticker-begin: boxId {} LOTNO {} DC {}", boxId,updateBoxStickers.get(boxId).get("prtbatchid"), updateBoxStickers.get(boxId).get("manufacturing_date"));
- }
- }
- // 更新栈ID、箱ID、袋ID
- if(sqls.size()>0){
- baseDao.execute(sqls);
- //第二个接口 更新供应商批次
- // logger.info("updateSticker-begin: cd_ids {}", cd_ids);
- Map<String,Object> updateStickerMap = updateStickerByList(master, id,map,updateStickerList);
- if(!(boolean) updateStickerMap.get("success")){
- errMsg.append("更新供应商批次失败:客户料号:"+matnr).append(updateStickerMap.get("message")).append("</br>");
- }
- }
- }else {
- errMsg.append("条码创建数与实际不一致,型号:"+matnr).append("【cd_ids:").append(cd_ids).append("】创建数:"+panIdList.size()+",待更新数量:"+updateList.getResultList().size()).append("</br>");
- }
- }else {
- logger.info("createStickerByCenter-F:"+res);
- if(StringUtil.hasText(resData.get("e_message"))){
- errMsg.append("客户料号:"+matnr).append(resData.get("e_message")).append("</br>");
- }else {
- errMsg.append("客户料号:"+matnr).append("创建条码失败").append("</br>");
- }
- }
- }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","对接失败,请取消条码重新创建:</br>"+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","对接失败,请取消条码重新创建:</br>"+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<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");
- 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")+"'");
- }
- }
- }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;
- }
- }
|