luhg 8 лет назад
Родитель
Сommit
64f83f5c31

+ 30 - 1
src/main/java/com/uas/eis/controller/TestController.java

@@ -85,7 +85,7 @@ public class TestController {
         code1.put("consign_time","2015-07-01 16:39:35");
         code1.put("customer_no","2017070003");
         code1.put("customer_name","创趣-华米分销商");
-        code1.put("stockout_list",detail);
+        code1.put("details_list",detail);
 
         data.add(code1);
 
@@ -95,4 +95,33 @@ public class TestController {
         res.put("stockout_list",data);
         return res;
     }
+
+    @PostMapping(value = "/test/getoutrefund")
+    public Map<String,Object> getOutRefund(@RequestBody String str){
+        System.out.println("request body:" + str);
+
+        Map<String,Object> res = new HashMap<>();
+
+        List<Map<String,Object>> data = new LinkedList<>();
+
+        List<Map<String,Object>> detail = new LinkedList<>();
+        Map<String,Object> detailMap = new HashMap<>();
+        detailMap.put("tid","SS17060005");
+        detailMap.put("spec_no","A.AA00010");
+        detailMap.put("stockin_num",100);
+        detail.add(detailMap);
+
+        Map<String,Object> code1 = new HashMap<>();
+        code1.put("refund_no","abc123");
+        code1.put("warehouse_no","YD001");
+        code1.put("shop_n","2017070003");
+        code1.put("refund_orders_list",detail);
+        data.add(code1);
+
+        res.put("code",0);
+        res.put("message","test");
+        res.put("total_count",100);
+        res.put("data",data);
+        return res;
+    }
 }

+ 13 - 0
src/main/java/com/uas/eis/dao/SaleReturnDao.java

@@ -0,0 +1,13 @@
+package com.uas.eis.dao;
+
+import com.uas.eis.entity.SaleReturn;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 销售退货单
+ */
+@Repository
+public interface SaleReturnDao extends JpaRepository<SaleReturn,Long> {
+}

+ 13 - 0
src/main/java/com/uas/eis/dao/SaleReturnDetailDao.java

@@ -0,0 +1,13 @@
+package com.uas.eis.dao;
+
+import com.uas.eis.entity.SaleReturnDetail;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 销售退货单明细
+ */
+@Repository
+public interface SaleReturnDetailDao extends JpaRepository<SaleReturnDetail,Long> {
+}

+ 11 - 0
src/main/java/com/uas/eis/entity/SaleDetail.java

@@ -21,6 +21,9 @@ public class SaleDetail implements Serializable {
     @Column(name = "id_")
     private Long id;
 
+    @Column(name = "mainid_")
+    private Long mainId;
+
     @Column(name = "spec_no")
     private String spec_no;
 
@@ -41,6 +44,14 @@ public class SaleDetail implements Serializable {
         this.id = id;
     }
 
+    public Long getMainId() {
+        return mainId;
+    }
+
+    public void setMainId(Long mainId) {
+        this.mainId = mainId;
+    }
+
     public String getSpec_no() {
         return spec_no;
     }

+ 82 - 0
src/main/java/com/uas/eis/entity/SaleReturn.java

@@ -0,0 +1,82 @@
+package com.uas.eis.entity;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 销售退货单
+ */
+@Entity
+@Table(name = "edi_salereturn")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class SaleReturn implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @SequenceGenerator(name="EDI_SALERETURN_GENERATOR", sequenceName="EDI_SALERETURN_SEQ", allocationSize=1)
+    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EDI_SALERETURN_GENERATOR")
+    @Column(name = "id_")
+    private Long id;
+
+    @Column(name = "refund_no")
+    private String refund_no;
+
+    @Column(name = "warehouse_no")
+    private String warehouse_no;
+
+    @Column(name = "shop_n")
+    private String shop_n;
+
+    /**
+     * 销售退货单明细.
+     */
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+    @JoinColumn(name = "mainid_")
+    private List<SaleReturnDetail> refund_orders_list;
+
+    public SaleReturn(){}
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getRefund_no() {
+        return refund_no;
+    }
+
+    public void setRefund_no(String refund_no) {
+        this.refund_no = refund_no;
+    }
+
+    public String getWarehouse_no() {
+        return warehouse_no;
+    }
+
+    public void setWarehouse_no(String warehouse_no) {
+        this.warehouse_no = warehouse_no;
+    }
+
+    public String getShop_n() {
+        return shop_n;
+    }
+
+    public void setShop_n(String shop_n) {
+        this.shop_n = shop_n;
+    }
+
+    public List<SaleReturnDetail> getRefund_orders_list() {
+        return refund_orders_list;
+    }
+
+    public void setRefund_orders_list(List<SaleReturnDetail> refund_orders_list) {
+        this.refund_orders_list = refund_orders_list;
+    }
+}

+ 80 - 0
src/main/java/com/uas/eis/entity/SaleReturnDetail.java

