ERPServiceImpl.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. package com.uas.eis.service.Impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.alibaba.fastjson.serializer.SerializerFeature;
  6. import com.uas.eis.core.support.TokenProperties;
  7. import com.uas.eis.dao.BaseDao;
  8. import com.uas.eis.dao.SqlRowList;
  9. import com.uas.eis.entity.*;
  10. import com.uas.eis.sdk.entity.ApiResult;
  11. import com.uas.eis.sdk.resp.ApiResponse;
  12. import com.uas.eis.service.ERPService;
  13. import com.uas.eis.utils.*;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  18. import org.springframework.stereotype.Service;
  19. import java.util.ArrayList;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23. /**
  24. * @author koul
  25. * @email koul@usoftchina.com
  26. * @date 2021-12-06 18:27
  27. */
  28. @Service
  29. public class ERPServiceImpl implements ERPService {
  30. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  31. private static Map<String,String> tokenConfig = TokenProperties.getAllProperty();
  32. @Autowired
  33. private BaseDao baseDao;
  34. @Override
  35. public ApiResult<String> syncProduct(String data) {
  36. Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
  37. 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=?",
  38. new BeanPropertyRowMapper<Product>(Product.class),store.get("pr_id"));
  39. //获取MES对应仓库
  40. String prWhcode = product.getPr_whcode();
  41. if (prWhcode!=null&&!"".equals(prWhcode)) {
  42. 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");
  43. if (rs.next()){
  44. product.setPr_whcode(rs.getGeneralString("cd_varchar50_1"));
  45. }
  46. }
  47. product.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1")));
  48. product.setMesUser(tokenConfig.get("mesUser"));
  49. product.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
  50. return syncMES(JSON.toJSONString(product, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncProduct"));
  51. }
  52. @Override
  53. public ApiResult<String> syncMakeBase(String data) {
  54. Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
  55. 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=?",
  56. new BeanPropertyRowMapper<Make>(Make.class),store.get("ma_id"));
  57. make.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1")));
  58. make.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
  59. make.setMesUser(tokenConfig.get("mesUser"));
  60. return syncMES(JSON.toJSONString(make, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncMakeBase"));
  61. }
  62. @Override
  63. public ApiResult<String> syncMakeBaseDetail(String data) {
  64. Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
  65. 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",
  66. new BeanPropertyRowMapper<MakeMaterial>(MakeMaterial.class),store.get("mm_id"));
  67. makeMaterial.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1")));
  68. makeMaterial.setMesUser(tokenConfig.get("mesUser"));
  69. makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
  70. return syncMES(JSON.toJSONString(makeMaterial, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncMakeBaseDetail"));
  71. }
  72. @Override
  73. public ApiResult<String> syncUpdateReceiveByErp(String data) {
  74. try {
  75. Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
  76. 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=?",
  77. new BeanPropertyRowMapper<VerifyApply>(VerifyApply.class), store.get("va_id"));
  78. 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"));
  79. if (rs.next()){
  80. verifyApply.setVa_custcode(rs.getString("cu_code"));
  81. //verifyApply.setVa_custname(rs.getString("cu_name"));
  82. }
  83. verifyApply.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
  84. verifyApply.setMesUser(tokenConfig.get("mesUser"));
  85. verifyApply.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1")));
  86. List<VerifyApplyDetail> 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);
  87. verifyApply.setDetail(verifyApplyDetails);
  88. return syncMES(JSON.toJSONString(verifyApply, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncUpdateReceiveByErp"));
  89. }catch (Exception e){
  90. logger.info("同步收料单异常信息:"+e.getMessage());
  91. e.printStackTrace();
  92. return ApiResponse.failRsp("104",e.getMessage());
  93. }
  94. }
  95. @Override
  96. public Map<String, Object> syncDeleteMake(String data) {
  97. Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
  98. Object maId = store.get("ma_id");
  99. int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1"));
  100. Map<String, Object> hashMap = new HashMap<>();
  101. hashMap.put("code", 0);
  102. int count = baseDao.getCount("select count(1) from mes_make where erpid="+maId);
  103. if (count>0) {
  104. 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>(Make.class), maId);
  105. make.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
  106. make.setMesUser(tokenConfig.get("mesUser"));
  107. Map<String, Object> map = syncMESDeleteMake(JSON.toJSONString(make, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeBase"));
  108. hashMap.put("code", -1);
  109. hashMap.put("msg", "删除工单异常,请联系MES处理!");
  110. if (map != null) {
  111. int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
  112. if (code == 0) {
  113. List<MakeMaterial> 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>(MakeMaterial.class));
  114. for (MakeMaterial makeMaterial: makeMaterials) {
  115. makeMaterial.setMesUser(tokenConfig.get("mesUser"));
  116. makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
  117. Map<String, Object> map1 = syncMESDeleteMake(JSON.toJSONString(makeMaterial, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeBaseDetail"));
  118. hashMap.put("msg", "删除BOM异常,请联系MES处理!");
  119. if (map1 != null) {
  120. int code1 = Integer.parseInt(StringUtil.nvl(map1.get("code"), "-1"));
  121. hashMap.put("code", code1);
  122. hashMap.put("msg", map1.get("msg"));
  123. }
  124. }
  125. List<MakeMaterial> 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>(MakeMaterial.class));
  126. for (MakeMaterial makeMaterial: makeMaterials2) {
  127. makeMaterial.setMesUser(tokenConfig.get("mesUser"));
  128. makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
  129. Map<String, Object> map2 = syncMESDeleteMake(JSON.toJSONString(makeMaterial, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeBaseDetail"));
  130. hashMap.put("msg", "删除替代料异常,请联系MES处理!");
  131. if (map2 != null) {
  132. int code2 = Integer.parseInt(StringUtil.nvl(map2.get("code"), "-1"));
  133. hashMap.put("code", code2);
  134. hashMap.put("msg", map2.get("msg"));
  135. }
  136. }
  137. }
  138. hashMap.put("code", code);
  139. hashMap.put("msg", map.get("msg"));
  140. }
  141. }
  142. return hashMap;
  143. }
  144. @Override
  145. public Map<String, Object> syncProdInOutMakeGive(String data) {
  146. Map<String, Object> hashMap = new HashMap<>();
  147. try {
  148. Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
  149. String mesUser = tokenConfig.get("mesUser");
  150. String mesPwd = MD5Util.encodeByMD5(tokenConfig.get("mesPwd"));
  151. int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1"));
  152. int piId = Integer.parseInt(StringUtil.nvl(store.get("pi_id"), "0"));
  153. int count = baseDao.getCount("select count(1) from prodinout where pi_id="+piId);
  154. if (count>0) {
  155. 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=?",
  156. new BeanPropertyRowMapper<ProdInOutMakeGive>(ProdInOutMakeGive.class), piId);
  157. List<ProdInOutMakeGiveDetail> prodInOutMakeGiveDetails = baseDao.query("select pd_prodcode,pd_outqty,pd_id,pd_orderdetno," + flag + " flag from prodiodetail where pd_piid=" + piId, ProdInOutMakeGiveDetail.class);
  158. prodInOutMakeGive.setDetail(prodInOutMakeGiveDetails);
  159. Map<String, Object> map = jsonArray(JSON.toJSONString(prodInOutMakeGive, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncInOutMakeGive"));
  160. hashMap.put("code", -1);
  161. hashMap.put("msg", "MES异常,请联系MES处理!");
  162. if (map != null&&!map.isEmpty()) {
  163. int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
  164. hashMap.put("code", code);
  165. hashMap.put("msg", map.get("msg"));
  166. }
  167. }else {
  168. hashMap.put("code", -1);
  169. hashMap.put("msg", "參數异常,请核对处理!");
  170. }
  171. return hashMap;
  172. }catch (Exception e){
  173. logger.error("同步补料单异常信息:"+e.getMessage());
  174. hashMap.put("code", -1);
  175. hashMap.put("msg",StringUtil.nvl(e.getMessage(),"接口返回空,请联系MES处理!").substring(0,200));
  176. e.printStackTrace();
  177. return hashMap;
  178. }
  179. }
  180. @Override
  181. public Map<String, Object> checkProdBomItem(String data) {
  182. Map<String, Object> hashMap = new HashMap<>();
  183. hashMap.put("code", 0);
  184. hashMap.put("msg", "参数异常,请联系管理员!");
  185. System.err.println(JSONObject.parseObject(data));
  186. System.err.println(JSON.toJSONString(data));
  187. Map<String, Object> map = syncMESCheckBomItems(JSON.toJSONString(JSONObject.parseObject(data)).replace("null", "\"\""), tokenConfig.get("syncMakeMaterialCheck"));
  188. if (map != null) {
  189. int msgId = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
  190. hashMap.put("code", msgId);
  191. hashMap.put("msg", map.get("msg"));
  192. }
  193. return hashMap;
  194. }
  195. @Override
  196. public Map<String, Object> updateChangeOrderByErp(String data) {
  197. Map<String, Object> hashMap = new HashMap<>();
  198. hashMap.put("code", "10001");
  199. hashMap.put("msg", "参数异常,请联系管理员!");
  200. List<Map<Object, Object>> maps = BaseUtil.parseGridStoreToMaps(data);
  201. List<EcrMakeDetail> ecrMakeDetails = new ArrayList<>();
  202. Map<String, Object> ma = new HashMap<>();
  203. if (maps.size()>0) {
  204. boolean b = true;
  205. if (baseDao.checkIf("ecrmakedetail left join ecr on emd_ecrid=ecr_id", "nvl(ecr_tempg,' ')='机型BOM变更' and emd_id=" + maps.get(0).get("ID"))) {
  206. b = false;
  207. }
  208. for (Map<Object, Object> store : maps) {
  209. String s = store.get("STATUS") == null ? "" : store.get("STATUS").toString();
  210. String status = "AUDITED".equals(s) ? "已审核" : "COMMITED".equals(s) ? "已提交" : "已删除";
  211. if (b) {
  212. 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"));
  213. while (rs.next()) {
  214. 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"))) {
  215. hashMap.put("code", "10002");
  216. hashMap.put("msg", "数据错误,请核对数据后对接MES处理!");
  217. return hashMap;
  218. }
  219. 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," +
  220. "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 " +
  221. "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=?",
  222. new BeanPropertyRowMapper<EcrMakeDetail>(EcrMakeDetail.class), rs.getGeneralInt("emd_id"), rs.getGeneralInt("ecrd_id"));
  223. ecrMakeDetails.add(ecrMakeDetail);
  224. }
  225. ma.put("Data", ecrMakeDetails);
  226. Map<String, Object> map = syncMESCheckBomItems(JSON.toJSONString(ma, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("updateChangeOrderByErp"));
  227. if (map != null) {
  228. int msgId = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
  229. hashMap.put("code", msgId);
  230. hashMap.put("msg", map.get("msg"));
  231. }
  232. }
  233. }
  234. }
  235. return hashMap;
  236. }
  237. @Override
  238. public Map<String, Object> syncMakeScrap(String data) {
  239. Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
  240. Object msId = store.get("ms_id");
  241. String mesUser = tokenConfig.get("mesUser");
  242. String mesPwd = MD5Util.encodeByMD5(tokenConfig.get("mesPwd"));
  243. int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1"));
  244. Map<String, Object> hashMap = new HashMap<>();
  245. hashMap.put("code", 0);
  246. int count = baseDao.getCount("select count(1) from MakeScrap where ms_id="+msId);
  247. if (count>0) {
  248. List<MakeScrapDetail> 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>(MakeScrapDetail.class));
  249. Map<String, Object> ma = new HashMap<>();
  250. ma.put("data",makeScrapDetail);
  251. Map<String, Object> map = syncMESCheckBomItems(JSON.toJSONString(ma, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeScrap"));
  252. hashMap.put("code", -1);
  253. hashMap.put("msg", "MES异常,请联系MES处理!");
  254. if (map != null&&!map.isEmpty()) {
  255. int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
  256. hashMap.put("code", code);
  257. hashMap.put("msg", map.get("msg"));
  258. }
  259. }
  260. return hashMap;
  261. }
  262. @Override
  263. public Map<String, Object> syncSendNotify(String data) {
  264. Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
  265. Object snId = store.get("sn_id");
  266. int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1"));
  267. Map<String, Object> hashMap = new HashMap<>();
  268. hashMap.put("code", 0);
  269. int count = baseDao.getCount("select count(1) from SendNotify where sn_id="+snId);
  270. if (count>0) {
  271. 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>(SendNotify.class), snId);
  272. sendNotify.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
  273. sendNotify.setMesUser(tokenConfig.get("mesUser"));
  274. List<SendNotifyDetail> 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>(SendNotifyDetail.class));
  275. sendNotify.setDetailList(sendNotifyDetails);
  276. Map<String, Object> map = syncMESCheckBomItems(JSON.toJSONString(sendNotify, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncSendNotify"));
  277. hashMap.put("code", -1);
  278. hashMap.put("msg", "MES异常,请联系MES处理!");
  279. if (map != null&&!map.isEmpty()) {
  280. int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
  281. hashMap.put("code", code);
  282. hashMap.put("msg", map.get("msg"));
  283. }
  284. }
  285. return hashMap;
  286. }
  287. private ApiResult<String> syncMES(String params,String url) {
  288. try {
  289. logger.info("params:" + params);
  290. String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params);
  291. logger.info("post:" + post);
  292. JSONObject jsonObject = JSON.parseObject(post);
  293. int code = jsonObject.getIntValue("result");
  294. if (code == 0) {
  295. return ApiResponse.successRsp("0", "同步MES成功");
  296. } else if (code == 1) {
  297. return ApiResponse.failRsp("101", jsonObject.getString("message"));
  298. } else {
  299. return ApiResponse.failRsp("102", "接口调用异常,请联系MES处理!");
  300. }
  301. } catch (Exception e) {
  302. logger.info("异常信息:" + e.getMessage());
  303. return ApiResponse.failRsp("103", "接口调用异常,请联系MES处理!");
  304. }
  305. }
  306. private Map<String, Object> syncMESDeleteMake(String params,String url){
  307. Map<String, Object> map = new HashMap<>();
  308. map.put("code",-1);
  309. logger.info("params:"+params);
  310. try {
  311. String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params);
  312. logger.info("post:"+post);
  313. JSONObject jsonObject = JSON.parseObject(post);
  314. int code = jsonObject.getIntValue("result");
  315. if (code==0){
  316. map.put("code",code);
  317. map.put("msg","同步MES成功");
  318. }else if(code==1){
  319. map.put("code",code);
  320. map.put("msg",jsonObject.getString("message"));
  321. }else {
  322. map.put("msg","接口调用异常,错误代码:"+code+",请联系MES处理!");
  323. }
  324. }catch (Exception e){
  325. map.put("msg","接口调用异常,异常信息:"+e.getMessage()+",请联系MES处理!");
  326. logger.info("异常信息:"+e.getMessage());
  327. e.printStackTrace();
  328. }
  329. return map;
  330. }
  331. private Map<String, Object> syncMESCheckBomItems(String params,String url){
  332. Map<String, Object> map = new HashMap<>();
  333. map.put("code",-1);
  334. logger.info("params:"+params);
  335. try {
  336. String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params);
  337. logger.info("post:"+post);
  338. JSONObject jsonObject;
  339. int code=0;
  340. String msg="";
  341. if (post.contains("MsgId")){
  342. JSONArray objects = JSON.parseArray(post);
  343. Object obj = objects.get(0);
  344. jsonObject=JSON.parseObject(StringUtil.nvl(obj,"{}"));
  345. code= jsonObject.getIntValue("MsgId");
  346. msg=jsonObject.getString("MsgStr");
  347. }else {
  348. jsonObject = JSON.parseObject(post);
  349. code= jsonObject.getIntValue("msgId");
  350. msg=jsonObject.getString("msgStr");
  351. }
  352. if (code==0){
  353. map.put("code",code);
  354. map.put("msg","同步MES成功");
  355. }else if(code==1){
  356. map.put("code",code);
  357. map.put("msg",msg);
  358. }else {
  359. map.put("msg","接口调用异常,错误代码:"+code+",请联系MES处理!");
  360. }
  361. }catch (Exception e){
  362. map.put("msg","接口调用异常,异常信息:"+e.getMessage()+",请联系MES处理!");
  363. logger.info("异常信息:"+e.getMessage());
  364. e.printStackTrace();
  365. }
  366. return map;
  367. }
  368. private Map<String, Object> jsonArray(String params,String url){
  369. Map<String, Object> map = new HashMap<>();
  370. map.put("code",-1);
  371. logger.info("params:"+params);
  372. try {
  373. String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params);
  374. logger.info("post:"+post);
  375. JSONObject jsonObject;
  376. JSONArray objects = JSON.parseArray(post);
  377. Object obj = objects.get(0);
  378. jsonObject=JSON.parseObject(StringUtil.nvl(obj,"{}"));
  379. int code= jsonObject.getIntValue("msgId");
  380. String msg=jsonObject.getString("msgStr");
  381. if (code==0){
  382. map.put("code",code);
  383. map.put("msg","同步MES成功");
  384. }else if(code==1){
  385. map.put("code",code);
  386. map.put("msg",msg);
  387. }else {
  388. map.put("msg","接口调用异常,错误代码:"+code+",请联系MES处理!");
  389. }
  390. }catch (Exception e){
  391. map.put("msg","接口调用异常,异常信息:"+e.getMessage()+",请联系MES处理!");
  392. logger.info("异常信息:"+e.getMessage());
  393. e.printStackTrace();
  394. }
  395. return map;
  396. }
  397. }