package com.uas.eis.service.Impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.uas.eis.core.support.TokenProperties; import com.uas.eis.dao.BaseDao; import com.uas.eis.dao.SqlRowList; import com.uas.eis.entity.*; import com.uas.eis.sdk.entity.ApiResult; import com.uas.eis.sdk.resp.ApiResponse; import com.uas.eis.service.ERPService; import com.uas.eis.utils.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @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 ApiResult syncProduct(String data) { Map store = BaseUtil.parseFormStoreToMap(data); Product product = baseDao.getJdbcTemplate().queryForObject("select case when pr_kh_user='柏英特' or nvl(pr_kh_user,' ')=' ' then 'BYT' else nvl(cu_mescode,cu_code) end pr_kh_user,pr_code ,pr_detail ,replace(PR_SPEC,'''','''''') pr_spec,nvl(pr_unit,'PCS') pr_unit,nvl(pr_cop,'BYT') pr_cop,nvl(pr_version,'0') pr_version,case when nvl(pr_kind,'')='半成品' or nvl(pr_kind,' ')='成品' then 'product' else 'raw' end pr_serial,nvl(pr_validdays,'0') pr_validdays,pr_msdlevel ,pr_fhelpcode ,pr_f_115 ,pr_f_116 ,pr_f_102,pr_kind,flag,pr_statuscode,pr_status,pr_whcode,pr_kind3,pr_kind2,pr_custprodcode from mes_product left join customer on pr_kh_user=cu_shortname where pr_id=?", new BeanPropertyRowMapper(Product.class),store.get("pr_id")); //获取MES对应仓库 String prWhcode = product.getPr_whcode(); if (prWhcode!=null&&!"".equals(prWhcode)) { SqlRowList rs = baseDao.queryForRowSet("select * from customtabledetail left join customtable on ct_id=cd_ctid where ct_caller='MESWarehouse' and ct_statuscode='AUDITED' and cd_varchar50_3='" + prWhcode + "' order by ct_id desc,cd_id desc"); if (rs.next()){ product.setPr_whcode(rs.getGeneralString("cd_varchar50_1")); } } product.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1"))); product.setMesUser(tokenConfig.get("mesUser")); product.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd"))); return syncMES(JSON.toJSONString(product, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncProduct")); } @Override public ApiResult syncMakeBase(String data) { Map store = BaseUtil.parseFormStoreToMap(data); Make make = baseDao.getJdbcTemplate().queryForObject("select ma_code,ma_prodcode,ma_qty,nvl(cu_mescode,ma_custcode) ma_custcode,pr_unit,pr_detail,replace(PR_SPEC,'''','''''') pr_spec,ma_salecode,to_char(ma_planbegindate,'yyyy-MM-dd') ma_planbegindate,to_char(ma_planenddate,'yyyy-MM-dd') ma_planenddate,nvl(ma_cop,'BYT') ma_cop,'S' status,to_char(ma_date,'yyyy-MM-dd HH24:mi:ss') ma_date,ma_recorder,nvl(ma_version,0) ma_version,ma_id,wc_id,pr_id,to_char(ma_modifydate,'yyyy-MM-dd HH24:mi:ss') ma_modifydate,ma_modifier from make left join product on ma_prodcode=pr_code left join workcenter on ma_wccode=wc_code left join customer on ma_custcode=cu_code where ma_id=?", new BeanPropertyRowMapper(Make.class),store.get("ma_id")); make.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1"))); make.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd"))); make.setMesUser(tokenConfig.get("mesUser")); return syncMES(JSON.toJSONString(make, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncMakeBase")); } @Override public ApiResult syncMakeBaseDetail(String data) { Map store = BaseUtil.parseFormStoreToMap(data); MakeMaterial makeMaterial = baseDao.getJdbcTemplate().queryForObject("select mm_code,erpid,mm_prodcode,pr_detail,replace(PR_SPEC,'''','''''') pr_spec,pr_unit,mm_oneuseqty qty,mm_qty,mm_oneuseqty,case when mm_ifrep=-1 then 'alternative' else 'main' end type,bo_recorder,to_char(bo_date,'yyyy-MM-dd HH24:mi:ss') bo_date,nvl(bo_version,0) bo_version,nvl(bo_cop,'BYT') bo_cop,mm_repprodcode,mm_balance,nvl(cu_mescode,ma_custcode) ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder,flag from mes_makematerial left join make on ma_id=mm_maid left join Product on mm_prodcode=pr_code left join bom on bo_id=mm_bomid left join MakeMaterialChangeDet on md_makecode=ma_code and md_mmdetno=mm_detno left join MakeMaterialChange on mc_id=md_mcid left join customer on ma_custcode=cu_code where mm_id=? order by mm_detno", new BeanPropertyRowMapper(MakeMaterial.class),store.get("mm_id")); makeMaterial.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1"))); makeMaterial.setMesUser(tokenConfig.get("mesUser")); makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd"))); return syncMES(JSON.toJSONString(makeMaterial, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncMakeBaseDetail")); } @Override public ApiResult syncUpdateReceiveByErp(String data) { try { Map store = BaseUtil.parseFormStoreToMap(data); VerifyApply verifyApply = baseDao.getJdbcTemplate().queryForObject("select va_id,va_mescode,va_code,to_char(va_date,'yyyy-MM-dd HH24:mi:ss') va_date,va_vendcode,va_vendname,va_currency,va_rate,va_paymentscode,va_payments,va_transport,va_sendcode,va_emcode,va_emname,va_departmentcode,va_department,va_recorder,'BYT' va_cop,va_remark,va_ancode,va_factory,0 version,va_type,va_pucode,case when nvl(va_pucode,' ')=' ' then 0 else (select pu_id from purchase where pu_code=va_pucode) end pu_id,va_status,1 posted,to_char(va_auditdate,'yyyy-MM-dd HH24:mi:ss') va_auditdate,va_auditman,va_custcode,va_custname from VerifyApply where va_id=?", new BeanPropertyRowMapper(VerifyApply.class), store.get("va_id")); SqlRowList rs = baseDao.queryForRowSet("select case when va_custcode='AR214' or nvl(va_custcode,' ')=' ' then 'BYT' else nvl(cu_mescode,cu_code) end cu_code,cu_name from verifyapply left join customer on va_custcode=cu_code where va_id="+store.get("va_id")); if (rs.next()){ verifyApply.setVa_custcode(rs.getString("cu_code")); //verifyApply.setVa_custname(rs.getString("cu_name")); } verifyApply.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd"))); verifyApply.setMesUser(tokenConfig.get("mesUser")); verifyApply.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1"))); List verifyApplyDetails = baseDao.query("select vad_code,vad_prodcode,pr_detail,replace(PR_SPEC,'''','''''') pr_spec,pr_unit,va_recorder,va_date,pr_kh_user,cu_name,sum(nvl(vad_qty,0)) vad_qty,vad_salecode from ( select vad_code,vad_prodcode,pr_detail,pr_spec,pr_unit,vad_qty,va_recorder,to_char(va_date,'yyyy-MM-dd HH24:mi:ss') va_date,case when pr_kh_user='柏英特' or nvl(pr_kh_user,' ')=' ' then 'BYT' else nvl(cu_mescode,cu_code) end pr_kh_user,cu_name,vad_salecode from verifyapplydetail left join VerifyApply on va_id=vad_vaid left join product on vad_prodcode=pr_code left join customer on cu_shortname=pr_kh_user where nvl(vad_qty,0)>0 and vad_vaid="+store.get("va_id")+") group by vad_code,vad_prodcode,pr_detail,pr_spec,pr_unit,va_recorder,va_date,pr_kh_user,cu_name,vad_salecode", VerifyApplyDetail.class); verifyApply.setDetail(verifyApplyDetails); return syncMES(JSON.toJSONString(verifyApply, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncUpdateReceiveByErp")); }catch (Exception e){ logger.info("同步收料单异常信息:"+e.getMessage()); e.printStackTrace(); return ApiResponse.failRsp("104",e.getMessage()); } } @Override public Map syncDeleteMake(String data) { Map store = BaseUtil.parseFormStoreToMap(data); Object maId = store.get("ma_id"); int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1")); Map hashMap = new HashMap<>(); hashMap.put("code", 0); int count = baseDao.getCount("select count(1) from mes_make where erpid="+maId); if (count>0) { Make make = baseDao.getJdbcTemplate().queryForObject("select ma_code,ma_prodcode,ma_qty,nvl(cu_mescode,'BYT') ma_custcode,pr_unit,pr_detail,replace(PR_SPEC,'''','''''') pr_spec,nvl(ma_zgrwl,ma_salecode) ma_salecode,to_char(ma_planbegindate,'yyyy-MM-dd') ma_planbegindate,to_char(ma_planenddate,'yyyy-MM-dd') ma_planenddate,nvl(ma_cop,'BYT') ma_cop,'C' status,to_char(ma_date,'yyyy-MM-dd HH24:mi:ss') ma_date,ma_recorder,0 ma_version,erpid,wc_id,nvl(mk_id,0) ma_kind,to_char(ma_modifydate,'yyyy-MM-dd HH24:mi:ss') ma_modifydate,ma_modifier," + flag + " flag from mes_make left join MakeKind on ma_kind=mk_name left join product on ma_prodcode=pr_code left join workcenter on ma_wccode=wc_code left join customer on pr_kh_user=cu_shortname where erpid=?", new BeanPropertyRowMapper(Make.class), maId); make.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd"))); make.setMesUser(tokenConfig.get("mesUser")); Map map = syncMESDeleteMake(JSON.toJSONString(make, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeBase")); hashMap.put("code", -1); hashMap.put("msg", "删除工单异常,请联系MES处理!"); if (map != null) { int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1")); if (code == 0) { List makeMaterials = baseDao.getJdbcTemplate().query("select mm_code,erpid,mm_prodcode,pr_detail,replace(PR_SPEC,'''','''''') pr_spec,pr_unit,mm_oneuseqty qty,mm_qty,mm_oneuseqty,'main' type,bo_recorder,to_char(bo_date,'yyyy-MM-dd HH24:mi:ss') bo_date,0 bo_version,nvl(bo_cop,'BYT') bo_cop,mm_prodcode mm_repprodcode,mm_balance,(select nvl(cu_mescode,'BYT') from Product left join customer on pr_kh_user=cu_shortname where pr_code=ma_prodcode) ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder," + flag + " flag,0 rpid from mes_makematerial left join make on ma_id=mm_maid left join Product on mm_prodcode=pr_code left join bom on bo_id=mm_bomid left join (select max(mc_indate) mc_indate,max(mc_recorder) mc_recorder,max(md_mmdetno) md_mmdetno,max(md_makecode) md_makecode from MakeMaterialChangeDet left join MakeMaterialChange on mc_id=md_mcid) on md_makecode=ma_code and md_mmdetno=mm_detno where erpid is not null and mm_maid=" + maId + " order by mm_detno", new Object[]{},new BeanPropertyRowMapper(MakeMaterial.class)); for (MakeMaterial makeMaterial: makeMaterials) { makeMaterial.setMesUser(tokenConfig.get("mesUser")); makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd"))); Map map1 = syncMESDeleteMake(JSON.toJSONString(makeMaterial, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeBaseDetail")); hashMap.put("msg", "删除BOM异常,请联系MES处理!"); if (map1 != null) { int code1 = Integer.parseInt(StringUtil.nvl(map1.get("code"), "-1")); hashMap.put("code", code1); hashMap.put("msg", map1.get("msg")); } } List makeMaterials2 = baseDao.getJdbcTemplate().query("select mm.mm_code,mm.erpid,mr.mp_prodcode mm_prodcode,pr_detail,replace(PR_SPEC,'''','''''') pr_spec,pr_unit,mm.mm_oneuseqty qty,mr.mp_canuseqty mm_qty,mm.mm_oneuseqty,'alternative' type,bo_recorder,to_char(bo_date,'yyyy-MM-dd HH24:mi:ss') bo_date,0 bo_version,nvl(bo_cop,'BYT') bo_cop,mm.mm_prodcode mm_repprodcode,mm.mm_balance,(select nvl(cu_mescode,'BYT') from Product left join customer on pr_kh_user=cu_shortname where pr_code=ma_prodcode) ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder," + flag + " flag,mr.erpid rpid from mes_makematerialreplace mr left join mes_makematerial mm on mr.mp_mmid=mm.erpid left join make on mm.mm_maid=ma_id left join Product on mr.mp_prodcode=pr_code left join bom on bo_id=mm.mm_bomid left join (select max(mc_indate) mc_indate,max(mc_recorder) mc_recorder,max(md_mmdetno) md_mmdetno,max(md_makecode) md_makecode from MakeMaterialChangeDet left join MakeMaterialChange on mc_id=md_mcid) on md_makecode=ma_code and md_mmdetno=mm.mm_detno where mm.erpid is not null and mr.mp_maid="+ maId,new Object[]{},new BeanPropertyRowMapper(MakeMaterial.class)); for (MakeMaterial makeMaterial: makeMaterials2) { makeMaterial.setMesUser(tokenConfig.get("mesUser")); makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd"))); Map map2 = syncMESDeleteMake(JSON.toJSONString(makeMaterial, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeBaseDetail")); hashMap.put("msg", "删除替代料异常,请联系MES处理!"); if (map2 != null) { int code2 = Integer.parseInt(StringUtil.nvl(map2.get("code"), "-1")); hashMap.put("code", code2); hashMap.put("msg", map2.get("msg")); } } } hashMap.put("code", code); hashMap.put("msg", map.get("msg")); } } return hashMap; } @Override public Map syncProdInOutMakeGive(String data) { Map hashMap = new HashMap<>(); try { Map store = BaseUtil.parseFormStoreToMap(data); String mesUser = tokenConfig.get("mesUser"); String mesPwd = MD5Util.encodeByMD5(tokenConfig.get("mesPwd")); int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1")); int piId = Integer.parseInt(StringUtil.nvl(store.get("pi_id"), "0")); int count = baseDao.getCount("select count(1) from prodinout where pi_id="+piId); if (count>0) { ProdInOutMakeGive prodInOutMakeGive = baseDao.getJdbcTemplate().queryForObject("select '" + mesUser + "' mesUser,'" + mesPwd + "' mesPwd,(select wm_concat(distinct pd_ordercode) from prodiodetail where pd_piid=pi_id) maCodes,pi_inoutno,pi_id,(select wm_concat(distinct cd_varchar50_1) from customtable left join customtabledetail on cd_ctid=ct_id where ct_caller='MESWarehouse' and cd_varchar50_3=pi_whcode) pi_whcode,pi_departmentname,pi_recordman,pi_remark," + flag + " flag from prodinout where pi_id=?", new BeanPropertyRowMapper(ProdInOutMakeGive.class), piId); List prodInOutMakeGiveDetails = baseDao.query("select pd_prodcode,pd_outqty,pd_id,pd_orderdetno," + flag + " flag from prodiodetail where pd_piid=" + piId, ProdInOutMakeGiveDetail.class); prodInOutMakeGive.setDetail(prodInOutMakeGiveDetails); Map map = jsonArray(JSON.toJSONString(prodInOutMakeGive, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncInOutMakeGive")); hashMap.put("code", -1); hashMap.put("msg", "MES异常,请联系MES处理!"); if (map != null&&!map.isEmpty()) { int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1")); hashMap.put("code", code); hashMap.put("msg", map.get("msg")); } }else { hashMap.put("code", -1); hashMap.put("msg", "參數异常,请核对处理!"); } return hashMap; }catch (Exception e){ logger.error("同步补料单异常信息:"+e.getMessage()); hashMap.put("code", -1); hashMap.put("msg",StringUtil.nvl(e.getMessage(),"接口返回空,请联系MES处理!").substring(0,200)); e.printStackTrace(); return hashMap; } } @Override public Map checkProdBomItem(String data) { Map hashMap = new HashMap<>(); hashMap.put("code", 0); hashMap.put("msg", "参数异常,请联系管理员!"); System.err.println(JSONObject.parseObject(data)); System.err.println(JSON.toJSONString(data)); Map map = syncMESCheckBomItems(JSON.toJSONString(JSONObject.parseObject(data)).replace("null", "\"\""), tokenConfig.get("syncMakeMaterialCheck")); if (map != null) { int msgId = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1")); hashMap.put("code", msgId); hashMap.put("msg", map.get("msg")); } return hashMap; } @Override public Map updateChangeOrderByErp(String data) { Map hashMap = new HashMap<>(); hashMap.put("code", "10001"); hashMap.put("msg", "参数异常,请联系管理员!"); List> maps = BaseUtil.parseGridStoreToMaps(data); List ecrMakeDetails = new ArrayList<>(); Map ma = new HashMap<>(); if (maps.size()>0) { boolean b = true; if (baseDao.checkIf("ecrmakedetail left join ecr on emd_ecrid=ecr_id", "nvl(ecr_tempg,' ')='机型BOM变更' and emd_id=" + maps.get(0).get("ID"))) { b = false; } for (Map store : maps) { String s = store.get("STATUS") == null ? "" : store.get("STATUS").toString(); String status = "AUDITED".equals(s) ? "已审核" : "COMMITED".equals(s) ? "已提交" : "已删除"; if (b) { SqlRowList rs = baseDao.queryForRowSet("select ecrd_id,emd_id from ecr left join ecrmakedetail on emd_ecrid=ecr_id left join ecrdetail on ecrd_ecrid=ecr_id and emd_maprodcode=ecrd_mothercode where emd_id=" + store.get("ID")); while (rs.next()) { if (!baseDao.checkIf("ecr left join ecrmakedetail on emd_ecrid=ecr_id left join ecrdetail on ecrd_ecrid=ecr_id and emd_maprodcode=ecrd_mothercode", "emd_id=" + rs.getGeneralInt("emd_id") + " and ecrd_id=" + rs.getGeneralInt("ecrd_id"))) { hashMap.put("code", "10002"); hashMap.put("msg", "数据错误,请核对数据后对接MES处理!"); return hashMap; } EcrMakeDetail ecrMakeDetail = baseDao.getJdbcTemplate().queryForObject("select ecr_code,emd_macode,ecr_tempg,ecr_tempb,ecr_tempc,'" + status + "' status,case when nvl(emd_ifzhix,0)=0 then '否' else '是' end emd_ifzhix,emd_controlpoint,emd_detno||'' emd_detno," + "ecr_tempa,'' rmk3,'' rmk4,'' rmk5,ecrd_type,ecrd_soncode,nvl(ecrd_newbaseqty,0) ecrd_newbaseqty,ecrd_repcode,nvl(ecrd_oldbaseqty,0) ecrd_oldbaseqty,ecrd_location,ecrd_oldlocation,'" + tokenConfig.get("mesUser") + "' mesUser,'" + MD5Util.encodeByMD5(tokenConfig.get("mesPwd")) + "' mesPwd " + "from ecr left join ecrmakedetail on emd_ecrid=ecr_id left join ecrdetail on ecrd_ecrid=ecr_id and emd_maprodcode=ecrd_mothercode where emd_id=? and ecrd_id=?", new BeanPropertyRowMapper(EcrMakeDetail.class), rs.getGeneralInt("emd_id"), rs.getGeneralInt("ecrd_id")); ecrMakeDetails.add(ecrMakeDetail); } ma.put("Data", ecrMakeDetails); Map map = syncMESCheckBomItems(JSON.toJSONString(ma, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("updateChangeOrderByErp")); if (map != null) { int msgId = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1")); hashMap.put("code", msgId); hashMap.put("msg", map.get("msg")); } } } } return hashMap; } @Override public Map syncMakeScrap(String data) { Map store = BaseUtil.parseFormStoreToMap(data); Object msId = store.get("ms_id"); String mesUser = tokenConfig.get("mesUser"); String mesPwd = MD5Util.encodeByMD5(tokenConfig.get("mesPwd")); int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1")); Map hashMap = new HashMap<>(); hashMap.put("code", 0); int count = baseDao.getCount("select count(1) from MakeScrap where ms_id="+msId); if (count>0) { List makeScrapDetail = baseDao.getJdbcTemplate().query("select ms_code,ms_id,md_detno,1 issw,md_mmcode,md_mmdetno,md_prodcode,mm_prodcode,md_qty,'"+mesUser+"' mesUser,'"+mesPwd+"' mesPwd,"+flag+" flag from MakeScrap left join MakeScrapDetail on ms_id=md_msid left join MakeMaterial on mm_code=md_mmcode and mm_detno=md_mmdetno where ms_id="+ msId,new Object[]{},new BeanPropertyRowMapper(MakeScrapDetail.class)); Map ma = new HashMap<>(); ma.put("data",makeScrapDetail); Map map = syncMESCheckBomItems(JSON.toJSONString(ma, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeScrap")); hashMap.put("code", -1); hashMap.put("msg", "MES异常,请联系MES处理!"); if (map != null&&!map.isEmpty()) { int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1")); hashMap.put("code", code); hashMap.put("msg", map.get("msg")); } } return hashMap; } @Override public Map syncSendNotify(String data) { Map store = BaseUtil.parseFormStoreToMap(data); Object snId = store.get("sn_id"); int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1")); Map hashMap = new HashMap<>(); hashMap.put("code", 0); int count = baseDao.getCount("select count(1) from SendNotify where sn_id="+snId); if (count>0) { SendNotify sendNotify = baseDao.getJdbcTemplate().queryForObject("select sn_code,nvl(cu_mescode,sn_custcode) sn_custcode,nvl(sn_isvmi,0) sn_isvmi,sn_recordername,sn_remark,sn_remark2,sn_packingremark,nvl(sn_cop,'BYT') sn_cop," + flag + " flag from SendNotify left join Customer on sn_custcode=cu_code where sn_id=?", new BeanPropertyRowMapper(SendNotify.class), snId); sendNotify.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd"))); sendNotify.setMesUser(tokenConfig.get("mesUser")); List sendNotifyDetails = baseDao.getJdbcTemplate().query("select snd_ordercode,snd_prodcode,snd_outqty,nvl(A.cd_varchar50_1,snd_warehousecode) snd_warehousecode,snd_orderdetno,snd_id,"+flag+" flag from SendNotifyDetail left join (select cd_varchar50_3,cd_varchar50_1 from customtable left join customtabledetail on ct_id=cd_ctid where ct_caller='MESWarehouse') A on A.cd_varchar50_3=snd_warehousecode where snd_snid="+ snId,new Object[]{},new BeanPropertyRowMapper(SendNotifyDetail.class)); sendNotify.setDetailList(sendNotifyDetails); Map map = syncMESCheckBomItems(JSON.toJSONString(sendNotify, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncSendNotify")); hashMap.put("code", -1); hashMap.put("msg", "MES异常,请联系MES处理!"); if (map != null&&!map.isEmpty()) { int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1")); hashMap.put("code", code); hashMap.put("msg", map.get("msg")); } } return hashMap; } private ApiResult syncMES(String params,String url) { try { logger.info("params:" + params); String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params); logger.info("post:" + post); JSONObject jsonObject = JSON.parseObject(post); int code = jsonObject.getIntValue("result"); if (code == 0) { return ApiResponse.successRsp("0", "同步MES成功"); } else if (code == 1) { return ApiResponse.failRsp("101", jsonObject.getString("message")); } else { return ApiResponse.failRsp("102", "接口调用异常,请联系MES处理!"); } } catch (Exception e) { logger.info("异常信息:" + e.getMessage()); return ApiResponse.failRsp("103", "接口调用异常,请联系MES处理!"); } } private Map syncMESDeleteMake(String params,String url){ Map map = new HashMap<>(); map.put("code",-1); logger.info("params:"+params); try { String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params); logger.info("post:"+post); JSONObject jsonObject = JSON.parseObject(post); int code = jsonObject.getIntValue("result"); if (code==0){ map.put("code",code); map.put("msg","同步MES成功"); }else if(code==1){ map.put("code",code); map.put("msg",jsonObject.getString("message")); }else { map.put("msg","接口调用异常,错误代码:"+code+",请联系MES处理!"); } }catch (Exception e){ map.put("msg","接口调用异常,异常信息:"+e.getMessage()+",请联系MES处理!"); logger.info("异常信息:"+e.getMessage()); e.printStackTrace(); } return map; } private Map syncMESCheckBomItems(String params,String url){ Map map = new HashMap<>(); map.put("code",-1); logger.info("params:"+params); try { String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params); logger.info("post:"+post); JSONObject jsonObject; int code=0; String msg=""; if (post.contains("MsgId")){ JSONArray objects = JSON.parseArray(post); Object obj = objects.get(0); jsonObject=JSON.parseObject(StringUtil.nvl(obj,"{}")); code= jsonObject.getIntValue("MsgId"); msg=jsonObject.getString("MsgStr"); }else { jsonObject = JSON.parseObject(post); code= jsonObject.getIntValue("msgId"); msg=jsonObject.getString("msgStr"); } if (code==0){ map.put("code",code); map.put("msg","同步MES成功"); }else if(code==1){ map.put("code",code); map.put("msg",msg); }else { map.put("msg","接口调用异常,错误代码:"+code+",请联系MES处理!"); } }catch (Exception e){ map.put("msg","接口调用异常,异常信息:"+e.getMessage()+",请联系MES处理!"); logger.info("异常信息:"+e.getMessage()); e.printStackTrace(); } return map; } private Map jsonArray(String params,String url){ Map map = new HashMap<>(); map.put("code",-1); logger.info("params:"+params); try { String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params); logger.info("post:"+post); JSONObject jsonObject; JSONArray objects = JSON.parseArray(post); Object obj = objects.get(0); jsonObject=JSON.parseObject(StringUtil.nvl(obj,"{}")); int code= jsonObject.getIntValue("msgId"); String msg=jsonObject.getString("msgStr"); if (code==0){ map.put("code",code); map.put("msg","同步MES成功"); }else if(code==1){ map.put("code",code); map.put("msg",msg); }else { map.put("msg","接口调用异常,错误代码:"+code+",请联系MES处理!"); } }catch (Exception e){ map.put("msg","接口调用异常,异常信息:"+e.getMessage()+",请联系MES处理!"); logger.info("异常信息:"+e.getMessage()); e.printStackTrace(); } return map; } }