SaleServiceImpl.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.uas.eis.serviceImpl;
  2. import com.uas.eis.dao.*;
  3. import com.uas.eis.entity.EdiSuccessLog;
  4. import com.uas.eis.entity.Sale;
  5. import com.uas.eis.service.SaleService;
  6. import com.uas.eis.service.StockService;
  7. import com.uas.eis.utils.Constant;
  8. import com.uas.eis.utils.HttpUtil;
  9. import com.uas.eis.utils.JacksonUtil;
  10. import com.uas.eis.utils.LogUtil;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. /**
  19. * Created by luhg on 2018/4/26.
  20. * 销售订单
  21. */
  22. @Service
  23. public class SaleServiceImpl implements SaleService{
  24. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  25. public static final String getSaleFromYundingUrl = "http://dc.oclean.com/getoutstorage";
  26. //public static final String getSaleFromYundingUrl = "http://127.0.0.1:8008/test/getoutstorage";
  27. @Autowired
  28. BaseDao baseDao;
  29. @Autowired
  30. EdiLogDao ediLogDao;
  31. @Autowired
  32. SaleDao saleDao;
  33. @Autowired
  34. EdiSuccessLogDao ediSuccessLogDao;
  35. @Autowired
  36. StockService stockService;
  37. @Override
  38. public void getSale() {
  39. String timestamp = String.valueOf(System.currentTimeMillis()/1000);
  40. Map<String,Object> postMapData = new HashMap<>();
  41. postMapData.put("app_key", Constant.yundingAppKey);
  42. postMapData.put("time_stamp",timestamp);
  43. postMapData.put("start_time","1970-01-01 00:00:00");
  44. postMapData.put("end_time","2099-01-01 00:00:00");
  45. postMapData.put("page_size",100);
  46. postMapData.put("page_index",0);
  47. String jsonData = JacksonUtil.toSortJson(postMapData);
  48. String responseText = null;
  49. try {
  50. HttpUtil.Response response = HttpUtil.doPostToYunding(getSaleFromYundingUrl,jsonData,timestamp);
  51. System.out.println("responseText:" + response.getResponseText());
  52. if(response.getStatusCode()!=200){
  53. responseText = "yunding server error";
  54. throw new RuntimeException(response.getResponseText());
  55. }
  56. responseText = response.getResponseText();
  57. Map<String,Object> responseMap = JacksonUtil.fromJson(response.getResponseText());
  58. if(!"0".equals(String.valueOf(responseMap.get("code")))){
  59. ediLogDao.save(LogUtil.getRequestFailLog(responseText));
  60. return;
  61. }
  62. if(responseMap.get("stockout_list")==null){
  63. return;
  64. }
  65. List<Map<String,Object>> datas = (List<Map<String,Object>>) responseMap.get("stockout_list");
  66. if(datas.size()>0){
  67. execCreateSaleProcedure(datas,responseText);
  68. }
  69. }catch (Exception e){
  70. e.printStackTrace();
  71. logger.error("error",e);
  72. ediLogDao.save(LogUtil.getSaleFailLog(responseText,e.getMessage()));
  73. }
  74. }
  75. public void execCreateSaleProcedure(List<Map<String,Object>> datas,String responseText){
  76. String code = null;
  77. String wmscode = null;
  78. String out = null;
  79. EdiSuccessLog postSuccessHist = null;
  80. String type = "sale";
  81. for(Map<String,Object> data:datas){
  82. code = String.valueOf(data.get("trade_no"));
  83. wmscode = String.valueOf(data.get("order_no"));
  84. postSuccessHist = null;
  85. postSuccessHist = ediSuccessLogDao.findByCodeAndType(code,type);
  86. if(postSuccessHist!=null){
  87. stockService.postConfirmToYunding(wmscode,2);
  88. continue;
  89. }
  90. try {
  91. Sale sale = JacksonUtil.fromJson(data, Sale.class);
  92. sale = saleDao.save(sale);
  93. out = baseDao.callProcedure("SP_YUNDING_SALERECEIVE",new Object[]{sale.getId()});
  94. if (out!=null){
  95. ediLogDao.save(LogUtil.getSaleFailLog(code,responseText,out));
  96. }else{
  97. ediLogDao.save(LogUtil.getSaleSuccessLog(code,responseText));
  98. ediSuccessLogDao.save(LogUtil.getLogToAvoidRepeatPost(code,type));
  99. stockService.postConfirmToYunding(wmscode,2);
  100. }
  101. }catch (Exception e){
  102. e.printStackTrace();
  103. logger.error("error",e);
  104. ediLogDao.save(LogUtil.getSaleFailLog(code,responseText,e.getMessage()));
  105. }
  106. }
  107. }
  108. }