@@ -0,0 +1,80 @@
+package com.uas.eis.entity;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 销售退货单明细
+ */
+@Entity
+@Table(name = "edi_salereturn_detail")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class SaleReturnDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @SequenceGenerator(name="EDI_SALERETURN_DETAIL_GENERATOR", sequenceName="EDI_SALERETURN_DETAIL_SEQ", allocationSize=1)
+    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EDI_SALERETURN_DETAIL_GENERATOR")
+    @Column(name = "id_")
+    private Long id;
+
+    @Column(name = "mainid_")
+    private Long mainId;
+
+    @Column(name = "tid")
+    private String tid;
+
+    @Column(name = "spec_no")
+    private String spec_no;
+
+    @Column(name = "stockin_num")
+    private Long stockin_num;
+
+    public SaleReturnDetail(){}
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getMainId() {
+        return mainId;
+    }
+
+    public void setMainId(Long mainId) {
+        this.mainId = mainId;
+    }
+
+    public String getTid() {
+        return tid;
+    }
+
+    public void setTid(String tid) {
+        this.tid = tid;
+    }
+
+    public String getSpec_no() {
+        return spec_no;
+    }
+
+    public void setSpec_no(String spec_no) {
+        this.spec_no = spec_no;
+    }
+
+    public Long getStockin_num() {
+        return stockin_num;
+    }
+
+    public void setStockin_num(Long stockin_num) {
+        this.stockin_num = stockin_num;
+    }
+
+
+}

+ 9 - 0
src/main/java/com/uas/eis/service/SaleReturnService.java

@@ -0,0 +1,9 @@
+package com.uas.eis.service;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 销售退货单
+ */
+public interface SaleReturnService {
+    void getSaleReturn();
+}

+ 120 - 0
src/main/java/com/uas/eis/serviceImpl/SaleReturnServiceImpl.java

