Переглянути джерело

代采订单存储方法更新

hejq 8 роки тому
батько
коміт
5b2edee7ca

+ 1 - 1
src/main/java/com/uas/erp/schedular/b2b/task/AbstractTask.java

@@ -312,7 +312,7 @@ public class AbstractTask {
         Integer mid = jdbcTemplate.getInt("select max(mm_id) from MESSAGEMODEL left join MESSAGEROLE on mm_id=mr_mmid where MR_ISUSED=-1 AND MM_ISUSED=-1 and mm_caller=? and MM_OPERATE='b2b' AND MM_ACTION=?",
                 caller, type);
         if (null != mid) {
-            jdbcTemplate.execute("{call SP_CREATEINFO(?,'ADMIN',?,?)}",
+            jdbcTemplate.callForString("{call SP_CREATEINFO(?,'ADMIN',?,?,?)}",
                     mid, sourceIds, DateUtil.parseDateToOracleString(Constant.YMD_HMS, new Date()));
         }
     }

+ 24 - 0
src/main/java/com/uas/erp/schedular/database/Executable.java

@@ -15,6 +15,8 @@ public class Executable {
     private Object[] args;
     // 是否查询
     private boolean isQuery;
+    // 是否call procedure
+    private boolean isCall;
     // 返回字段
     private String[] returnFields;
 
@@ -58,6 +60,14 @@ public class Executable {
         this.returnFields = returnFields;
     }
 
+    public boolean isCall() {
+        return isCall;
+    }
+
+    public void setCall(boolean call) {
+        isCall = call;
+    }
+
     public Executable() {
         this.qualifier = ContextHolder.getMaster().getMa_user().toUpperCase();
     }
@@ -76,6 +86,20 @@ public class Executable {
         return executable;
     }
 
+    public static Executable call(String exec, Object[] args) {
+        Executable executable = new Executable();
+        executable.setCall(true);
+        executable.setArgs(args);
+        executable.setExecs(new String[]{ exec });
+        return executable;
+    }
+
+    public static Executable call(String exec, String[] returnFields, Object[] args) {
+        Executable executable = call(exec, args);
+        executable.setReturnFields(returnFields);
+        return executable;
+    }
+
     public static Executable execute(String exec, Object[] args) {
         Executable executable = new Executable();
         executable.setArgs(args);

+ 36 - 1
src/main/java/com/uas/erp/schedular/database/RestJdbcTemplate.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.uas.erp.schedular.service.SettingService;
 import com.uas.erp.schedular.util.BeanUtil;
+import com.uas.erp.schedular.util.CollectionUtil;
 import com.uas.erp.schedular.web.ResultListWrap;
 import com.uas.erp.schedular.web.ResultWrap;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -209,7 +210,7 @@ public class RestJdbcTemplate {
      * @return
      */
     public String generateCode(String sequenceName, int type) {
-        return getString("{call Sp_GetMaxNumber(?,?)}", sequenceName, type);
+        return callForString("{call Sp_GetMaxNumber(?,?,?)}", sequenceName, type);
     }
 
     /**
@@ -242,4 +243,38 @@ public class RestJdbcTemplate {
         return null;
     }
 
+    /**
+     * call procedure
+     * @param exec call语句
+     * @param args in参数
+     * @param outParams out参数
+     * @return
+     */
+    public Map<String, Object> callForMap(String exec, Object[] args, String[] outParams){
+        HttpEntity request = new HttpEntity<Executable>(Executable.call(exec, outParams, args));
+        ParameterizedTypeReference<ResultWrap<List<Map<String, Object>>>> responseType = new ParameterizedTypeReference<ResultWrap<List<Map<String, Object>>>>(){};
+        ResponseEntity<ResultWrap<List<Map<String, Object>>>> response = restTemplate.exchange(getUrl() + "/v1/exec", HttpMethod.POST, request, responseType);
+        ResultWrap<List<Map<String, Object>>> result = response.getBody();
+        if (result.isSuccess()) {
+            List<Map<String, Object>> list = result.getContent();
+            if (!CollectionUtils.isEmpty(list)) {
+                return list.get(0);
+            }
+            return null;
+        }
+        throw new RuntimeException(result.getMessage());
+    }
+
+    /**
+     * call procedure and return string
+     * @param exec
+     * @param args
+     * @return
+     */
+    public String callForString(String exec, Object... args) {
+        Map<String, Object> data = callForMap(exec, args, new String[]{"v_return"});
+        Object code = null == data ? null : data.get("v_return");
+        return null == code ? null : code.toString();
+    }
+
 }

+ 1 - 1
src/main/java/com/uas/erp/schedular/service/MasterService.java

@@ -28,7 +28,7 @@ public class MasterService {
 
     public List<Master> getMasters() {
         try {
-            String resultStr = restTemplate.getForObject(getUrl() + "/v1/master/list", String.class);
+            String resultStr = restTemplate.getForObject(getUrl() + "/v1/master/list?cloudEnabled=true", String.class);
             ResultListWrap<Master> result = JSON.parseObject(resultStr, new TypeReference<ResultListWrap<Master>>(Master.class) {
             });
             if (result.isSuccess()) {

+ 5 - 3
src/main/resources/database/template/deputyOrder.xml

@@ -13,8 +13,8 @@
             <block>
                 begin
                     select * into v_customer from customer where cu_uu=${order.enuu};
-                    exception when no_data_found then
-                    RAISE_APPLICATION_ERROR(-20010, '客户['||${order.enuu}||']不存在');
+                exception when no_data_found then
+                RAISE_APPLICATION_ERROR(-20010, '客户['||${order.enuu}||']不存在');
                 end;
                 begin
                     select * into v_employee from employee where em_code=v_customer.cu_sellercode;
@@ -83,11 +83,13 @@
                     v_sale.sa_a13_user := ${order.riskmethod};
                     v_sale.sa_a12_user := ${order.taxpaymentmethod};
                     v_sale.sa_a2_user := ${order.enfax};
+                    v_sale.sa_a25_user := ${order.paycomaddress};
+                    v_sale.sa_a10_user_2 := ${order.actualpaydate};
                     insert into sale values v_sale;
             </block>
             <iterator loop="order.deputyOrderItems" var="item">
                 v_sd_id := saledetail_seq.nextval;
-                v_pr_code := 'PROD'||to_char(sysdate,'yymmdd')||v_sa_id;
+                v_pr_code := 'PROD'||to_char(sysdate,'yymmdd')||v_sd_id;
 
                 insert into product (pr_id, pr_detail, pr_spec, pr_speccs, pr_unit, pr_recordman, pr_docdate, pr_status, pr_statuscode, pr_remark,
                 pr_code, pr_orispeccode, pr_brand) values (product_seq.nextval, ${item.prodname}, ${item.prodcode}, ${item.prodspec},

+ 4 - 1
src/test/java/com/uas/erp/test/ConnectToFinanceTest.java

@@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.uas.api.crypto.util.FlexJsonUtils;
 import com.uas.erp.schedular.UasSchedulingApplication;
 import com.uas.erp.schedular.entity.Master;
-import com.uas.erp.schedular.finance.task.AbstractTask;
 import com.uas.erp.schedular.financeservice.domain.CustInfo;
 import com.uas.erp.schedular.financeservice.domain.CustomerInfo;
+import com.uas.erp.schedular.financeservice.task.AbstractTask;
+import com.uas.erp.schedular.task.support.Method;
+import com.uas.erp.schedular.task.support.TaskMapping;
 import com.uas.erp.schedular.util.ContextHolder;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -28,6 +30,7 @@ import java.util.List;
 public class ConnectToFinanceTest extends AbstractTask {
 
     @Test
+    @TaskMapping(title = "从金融平台获取数据再连接ERP的测试", fixedDelay = 60000, method = Method.DOWNLOAD)
     public void testConnect() {
         Master master = new Master();
         master.setMa_user("UAS");

+ 9 - 9
src/test/java/com/uas/erp/test/RestJdbcTest.java

@@ -10,19 +10,19 @@ import java.sql.SQLException;
 
 /**
  * Created by Pro1 on 2017/7/28.
- */
+                */
 //@RunWith(SpringJUnit4ClassRunner.class)
 //@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = UasSchedulingApplication.class)
-public class RestJdbcTest {
+        public class RestJdbcTest {
 
-    @Autowired
-    private RestJdbcTemplate restJdbcTemplate;
+            @Autowired
+            private RestJdbcTemplate restJdbcTemplate;
 
-//    @Test
-    public void testQuery() throws SQLException{
-        Master master = new Master();
-        master.setMa_user("UAS");
-        ContextHolder.setMaster(master);
+            //    @Test
+            public void testQuery() throws SQLException{
+                Master master = new Master();
+                master.setMa_user("UAS");
+                ContextHolder.setMaster(master);
 
         Form form = restJdbcTemplate.queryForBean("select * from form where fo_caller=?", Form.class, "Purchase");
         System.out.println(JSON.toJSONString(form));

+ 5 - 5
src/test/java/com/uas/erp/test/XmlTest.java

@@ -17,14 +17,14 @@ import java.util.*;
  */
 public class XmlTest {
 
-//    @Test
+    @Test
     public void parseXml() throws Exception{
-        String xmlStr = FileCopyUtils.copyToString(new FileReader("C:\\Users\\Pro1\\MicroServiceGit\\uas2.0\\uas-schedular\\src\\main\\resources\\database\\template\\deputyOrder.xml"));
+        String xmlStr = FileCopyUtils.copyToString(new FileReader("E:\\file\\test\\deputyOrder.xml"));
         Map<String, Object> model = new HashMap<>();
-        model.put("orders", getOrders(10));
+        model.put("orders", getOrders(2));
         long start = System.currentTimeMillis();
         String str = SqlTemplate.fromXml(xmlStr, model);
-        StreamUtils.copy(str, Charset.defaultCharset(), new FileOutputStream("C:\\Users\\Pro1\\MicroServiceGit\\uas2.0\\uas-schedular\\src\\test\\deputyOrder.sql"));
+        StreamUtils.copy(str, Charset.defaultCharset(), new FileOutputStream("E:\\file\\test\\deputyOrder.sql"));
         System.out.println("used: " + (System.currentTimeMillis() - start));
     }
 
@@ -42,7 +42,7 @@ public class XmlTest {
             order.setMadealcode("M000" + i);
             order.setMadealdate(new Date());
             List<DeputyOrderItem> items = new ArrayList<>();
-            for (int j = 0; j < 10; j++) {
+            for (int j = 0; j < 2; j++) {
                 DeputyOrderItem item = new DeputyOrderItem();
                 item.setProdname("测试物料" + i + "-" + j);
                 item.setProdcode("P-" + i + "-" + j);