Преглед изворни кода

销售订单写入代码优化,操作成功时记录到edi_success_log表

luhg пре 7 година
родитељ
комит
dfb7a490be

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

@@ -77,6 +77,7 @@ public class TestController {
         detailMap.put("spec_no","A.BA00002");
         detailMap.put("goods_count",123);
         detailMap.put("sell_price",100);
+        detailMap.put("id123",100);
         detail.add(detailMap);
 
         Map<String,Object> code1 = new HashMap<>();

+ 14 - 0
src/main/java/com/uas/eis/dao/EdiSuccessLogDao.java

@@ -0,0 +1,14 @@
+package com.uas.eis.dao;
+
+import com.uas.eis.entity.EdiSuccessLog;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 记录操作成功的数据
+ */
+@Repository
+public interface EdiSuccessLogDao extends JpaRepository<EdiSuccessLog,Long> {
+    EdiSuccessLog findByCodeAndType(String code,String type);
+}

+ 65 - 0
src/main/java/com/uas/eis/entity/EdiSuccessLog.java

@@ -0,0 +1,65 @@
+package com.uas.eis.entity;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Created by luhg on 2018/4/26.
+ * 记录操作成功的单据
+ */
+@Entity
+@Table(name = "edi_success_log")
+public class EdiSuccessLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue
+    @Column(name = "ep_id")
+    private Long id;
+
+    @Column(name = "ep_code")
+    private String code;
+
+    @Column(name = "es_type")
+    private String type;
+
+    @Column(name = "es_date")
+    private Date date = new Date();
+
+    public EdiSuccessLog(){
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+}

+ 2 - 0
src/main/java/com/uas/eis/entity/Sale.java

@@ -1,6 +1,7 @@
 package com.uas.eis.entity;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 import javax.persistence.*;
@@ -14,6 +15,7 @@ import java.util.List;
  */
 @Entity
 @Table(name = "edi_sale")
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Sale  implements Serializable {
 
     private static final long serialVersionUID = 1L;

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

@@ -1,5 +1,7 @@
 package com.uas.eis.entity;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
 import javax.persistence.*;
 import java.io.Serializable;
 
@@ -9,6 +11,7 @@ import java.io.Serializable;
  */
 @Entity
 @Table(name = "edi_sale_detail")
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class SaleDetail implements Serializable {
     private static final long serialVersionUID = 1L;
 

+ 19 - 5
src/main/java/com/uas/eis/serviceImpl/SaleServiceImpl.java

@@ -1,12 +1,11 @@
 package com.uas.eis.serviceImpl;
 
-import com.uas.eis.dao.BaseDao;
-import com.uas.eis.dao.EdiLogDao;
-import com.uas.eis.dao.EdiPostLogDao;
-import com.uas.eis.dao.SaleDao;
+import com.uas.eis.dao.*;
 import com.uas.eis.entity.EdiPostLog;
+import com.uas.eis.entity.EdiSuccessLog;
 import com.uas.eis.entity.Sale;
 import com.uas.eis.service.SaleService;
+import com.uas.eis.service.StockService;
 import com.uas.eis.utils.Constant;
 import com.uas.eis.utils.HttpUtil;
 import com.uas.eis.utils.JacksonUtil;
@@ -34,6 +33,10 @@ public class SaleServiceImpl implements SaleService{
     EdiLogDao ediLogDao;
     @Autowired
     SaleDao saleDao;
+    @Autowired
+    EdiSuccessLogDao ediSuccessLogDao;
+    @Autowired
+    StockService stockService;
 
     @Override
     public void getSale() {
@@ -84,18 +87,29 @@ public class SaleServiceImpl implements SaleService{
     public void execCreateSaleProcedure(List<Map<String,Object>> datas,String responseText){
         String code = null;
         String out = null;
+        EdiSuccessLog postSuccessHist = null;
+        String type = "sale";
         for(Map<String,Object> data:datas){
             code = String.valueOf(data.get("order_no"));
+
+            postSuccessHist = null;
+            postSuccessHist = ediSuccessLogDao.findByCodeAndType(code,type);
+            if(postSuccessHist!=null){
+                stockService.postConfirmToYunding(code,2);
+                continue;
+            }
+
             try {
                 Sale sale = JacksonUtil.fromJson(data, Sale.class);
                 sale = saleDao.save(sale);
-                System.out.println("saleid:" + sale.getId());
 
                 out = baseDao.callProcedure("SP_YUNDING_SALERECEIVE",new Object[]{sale.getId()});
                 if (out!=null){
                     ediLogDao.save(LogUtil.getSaleFailLog(code,responseText,out));
                 }else{
                     ediLogDao.save(LogUtil.getSaleSuccessLog(code,responseText));
+                    ediSuccessLogDao.save(LogUtil.getLogToAvoidRepeatPost(code,type));
+                    stockService.postConfirmToYunding(code,2);
                 }
             }catch (Exception e){
                 e.printStackTrace();

+ 9 - 10
src/main/java/com/uas/eis/serviceImpl/StockServiceImpl.java

@@ -1,11 +1,9 @@
 package com.uas.eis.serviceImpl;
 
-import com.uas.eis.dao.BaseDao;
-import com.uas.eis.dao.EdiLogDao;
-import com.uas.eis.dao.EdiPostLogDao;
-import com.uas.eis.dao.SqlRowList;
+import com.uas.eis.dao.*;
 import com.uas.eis.entity.EdiLog;
 import com.uas.eis.entity.EdiPostLog;
+import com.uas.eis.entity.EdiSuccessLog;
 import com.uas.eis.service.StockService;
 import com.uas.eis.utils.*;
 import org.apache.commons.collections.map.HashedMap;
@@ -34,7 +32,7 @@ public class StockServiceImpl implements StockService{
     @Autowired
     EdiLogDao ediLogDao;
     @Autowired
-    EdiPostLogDao ediPostLogDao;
+    EdiSuccessLogDao ediSuccessLogDao;
 
     @Override
     public Map<String, Object> postStockToYunding(Integer id) {
@@ -141,14 +139,14 @@ public class StockServiceImpl implements StockService{
     public void execPostProcedure(List<Map<String,Object>> datas,String responseText){
         String code = null;
         String piClass = null;
-        EdiPostLog postHist = null;
+        EdiSuccessLog postSuccessHist = null;
         for(Map<String,Object> data:datas){
             code = String.valueOf(data.get("outer_no"));
             piClass = String.valueOf(data.get("src_order_type"));
-            postHist = null;
+            postSuccessHist = null;
             try {
-                postHist = ediPostLogDao.findByCodeAndPiClass(code,piClass);
-                if(postHist!=null){ //说明之前已经过账成功
+                postSuccessHist = ediSuccessLogDao.findByCodeAndType(code,piClass);
+                if(postSuccessHist!=null){ //说明之前已经过账成功
                     postConfirmToYunding(code,1);
                 }else{ //没有记录,说明没有过账成功
                     String out = baseDao.callProcedure("SP_YUNDING_STOCKPOST",new Object[]{code,piClass});
@@ -156,7 +154,7 @@ public class StockServiceImpl implements StockService{
                         ediLogDao.save(LogUtil.getPostFailLog(code,responseText,out));
                     }else{
                         ediLogDao.save(LogUtil.getPostSuccessLog(code,responseText));
-                        ediPostLogDao.save(LogUtil.getLogToAvoidRepeatPost(code,piClass));  //记录到edi_post_log,防止调用接口失败,下次重复过账
+                        ediSuccessLogDao.save(LogUtil.getLogToAvoidRepeatPost(code,piClass));  //记录到edi_post_log,防止调用接口失败,下次重复过账
                         postConfirmToYunding(code,1);
                     }
                 }
@@ -169,6 +167,7 @@ public class StockServiceImpl implements StockService{
         }
     }
 
+    @Override
     public void postConfirmToYunding(String code,int type){
         String timestamp = String.valueOf(System.currentTimeMillis()/1000);
 

+ 6 - 5
src/main/java/com/uas/eis/utils/LogUtil.java

@@ -4,6 +4,7 @@ import com.uas.eis.dao.EdiLogDao;
 import com.uas.eis.dao.EdiPostLogDao;
 import com.uas.eis.entity.EdiLog;
 import com.uas.eis.entity.EdiPostLog;
+import com.uas.eis.entity.EdiSuccessLog;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.Map;
@@ -14,11 +15,11 @@ import java.util.Map;
  */
 public class LogUtil {
 
-    public static EdiPostLog getLogToAvoidRepeatPost(String code, String piClass){
-        EdiPostLog ediPostLog = new EdiPostLog();
-        ediPostLog.setCode(code);
-        ediPostLog.setPiClass(piClass);
-        return ediPostLog;
+    public static EdiSuccessLog getLogToAvoidRepeatPost(String code, String type){
+        EdiSuccessLog ediSuccessLog = new EdiSuccessLog();
+        ediSuccessLog.setCode(code);
+        ediSuccessLog.setType(type);
+        return ediSuccessLog;
     }
 
     public static EdiLog getPostSuccessLog(String code,String responseText){

+ 2 - 0
src/main/resources/application.yml

@@ -7,6 +7,8 @@ spring:
         url: jdbc:oracle:thin:@scope2015.oicp.net:1521:orcl
         tomcat:
           time-between-eviction-runs-millis: 30000
+          min-evictable-idle-time-millis: 30000
+          test-while-idle: true
     http:
         encoding:
             force: true