@@ -0,0 +1,120 @@
+package com.uas.eis.serviceImpl;
+
+import com.uas.eis.dao.*;
+import com.uas.eis.entity.EdiSuccessLog;
+import com.uas.eis.entity.Sale;
+import com.uas.eis.entity.SaleReturn;
+import com.uas.eis.service.SaleReturnService;
+import com.uas.eis.service.StockService;
+import com.uas.eis.utils.Constant;
+import com.uas.eis.utils.HttpUtil;
+import com.uas.eis.utils.JacksonUtil;
+import com.uas.eis.utils.LogUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 销售退货单
+ */
+@Service
+public class SaleReturnServiceImpl implements SaleReturnService{
+    public static final String getSaleReturnFromYundingUrl = "http://dc.oclean.com/getoutrefund";
+    //public static final String getSaleReturnFromYundingUrl = "http://127.0.0.1:8008/test/getoutrefund";
+
+    @Autowired
+    BaseDao baseDao;
+    @Autowired
+    EdiLogDao ediLogDao;
+    @Autowired
+    SaleReturnDao saleReturnDao;
+    @Autowired
+    EdiSuccessLogDao ediSuccessLogDao;
+    @Autowired
+    StockService stockService;
+
+    @Override
+    public void getSaleReturn() {
+        String timestamp = String.valueOf(System.currentTimeMillis()/1000);
+
+        Map<String,Object> postMapData = new HashMap<>();
+        postMapData.put("app_key", Constant.yundingAppKey);
+        postMapData.put("time_stamp",timestamp);
+        postMapData.put("start_time","1970-01-01 00:00:00");
+        postMapData.put("end_time","2099-01-01 00:00:00");
+        postMapData.put("page_size",100);
+        postMapData.put("page_index",0);
+
+        String jsonData = JacksonUtil.toSortJson(postMapData);
+        String responseText = null;
+        try {
+            HttpUtil.Response response = HttpUtil.doPostToYunding(getSaleReturnFromYundingUrl,jsonData,timestamp);
+
+            System.out.println("responseText:" + response.getResponseText());
+
+            if(response.getStatusCode()!=200){
+                responseText = "yunding server error";
+                throw new RuntimeException(response.getResponseText());
+            }
+
+            responseText = response.getResponseText();
+            Map<String,Object> responseMap = JacksonUtil.fromJson(response.getResponseText());
+
+            if(!"0".equals(String.valueOf(responseMap.get("code")))){
+                ediLogDao.save(LogUtil.getRequestFailLog(responseText));
+                return;
+            }
+
+            if(responseMap.get("data")==null){
+                return;
+            }
+
+            List<Map<String,Object>> datas = (List<Map<String,Object>>) responseMap.get("data");
+            if(datas.size()>0){
+                execCreateSaleReturnProcedure(datas,responseText);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            ediLogDao.save(LogUtil.getSaleFailLog(responseText,e.getMessage()));
+        }
+    }
+
+    public void execCreateSaleReturnProcedure(List<Map<String,Object>> datas,String responseText){
+        String code = null;
+        String out = null;
+        EdiSuccessLog postSuccessHist = null;
+        String type = "sale_return";
+        for(Map<String,Object> data:datas){
+            code = String.valueOf(data.get("refund_no"));
+
+            postSuccessHist = null;
+            postSuccessHist = ediSuccessLogDao.findByCodeAndType(code,type);
+            if(postSuccessHist!=null){
+                stockService.postConfirmToYunding(code,2);
+                continue;
+            }
+
+            try {
+                SaleReturn saleReturn = JacksonUtil.fromJson(data, SaleReturn.class);
+                System.out.println(JacksonUtil.toJson(saleReturn));
+                saleReturn = saleReturnDao.save(saleReturn);
+
+                out = baseDao.callProcedure("SP_YUNDING_SALERETURN",new Object[]{saleReturn.getId()});
+                if (out!=null){
+                    ediLogDao.save(LogUtil.getSaleReturnFailLog(code,responseText,out));
+                }else{
+                    ediLogDao.save(LogUtil.getSaleReturnSuccessLog(code,responseText));
+                    ediSuccessLogDao.save(LogUtil.getLogToAvoidRepeatPost(code,type));
+                    stockService.postConfirmToYunding(code,2);
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+                ediLogDao.save(LogUtil.getSaleReturnFailLog(code,responseText,e.getMessage()));
+            }
+        }
+    }
+}

+ 22 - 0
src/main/java/com/uas/eis/task/SaleReturnTask.java

@@ -0,0 +1,22 @@
+package com.uas.eis.task;
+
+import com.uas.eis.entity.SaleReturn;
+import com.uas.eis.service.SaleReturnService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 销售退货单
+ */
+@Component
+public class SaleReturnTask {
+    @Autowired
+    SaleReturnService saleReturnService;
+
+    @Scheduled(cron = "0 0/5 * * * ?")
+    public void getSaleReturn() {
+        saleReturnService.getSaleReturn();
+    }
+}

+ 2 - 1
src/main/java/com/uas/eis/task/SaleTask.java

@@ -15,7 +15,8 @@ public class SaleTask {
     @Autowired
     SaleService saleService;
 
-    @Scheduled(cron = "0 0/5 * * * ?")
+
+    @Scheduled(cron = "0 0/4 * * * ?")
     public void getSale() {
         saleService.getSale();
     }

+ 1 - 1
src/main/java/com/uas/eis/task/StockTask.java

@@ -14,7 +14,7 @@ public class StockTask {
     @Autowired
     StockService stockService;
 
-    @Scheduled(cron = "0 0/5 * * * ?")
+    @Scheduled(cron = "0 0/3 * * * ?")
     public void autoPost() {
         stockService.autoPost(); //出入库定时过账
     }

+ 16 - 0
src/main/java/com/uas/eis/utils/JacksonUtil.java

@@ -3,6 +3,7 @@ package com.uas.eis.utils;
 import java.io.IOException;
 import java.util.*;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.uas.eis.model.Key;
 import org.codehaus.jackson.JsonGenerationException;
 import org.codehaus.jackson.JsonParseException;
@@ -156,4 +157,19 @@ public class JacksonUtil {
 			throw new RuntimeException("转换Java对象失败", e);
 		}
 	}
+
+	/**
+	 * 将JavaBean序列化为JSON文本.
+	 */
+	public static String toJson(Object object) {
+		if (objectMapper == null) {
+			objectMapper = new com.fasterxml.jackson.databind.ObjectMapper();
+		}
+
+		try {
+			return objectMapper.writeValueAsString(object);
+		} catch (JsonProcessingException e) {
+			throw new RuntimeException("序列化成Json失败", e);
+		}
+	}
 }

+ 20 - 0
src/main/java/com/uas/eis/utils/LogUtil.java

@@ -62,6 +62,17 @@ public class LogUtil {
         return ediLog;
     }
 
+    public static EdiLog getSaleReturnFailLog(String code,String responseText,String errMsg){
+        EdiLog ediLog = new EdiLog();
+        ediLog.setKeyValue(code);
+        ediLog.setData(responseText);
+        ediLog.setErrorMsg(errMsg);
+        ediLog.setErrorCode("uas create salereturn fail");
+        ediLog.setStatus("fail");
+        ediLog.setType("sale_return");
+        return ediLog;
+    }
+
     public static EdiLog getSaleSuccessLog(String code,String responseText){
         EdiLog ediLog = new EdiLog();
         ediLog.setKeyValue(code);
@@ -71,6 +82,15 @@ public class LogUtil {
         return ediLog;
     }
 
+    public static EdiLog getSaleReturnSuccessLog(String code,String responseText){
+        EdiLog ediLog = new EdiLog();
+        ediLog.setKeyValue(code);
+        ediLog.setData(responseText);
+        ediLog.setStatus("success");
+        ediLog.setType("sale_return");
+        return ediLog;
+    }
+
     public static EdiLog getPostFailLog(String responseText,String errMsg){
         EdiLog ediLog = new EdiLog();
         ediLog.setData(responseText);