|
@@ -1,11 +1,15 @@
|
|
|
package com.uas.erp.schedular.mall.task;
|
|
package com.uas.erp.schedular.mall.task;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
-import com.alibaba.fastjson.JSONArray;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.uas.api.b2c_erp.baisc.service.ComponentService;
|
|
import com.uas.api.b2c_erp.baisc.service.ComponentService;
|
|
|
import com.uas.api.b2c_erp.seller.model.Prod;
|
|
import com.uas.api.b2c_erp.seller.model.Prod;
|
|
|
import com.uas.api.b2c_erp.seller.service.ProdService;
|
|
import com.uas.api.b2c_erp.seller.service.ProdService;
|
|
|
|
|
+import com.uas.erp.schedular.b2b.domain.Customer;
|
|
|
|
|
+import com.uas.erp.schedular.diymall.domain.GetOrdersByPage;
|
|
|
|
|
+import com.uas.erp.schedular.diymall.domain.LoggingOrder;
|
|
|
|
|
+import com.uas.erp.schedular.diymall.domain.Order;
|
|
|
|
|
+import com.uas.erp.schedular.diymall.domain.OrderProduct;
|
|
|
import com.uas.erp.schedular.finance.mq.HttpsClientRequestFactory;
|
|
import com.uas.erp.schedular.finance.mq.HttpsClientRequestFactory;
|
|
|
import com.uas.erp.schedular.mall.constant.StringConstant;
|
|
import com.uas.erp.schedular.mall.constant.StringConstant;
|
|
|
import com.uas.erp.schedular.mall.domain.*;
|
|
import com.uas.erp.schedular.mall.domain.*;
|
|
@@ -20,16 +24,20 @@ import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
import org.springframework.web.util.DefaultUriTemplateHandler;
|
|
import org.springframework.web.util.DefaultUriTemplateHandler;
|
|
|
|
|
|
|
|
|
|
+import javax.transaction.Transactional;
|
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.io.UnsupportedEncodingException;
|
|
|
import java.net.URLEncoder;
|
|
import java.net.URLEncoder;
|
|
|
import java.security.InvalidKeyException;
|
|
import java.security.InvalidKeyException;
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 商城同步物料信息
|
|
* 商城同步物料信息
|
|
@@ -265,7 +273,13 @@ public class ProductTask extends AbstractTask {
|
|
|
|
|
|
|
|
private final static String SECRETKEY = "58177a621f4645398c92e93768002de7";
|
|
private final static String SECRETKEY = "58177a621f4645398c92e93768002de7";
|
|
|
private final static String SECRETUU = "10044412";
|
|
private final static String SECRETUU = "10044412";
|
|
|
- private final static String BASEPATH = "https://mallproductrest.usoftchina.com";
|
|
|
|
|
|
|
+ private final static String BASEPATH_PRODUCT = "https://mallproductrest.usoftchina.com";
|
|
|
|
|
+ private final static String BASEPATH_TRADE = "https://malltraderest.usoftchina.cn";
|
|
|
|
|
+
|
|
|
|
|
+// private final static String SECRETKEY = "c49f7be6a861461ab951e55030055a5c";
|
|
|
|
|
+// private final static String SECRETUU = "50000089";
|
|
|
|
|
+// private final static String BASEPATH_PRODUCT = "https://mallproductrest.uuzcc.cn";
|
|
|
|
|
+// private final static String BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
|
|
|
// private final static String BASEPATH = "http://10.1.80.79:25320";
|
|
// private final static String BASEPATH = "http://10.1.80.79:25320";
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -281,7 +295,7 @@ public class ProductTask extends AbstractTask {
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(stock)) {
|
|
if (!CollectionUtils.isEmpty(stock)) {
|
|
|
// 拿到商城物料总条数
|
|
// 拿到商城物料总条数
|
|
|
- String url = BASEPATH + "/openapi/product/page/get?";
|
|
|
|
|
|
|
+ String url = BASEPATH_PRODUCT + "/openapi/product/page/get?";
|
|
|
Integer pageSize = 10;
|
|
Integer pageSize = 10;
|
|
|
Integer pageNumber = 1;
|
|
Integer pageNumber = 1;
|
|
|
PagingQuery paging = getProductList(url,pageSize,pageNumber);
|
|
PagingQuery paging = getProductList(url,pageSize,pageNumber);
|
|
@@ -331,7 +345,7 @@ public class ProductTask extends AbstractTask {
|
|
|
|
|
|
|
|
|
|
|
|
|
System.out.println(json.toString());
|
|
System.out.println(json.toString());
|
|
|
- String result = restTemp.postForObject(BASEPATH + "/openapi/product/batch/update", requestEntity, String.class);
|
|
|
|
|
|
|
+ String result = restTemp.postForObject(BASEPATH_PRODUCT + "/openapi/product/batch/update", requestEntity, String.class);
|
|
|
JSONObject response = (JSONObject) JSONObject.parse(result);
|
|
JSONObject response = (JSONObject) JSONObject.parse(result);
|
|
|
System.out.println(response);
|
|
System.out.println(response);
|
|
|
}
|
|
}
|
|
@@ -358,4 +372,171 @@ public class ProductTask extends AbstractTask {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 客户在商城店铺对怡海能达下订单,订单信息直接同步至怡海能达系统
|
|
|
|
|
+ * 默认每天2:00触发
|
|
|
|
|
+ */
|
|
|
|
|
+ @TaskMapping(title = "订单同步", cron = "0 0 2 * * ?")
|
|
|
|
|
+ @Transactional
|
|
|
|
|
+ public void getOrdersByPage() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
|
|
+
|
|
|
|
|
+ String url = BASEPATH_TRADE + "/openapi/trade/order/page/get?";
|
|
|
|
|
+ String materialCod = ""; // 物料编号
|
|
|
|
|
+ Long updateTime = new Date().getTime()-24*60*60*1000; // 数据修改时间 时间戳
|
|
|
|
|
+ Integer pageSize = 10; // 每页条数
|
|
|
|
|
+ Integer pageNumber = 1; // 当前页码
|
|
|
|
|
+ String status = "已审核";
|
|
|
|
|
+ String statusCode = "AUDITED";
|
|
|
|
|
+
|
|
|
|
|
+ int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallSaleOrder' and caller = 'mallOrder!YHND'"));
|
|
|
|
|
+ if(0 == data){
|
|
|
|
|
+ updateTime = 0L;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(materialCod != ""){
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 查询出数据总条数
|
|
|
|
|
+ Integer totalCount = gstOrderList(url,materialCod,updateTime,pageSize,pageNumber).getPagingInfo().getTotalCount();
|
|
|
|
|
+
|
|
|
|
|
+ // 按页数拿数据
|
|
|
|
|
+ GetOrdersByPage getOrdersByPage = null;
|
|
|
|
|
+ List<Order> orders = null;
|
|
|
|
|
+ Integer page = totalCount/pageSize;
|
|
|
|
|
+ if(totalCount/pageSize < 1){
|
|
|
|
|
+ page = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ for(int i = 0 ; i < page ; i ++ ){
|
|
|
|
|
+ getOrdersByPage = gstOrderList(url,materialCod,updateTime,pageSize,i+1);
|
|
|
|
|
+ orders = getOrdersByPage.getOrder();
|
|
|
|
|
+
|
|
|
|
|
+ if(StringUtils.isEmpty(orders)) {
|
|
|
|
|
+ continue ;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for(int j = 0 ; j < orders.size() ; j ++){
|
|
|
|
|
+
|
|
|
|
|
+ Order order = orders.get(j);
|
|
|
|
|
+ order.getEnuu();
|
|
|
|
|
+
|
|
|
|
|
+ if (order.getStatus().equals(141095)) {
|
|
|
|
|
+ status = "已结案";
|
|
|
|
|
+ statusCode = "FINISH";
|
|
|
|
|
+ }else {
|
|
|
|
|
+ status = "已审核";
|
|
|
|
|
+ statusCode = "AUDITED";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 取销售id 和销售编号
|
|
|
|
|
+ int saleId = jdbcTemplate.getInt("select sale_seq.nextval from sale");
|
|
|
|
|
+ String code = jdbcTemplate.generateCode("sale",2);
|
|
|
|
|
+
|
|
|
|
|
+ //customer cu_uu cu_name
|
|
|
|
|
+ Customer customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_UU = ? and CU_AUDITSTATUS = '已审核'",
|
|
|
|
|
+ Customer.class, order.getEnuu());
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Object> payment = jdbcTemplate.queryForMap("select PA_CODE,PA_NAME from customer left join payments on CU_PAYMENTID = pa_id where cu_code = 'C18060102'");
|
|
|
|
|
+ Object pa_code = "";
|
|
|
|
|
+ Object pa_name = "";
|
|
|
|
|
+ if(!ObjectUtils.isEmpty(payment)){
|
|
|
|
|
+ pa_code = payment.get("PA_CODE");
|
|
|
|
|
+ pa_name = payment.get("PA_NAME");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ LoggingOrder loggingOrder = new LoggingOrder();
|
|
|
|
|
+
|
|
|
|
|
+ List<OrderProduct> orderProductList = order.getOrderProduct();
|
|
|
|
|
+ List<String> detailList = new ArrayList<>();
|
|
|
|
|
+ int detno = 1;
|
|
|
|
|
+ for(int n = 0, len = orderProductList.size() ; n < len ; n ++){
|
|
|
|
|
+ OrderProduct orderProduct = orderProductList.get(n);
|
|
|
|
|
+
|
|
|
|
|
+ String productSql = "select * from product where pr_code = '" + orderProduct.getMaterialCode() + "'";
|
|
|
|
|
+ com.uas.erp.schedular.publicproduct.domain.Prod product = jdbcTemplate.queryForBean(productSql, com.uas.erp.schedular.publicproduct.domain.Prod.class);
|
|
|
|
|
+ if (!ObjectUtils.isEmpty(product)) {
|
|
|
|
|
+ String DetailSql = "insert into saleDetail( sd_id , sd_said , sd_detno, SD_PRODID , SD_PRODCODE , SD_QTY , SD_PRICE , SD_TAXRATE , SD_DELIVERY) " +
|
|
|
|
|
+ "values(saleDetail_seq.nextval, " + saleId + ", " + (detno++) + "," + product.getPr_id() + ", '" + product.getPr_code() + "', " + orderProduct.getAmount() +", " + orderProduct.getUnitPrice() +", " + "13" +", " + "sysdate + " + orderProduct.getMaxDelivery() + ")";
|
|
|
|
|
+ detailList.add(DetailSql);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ boolean exists = !ObjectUtils.isEmpty(customer);
|
|
|
|
|
+
|
|
|
|
|
+ if(!exists){
|
|
|
|
|
+ customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_NAME = ? and CU_AUDITSTATUS = '已审核'",
|
|
|
|
|
+ Customer.class, order.getBuyerEnName());
|
|
|
|
|
+ if(!ObjectUtils.isEmpty(customer)){
|
|
|
|
|
+ exists=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(exists){
|
|
|
|
|
+ String sql = "insert into SALE (SA_ID , SA_CODE , SA_DATE , SA_KIND , SA_CURRENCY , SA_RATE , SA_CUSTCODE , SA_CUSTNAME , sa_shcustcode, sa_shcustname, SA_APCUSTCODE , SA_APCUSTNAME ," +
|
|
|
|
|
+ "SA_PAYMENTSCODE , SA_PAYMENTS , SA_SELLER , SA_DEPARTMENTCODE , SA_DEPARTMENTNAME , SA_TOPLACE , SA_POCODE , SA_STATUS , SA_STATUSCODE, SA_RECORDER , SA_RECORDDATE ," +
|
|
|
|
|
+ "SA_AUDITMAN , SA_AUDITDATE , SA_UPDATEMAN , SA_UPDATEDATE , SA_TOTAL, sa_need1 , sa_need2) values ('" + saleId + "','"+ code + "',sysdate,'商城订单','RMB','1','" + customer.getCu_code() +"','" + customer.getCu_name() +"', '" + customer.getCu_code() + "','" + customer.getCu_name() + "', " +
|
|
|
|
|
+ "'C18060102','深圳优软商城科技有限公司','" + pa_code +"','" + pa_name +"','周连军','1202', " +
|
|
|
|
|
+ "'研发二部','"+ order.getOrderDeliveryAddr().getDeliveryAddress() + "','" + order.getCode() + "','" + status + "','" + statusCode + "','ADMIN',sysdate,'ADMIN',sysdate, " +
|
|
|
|
|
+ "'ADMIN',sysdate,0,'" + order.getBuyerName() +"','" + order.getBuyerMobile() + "')";
|
|
|
|
|
+ int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
|
|
|
|
|
+ if (count > 0) {
|
|
|
|
|
+ jdbcTemplate.execute("UPDATE SALE SET SA_STATUS = ?, SA_STATUSCODE = ? WHERE SA_POCODE = ?", status, statusCode, order.getCode());
|
|
|
|
|
+ }else {
|
|
|
|
|
+ if (detailList.size() > 0) {
|
|
|
|
|
+ jdbcTemplate.execute(sql);
|
|
|
|
|
+ jdbcTemplate.batchExecute(detailList);
|
|
|
|
|
+ jdbcTemplate.execute("UPDATE SALE SET SA_TOTAL = (select SUM(SD_PRICE*SD_QTY) FROM SALEDETAIL where sd_said = ?) WHERE SA_ID = ?", saleId, saleId);
|
|
|
|
|
+ if (0 == data) {
|
|
|
|
|
+ jdbcTemplate.execute("UPDATE CONFIGS SET data = 1 WHERE code = 'mallSaleOrder' and caller = 'mallOrder!YHND'");
|
|
|
|
|
+ }
|
|
|
|
|
+ loggingOrder.setStatus("成功");
|
|
|
|
|
+ loggingOrder.setOrderNumber(code);
|
|
|
|
|
+ loggingOrder.setRemark("销售订单生成成功");
|
|
|
|
|
+ String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
|
|
+ "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '" + loggingOrder.getStatus() + "', sysdate,'" + loggingOrder.getOrderNumber() + "', '" + loggingOrder.getRemark() + "')";
|
|
|
|
|
+ jdbcTemplate.execute(logOrderSql);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ loggingOrder.setStatus("失败");
|
|
|
|
|
+ loggingOrder.setOrderNumber("");
|
|
|
|
|
+ loggingOrder.setRemark("未找到匹配的物料资料");
|
|
|
|
|
+ String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
|
|
+ "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '" + loggingOrder.getStatus() + "', sysdate,'" + loggingOrder.getOrderNumber() + "', '" + loggingOrder.getRemark() + "')";
|
|
|
|
|
+ jdbcTemplate.execute(logOrderSql);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }else {
|
|
|
|
|
+ loggingOrder.setStatus("失败");
|
|
|
|
|
+ loggingOrder.setOrderNumber("");
|
|
|
|
|
+ loggingOrder.setRemark("客户资料不存在或者状态不等于已审核");
|
|
|
|
|
+ String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
|
|
+ "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '" + loggingOrder.getStatus() + "', sysdate,'" + loggingOrder.getOrderNumber() + "', '" + loggingOrder.getRemark() + "')";
|
|
|
|
|
+ jdbcTemplate.execute(logOrderSql);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private GetOrdersByPage gstOrderList(String requestURL, String materialCode, Long updateTime, Integer pageSize, Integer pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
|
|
+ String paramStr = "secretId=" + SECRETUU + "&"+ "materialCode=" + materialCode + "&" + "updateTime=" + updateTime + "&" + "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
|
|
|
|
|
+ //进行签名
|
|
|
|
|
+ String signatureValue = OpenApiSignUtil.sign(paramStr,SECRETKEY);
|
|
|
|
|
+ signatureValue = URLEncoder.encode(signatureValue, "UTF-8");
|
|
|
|
|
+ String signatureKV = OpenApiSignUtil.SIGNATURE_KEY + "=" + signatureValue;
|
|
|
|
|
+ paramStr += "&" + signatureKV;
|
|
|
|
|
+ requestURL = requestURL + paramStr;
|
|
|
|
|
+
|
|
|
|
|
+ DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
|
|
|
|
|
+ uriTemplateHandler.setStrictEncoding(true);
|
|
|
|
|
+
|
|
|
|
|
+ RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
|
|
|
|
|
+ restTemp.setUriTemplateHandler(uriTemplateHandler);
|
|
|
|
|
+ String result = restTemp.getForObject(requestURL, String.class);
|
|
|
|
|
+ //System.out.println(result);
|
|
|
|
|
+ GetOrdersByPage getOrdersByPage = JSON.parseObject(result, GetOrdersByPage.class);
|
|
|
|
|
+ return getOrdersByPage;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|