|
|
@@ -33,7 +33,7 @@ public class ERPServiceImpl implements ERPService {
|
|
|
retMap.put("success",true);
|
|
|
logger.info("createSticker-Begin:master {} id {}",master,id);
|
|
|
SpObserver.putSp(master);
|
|
|
- SqlRowList docLoist = baseDao.queryForRowSet("select CD_CPN matnr,min(CD_DC) ztcnno,pr_capacity zzbsmount,pr_zxbzs zzxsmount,pr_zxbzs zbzsmount" +
|
|
|
+ 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 " +
|
|
|
@@ -66,7 +66,7 @@ public class ERPServiceImpl implements ERPService {
|
|
|
for (Map<String,Object> docMap: docLoist.getResultList()) {
|
|
|
try {
|
|
|
// CD_CPN,pr_capacity,pr_zxbzs,cd_wflag,cd_remark
|
|
|
- String matnr = String.valueOf(docMap.get("matnr"));
|
|
|
+ String matnr = String.valueOf(docMap.get("cd_cpn"));
|
|
|
String zwidth = StringUtil.nvl(docMap.get("zwidth"),"");
|
|
|
String zremark = StringUtil.nvl(docMap.get("zremark"),"");
|
|
|
|
|
|
@@ -193,6 +193,162 @@ public class ERPServiceImpl implements ERPService {
|
|
|
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 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);//供应商编码 固定值
|
|
|
+
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+ 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>");
|
|
|
+ }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<>();
|