Przeglądaj źródła

Merge remote-tracking branch 'origin/yitoa_EDI_REST' into yitoa_EDI_REST

# Conflicts:
#	src/main/resources/application-dev.yml
zxl 1 miesiąc temu
rodzic
commit
3d980ea691

+ 1 - 0
src/main/java/com/uas/eis/config/SynaConfig.java

@@ -15,4 +15,5 @@ public class SynaConfig {
     private String url_867;
     private String bill_to_address;
     private String BTEDILocationCode;
+    private boolean isProd;
 }

+ 20 - 16
src/main/java/com/uas/eis/core/X12Converter.java

@@ -28,7 +28,7 @@ public class X12Converter {
         writer.setControlSchema(controlSchema);
         return  writer;
     }
-    private void startSegment(EDIStreamWriter writer,String ediId) throws EDIStreamException {
+    private void startSegment(EDIStreamWriter writer,String ediId,SynaConfig synaConfig) throws EDIStreamException {
         writer.writeStartSegment("ISA")
                 .writeElement("00")
                 .writeElement("          ")
@@ -39,14 +39,17 @@ public class X12Converter {
                 .writeElement("ZZ")
                 .writeElement("SYNAPTICST     ")
                 .writeElement(new SimpleDateFormat("yyMMdd").format(new Date())) // GS04 (日期)
-                .writeElement(new SimpleDateFormat("HHmm").format(new Date()))     // GS05 (时间)
+                .writeElement(new SimpleDateFormat("HHmm").format(new Date()))   // GS05 (时间)
                 .writeElement("U")
                 .writeElement(X12_VERSION)
                 .writeElement(ediId)
-                .writeElement("0")
-                .writeElement("T")//T,表示测试数据;P,表示生产数据,这里是T
-                .writeElement("^")
-                .writeEndSegment();
+                .writeElement("0");
+        if(synaConfig.isProd()){
+            writer .writeElement("P");//T,表示测试数据;P,表示生产数据,这里是T
+        }else{
+            writer .writeElement("T");//T,表示测试数据;P,表示生产数据,这里是T
+        }
+        writer.writeElement("^").writeEndSegment();
     }
     private void addGS(EDIStreamWriter writer,String type,String id,String rule) throws EDIStreamException {
         writer.writeStartSegment("GS").writeElement(type)
@@ -65,7 +68,7 @@ public class X12Converter {
         //开始
         writer.startInterchange();
 
-        startSegment(writer,ediId);
+        startSegment(writer,ediId,synaConfig);
         //PO
         addGS(writer,"PO",String.valueOf(po.getPu_id()),"T");
 
@@ -160,7 +163,7 @@ public class X12Converter {
         EDIStreamWriter writer = newEDIWriter(stream);
 
         writer.startInterchange();
-        startSegment(writer,ediId);
+        startSegment(writer,ediId,synaConfig);
         addGS(writer,"PC",String.valueOf(pc.getPc_id()),"X");
 
         int txCount = 1;
@@ -258,7 +261,7 @@ public class X12Converter {
         EDIStreamWriter writer = newEDIWriter(stream);
         writer.startInterchange();
         //开始
-        startSegment(writer,ediId);
+        startSegment(writer,ediId,synaConfig);
         addGS(writer,"PT",String.valueOf(pos.getPs_id()),"X");
 
         int txCount = 1;
@@ -348,10 +351,10 @@ public class X12Converter {
             txCount++;
             /*非必填 Actual end customer country which is sold by disti , please provide the TERRITORY_SHORT_NAME and TERRITORY_CODE as following mapping sheet.*/
             writer.writeStartSegment("N4")
-                    .writeElement(pd.getPd_endCustomerCountryName())//? Ex:China
+                    .writeElement(pd.getPd_endCustomerCountryName())//Ex:China
                     .writeElement("")
                     .writeElement("")
-                    .writeElement(pd.getPd_endCustomerCountry())//? Ex:CN
+                    .writeElement(pd.getPd_endCustomerCountry())//Ex:CN
                     .writeEndSegment();
             txCount++;
 
@@ -418,12 +421,13 @@ public class X12Converter {
                     .writeEndSegment();
             txCount++;
 
+            writer.writeStartSegment("CUR")
+                    .writeElement("BY")
+                    .writeElement(pos.getPs_currency())
+                    .writeEndSegment();
+            txCount++;
+
         }
-        writer.writeStartSegment("CUR")
-                .writeElement("BY")
-                .writeElement(pos.getPs_currency())
-                .writeEndSegment();
-        txCount++;
         //结束
         // 订单小计 (CTT)
         writer.writeStartSegment("CTT")

+ 23 - 17
src/main/java/com/uas/eis/service/Impl/SynaServiceImpl.java

@@ -21,23 +21,17 @@ import java.io.IOException;
 import java.util.*;
 
 /**
- * @author koul
- * @email koul@usoftchina.com
- * @date 2021-12-06 18:27
+ * @author Dingyl
  */
 @Service
 public class SynaServiceImpl implements SynaService {
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
-    private static Map<String, String> tokenConfig = TokenProperties.getAllProperty();
 
     @Autowired
     private BaseDao baseDao;
 
     @Autowired
     private SynaConfig synaConfig;
-    @Autowired
-    private CommonService commonService;
-
 
     @Override
     public Map<String, Object> sendPurchaseToSyna(String master, Integer id) throws EDISchemaException, EDIStreamException, IOException {
@@ -46,7 +40,7 @@ public class SynaServiceImpl implements SynaService {
         logger.info("sendPurchaseToSyna-beg:{}:{}",master,id);
         Purchase po=getPO(id);
         if(po!=null){
-            String ediId = getEDIId();
+            String ediId = getEDIId(master);
             System.out.println(ediId);
             X12Converter converter=new X12Converter();
             String data=converter.convertToX12(po,ediId,synaConfig);
@@ -54,7 +48,7 @@ public class SynaServiceImpl implements SynaService {
             System.out.println( data);
             String url= synaConfig.getUrl_850();
             logger.info("sendPurchaseToSyna:po:{} X12-data:{}",po.getPu_code(),data);
-            modelMap=toSynaptics(url,data);
+            modelMap=toSynaptics(url,data,"850",id);
             return modelMap;
         }else{
             logger.info("sendPurchaseToSyna:采购单不存在:id={}",id);
@@ -68,7 +62,7 @@ public class SynaServiceImpl implements SynaService {
         logger.info("sendPurchaseChangeToSyna-beg:{}:{}",master,id);
         PurchaseChange pc=getPC(id);
         if(pc!=null){
-            String ediId = getEDIId();
+            String ediId = getEDIId(master);
             System.out.println(ediId);
             X12Converter converter=new X12Converter();
             String data=converter.convertToX12(pc,ediId,synaConfig);
@@ -76,7 +70,7 @@ public class SynaServiceImpl implements SynaService {
             System.out.println( data);
             String url= synaConfig.getUrl_860();
             logger.info("sendPurchaseChangeToSyna:po:{} X12-data:{}",pc.getPc_code(),data);
-            modelMap=toSynaptics(url,data);
+            modelMap=toSynaptics(url,data,"860",id);
             return modelMap;
         }else{
             logger.info("sendPurchaseChangeToSyna:采购变更单不存在:id={}",id);
@@ -91,7 +85,7 @@ public class SynaServiceImpl implements SynaService {
         logger.info("sendPurchaseChangeToSyna-beg:{}:{}",master,id);
         POS pos=getPOS(id);
         if(pos!=null){
-            String ediId = getEDIId();
+            String ediId = getEDIId(master);
             System.out.println(ediId);
             X12Converter converter=new X12Converter();
             String data=converter.convertToX12(pos,ediId,synaConfig);
@@ -99,17 +93,21 @@ public class SynaServiceImpl implements SynaService {
             System.out.println( data);
             String url= synaConfig.getUrl_867();
             logger.info("sendPOSToSyna:po:{} X12-data:{}",pos.getPs_code(),data);
-            modelMap=toSynaptics(url,data);
+            modelMap=toSynaptics(url,data,"867",id);
             return modelMap;
         }else{
             logger.info("sendPurchaseChangeToSyna:POS单据不存在:id={}",id);
         }
         return Collections.emptyMap();
     }
+
     private POS getPOS(Integer id){
         POS pos =baseDao.getJdbcTemplate().queryForObject("select * from POSREPORT_SYNA where ps_id=?", new BeanPropertyRowMapper<POS>(POS.class), id);
-        List<POSDetail> detail = baseDao.getJdbcTemplate().query("select * FROM posreport_syna_det WHERE PD_PsID=? ORDER BY PD_DETNO",
+       List<POSDetail> detail = baseDao.getJdbcTemplate().query("select * FROM posreport_syna_det WHERE PD_PsID=? ORDER BY PD_DETNO",
                 new BeanPropertyRowMapper<POSDetail>(POSDetail.class),  id);
+        /*测试用 否则数据太多 不好核对
+        List<POSDetail> detail = baseDao.getJdbcTemplate().query("select * FROM (select * from posreport_syna_det WHERE PD_PsID=? ORDER BY PD_DETNO) where rownum<5",
+                new BeanPropertyRowMapper<POSDetail>(POSDetail.class),  id);*/
         pos.setItems(detail);
         return pos;
     }
@@ -150,12 +148,12 @@ public class SynaServiceImpl implements SynaService {
         po.setItems(detail);
         return po;
     }
-    private String getEDIId(){
+    private String getEDIId(String master){
         String ediId = baseDao.getJdbcTemplate()
-                .queryForObject("select lpad(N_HUASL_T.EDI_SYNAPTICS_SEQ.nextval,9,'0') from dual", String.class);
+                .queryForObject("select lpad("+master+".EDI_SYNAPTICS_SEQ.nextval,9,'0') from dual", String.class);
         return ediId;
     }
-    private Map<String, Object> toSynaptics(String url,String data) throws IOException {
+    private Map<String, Object> toSynaptics(String url,String data,String type,int id) throws IOException {
         logger.info("请求开始:url:{}",url);
         Map<String, Object> map = new HashMap<String, Object>();
         String username=synaConfig.getUsername();
@@ -178,6 +176,14 @@ public class SynaServiceImpl implements SynaService {
         System.out.println(response.headers().get("x-oracle-ics-instance-id"));
         map.put("code",response.code());
         map.put("x-oracle-ics-instance-id",response.headers().get("x-oracle-ics-instance-id"));
+        //记录日志
+        String flagStr=response.headers().get("x-oracle-ics-instance-id")==null?"":response.headers().get("x-oracle-ics-instance-id");
+        logSyna(type,id,flagStr,String.valueOf(response.code()));
         return map;
     }
+
+    private void logSyna(String type,int id,String flagStr,String responseCode){
+        baseDao.execute("insert into edi_syna_log(id_,type_,pageid,date_,flag_,responsecode_)" +
+                " values(edi_syna_log_seq.nextval,'"+type+"',"+id+",sysdate,'"+flagStr+"','"+responseCode+"')");
+    }
 }

+ 3 - 8
src/main/resources/application-dev.yml

@@ -4,7 +4,7 @@ spring:
         driverClassName: oracle.jdbc.OracleDriver
         username: YITOA_DATACENTER
         password: select!#%*(
-        url: jdbc:oracle:thin:@10.1.81.208:11756:orcl
+        url: jdbc:oracle:thin:@10.10.10.103:1521:orcl
         initialSize: 1
         maxActive: 3
         maxWait: 30000
@@ -23,7 +23,7 @@ server:
         uri_encoding: UTF-8
     context-path:
         /eis_edi
-    port: 8186
+    port: 8187
 
 action:
     api_action: /EIS/api,/EIS/mes,/EIS/erp
@@ -36,9 +36,4 @@ synaptics:
     url_867 : https://syn-oic-poc-axpwqir9ej7o-px.integration.us-phoenix-1.ocp.oraclecloud.com/ic/api/integration/v1/flows/rest/WORLDSHINE867JOA3HJ_REST_RECEIVE/1.0
     bill_to_address : ROOM 2708, 27/F, APEC PLAZA, 49 HOI YUEN ROAD KWUN TONG, KOWLOON
     BTEDILocationCode : WTECH-3925
-
-api:
-    url:
-        geer:
-            asn: https://b2bt.goertek.com:7443/restv2/vendorResource/receiveASN
-
+    isProd: false

+ 3 - 2
src/main/resources/application-prod.yml

@@ -23,7 +23,7 @@ server:
         uri_encoding: UTF-8
     context-path:
         /eis_edi
-    port: 8184
+    port: 8187
 
 action:
     api_action: /EIS/api,/EIS/mes,/EIS/erp
@@ -36,4 +36,5 @@ synaptics:
     url_860 : https://syn-oic-poc-axpwqir9ej7o-px.integration.us-phoenix-1.ocp.oraclecloud.com/ic/api/integration/v1/flows/rest/WORLDSHINE860EJ364H_REST_RECEIVE/1.0
     url_867 : https://syn-oic-poc-axpwqir9ej7o-px.integration.us-phoenix-1.ocp.oraclecloud.com/ic/api/integration/v1/flows/rest/WORLDSHINE867JOA3HJ_REST_RECEIVE/1.0
     bill_to_address : ROOM 2708, 27/F, APEC PLAZA, 49 HOI YUEN ROAD KWUN TONG, KOWLOON
-    BTEDILocationCode : WTECH-3925
+    BTEDILocationCode : WTECH-3925
+    isProd: true