فهرست منبع

订单功能调整

chenw 6 سال پیش
والد
کامیت
aa32e3a9b0

+ 9 - 0
src/main/java/com/uas/erp/schedular/diymall/domain/OrderProduct.java

@@ -39,6 +39,15 @@ public class OrderProduct {
     String materialCode; // uas物料编号
 
     String invoiceModel; // 开票型号
+    String invoiceName; //开票名称
+
+    public String getInvoiceName() {
+        return invoiceName;
+    }
+
+    public void setInvoiceName(String invoiceName) {
+        this.invoiceName = invoiceName;
+    }
 
     public String getInvoiceModel() {
         return invoiceModel;

+ 30 - 0
src/main/java/com/uas/erp/schedular/mall/domain/DeliverError.java

@@ -0,0 +1,30 @@
+package com.uas.erp.schedular.mall.domain;
+
+import java.io.Serializable;
+
+/**
+ * @Author chenwei
+ * @Date 2019-06-04
+ */
+public class DeliverError implements Serializable {
+
+    private String orderCode;
+
+    private String errorMsg;
+
+    public String getOrderCode() {
+        return orderCode;
+    }
+
+    public void setOrderCode(String orderCode) {
+        this.orderCode = orderCode;
+    }
+
+    public String getErrorMsg() {
+        return errorMsg;
+    }
+
+    public void setErrorMsg(String errorMsg) {
+        this.errorMsg = errorMsg;
+    }
+}

+ 10 - 0
src/main/java/com/uas/erp/schedular/mall/domain/DeliverResp.java

@@ -3,6 +3,7 @@ package com.uas.erp.schedular.mall.domain;
 import com.uas.erp.schedular.finance.domain.ERPRespHeader;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @Author chenwei
@@ -11,6 +12,7 @@ import java.io.Serializable;
 public class DeliverResp implements Serializable {
 
     private ERPRespHeader respHeader;
+    private List<DeliverError> deliverError;
 
     public ERPRespHeader getRespHeader() {
         return respHeader;
@@ -19,4 +21,12 @@ public class DeliverResp implements Serializable {
     public void setRespHeader(ERPRespHeader respHeader) {
         this.respHeader = respHeader;
     }
+
+    public List<DeliverError> getDeliverError() {
+        return deliverError;
+    }
+
+    public void setDeliverError(List<DeliverError> deliverError) {
+        this.deliverError = deliverError;
+    }
 }

+ 9 - 0
src/main/java/com/uas/erp/schedular/mall/domain/Stock.java

@@ -16,8 +16,17 @@ public class Stock {
     Integer mpq; // 最小包装数量
     Integer moq; // 最小起订量
     String invoiceModel; // 开票型号
+    String invoiceName; // 开票名称
     double price; // 销售标准价
 
+    public String getInvoiceName() {
+        return invoiceName;
+    }
+
+    public void setInvoiceName(String invoiceName) {
+        this.invoiceName = invoiceName;
+    }
+
     public Integer getMpq() {
         return mpq;
     }

+ 15 - 4
src/main/java/com/uas/erp/schedular/mall/task/OrderTask.java

@@ -11,6 +11,7 @@ import com.uas.erp.schedular.diymall.domain.OrderProduct;
 import com.uas.erp.schedular.diymall.domain.OrdersInfo;
 import com.uas.erp.schedular.entity.Master;
 import com.uas.erp.schedular.finance.mq.HttpsClientRequestFactory;
+import com.uas.erp.schedular.mall.domain.DeliverError;
 import com.uas.erp.schedular.mall.domain.DeliverResp;
 import com.uas.erp.schedular.mall.domain.OrderDeliver;
 import com.uas.erp.schedular.mall.domain.PagingInfo;
@@ -57,7 +58,7 @@ public class OrderTask extends AbstractTask {
     public void uploadPoststatus() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
         Master master = ContextHolder.getMaster();
         //获取需要上传的数据
-        List<OrderDeliver> orderDeliverList = jdbcTemplate.queryForBeanList("SELECT distinct SA_POCODE as orderCode,PI_LOGISTICSCODE AS expressCode,PI_TRANSPORT AS expressInc FROM SALE LEFT JOIN PRODIODETAIL ON PD_ORDERCODE = SA_CODE LEFT JOIN PRODINOUT ON PI_ID = PD_PIID WHERE NVL(SA_SENDPOSTSTATUS,' ') = '待上传' AND PI_CLASS = '出货单' AND SA_KIND = '商城订单'", OrderDeliver.class);
+        List<OrderDeliver> orderDeliverList = jdbcTemplate.queryForBeanList("SELECT distinct SA_POCODE as orderCode,TRIM(',' FROM SA_EXPRESSCODE_USER) AS expressCode,TRIM(',' FROM SA_EXPRESSINC_USER) AS expressInc FROM SALE WHERE NVL(SA_SENDPOSTSTATUS,' ') = '待上传' AND SA_KIND = '商城订单'", OrderDeliver.class);
         if (!CollectionUtils.isEmpty(orderDeliverList)) {
             //发送同步数据
             JSONObject json = new JSONObject();
@@ -82,6 +83,16 @@ public class OrderTask extends AbstractTask {
                 }
                 String pocodes = sb.substring(0, sb.length() - 1);
                 jdbcTemplate.execute("UPDATE SALE SET SA_SENDPOSTSTATUS = '已上传' WHERE SA_KIND = '商城订单' AND SA_POCODE IN (" + pocodes +")");
+            }else if (deliverResp.getRespHeader().getCode() == 120) {
+                List<DeliverError> deliverErrorList = deliverResp.getDeliverError();
+                StringBuilder sb = new StringBuilder();
+                for (DeliverError deliverError : deliverErrorList) {
+                    jdbcTemplate.execute("INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) VALUES(LOGORDER_SEQ.NEXTVAL, "
+                            + "'"+deliverError.getOrderCode()+"','失败',SYSDATE,NULL,'出货单过账状态同步失败,原因:"+deliverError.getErrorMsg()+"')");
+                    sb.append("'" + deliverError.getOrderCode() + "',");
+                }
+                String pocodes = sb.substring(0, sb.length() - 1);
+                jdbcTemplate.execute("UPDATE SALE SET SA_SENDPOSTSTATUS = '已上传' WHERE SA_KIND = '商城订单' AND SA_POCODE NOT IN (" + pocodes +")");
             }
         }
     }
@@ -367,9 +378,9 @@ public class OrderTask extends AbstractTask {
                 String code = "YS" + product.getMaterialCode();
                 int id = jdbcTemplate.getInt("SELECT PRODUCT_SEQ.NEXTVAL FROM DUAL");
                 //生成物料资料
-                String insertProductSql = "INSERT INTO PRODUCT(PR_ID,PR_CODE,PR_DETAIL,PR_SPEC,PR_UNIT,PR_ORISPECCODE,PR_BRAND,pr_remark_sale,pr_manutype,pr_dhzc,PR_SUPPLYTYPE,PR_ZXBZS,PR_ZXDHL,PR_ACCEPTMETHOD,"
-                                        + "PR_RECORDMAN,PR_DOCDATE,PR_AUDITMAN,PR_AUDITDATE,PR_STATUS,PR_STATUSCODE) VALUES(?,?,?,?,?,?,?,?,'PURCHASE','MRP','PUSH',?,?,'不检验','ADMIN',SYSDATE,'ADMIN',SYSDATE,'已审核','AUDITED')";
-                jdbcTemplate.execute(insertProductSql, id, code, product.getModel(), product.getSpec(), product.getUnit(), product.getModel(), product.getBrand(),product.getInvoiceModel() , product.getMpq(), product.getMoq());
+                String insertProductSql = "INSERT INTO PRODUCT(PR_ID,PR_CODE,PR_DETAIL,PR_SPEC,PR_UNIT,PR_ORISPECCODE,PR_BRAND,pr_taxcode,pr_manutype,pr_dhzc,PR_SUPPLYTYPE,PR_ZXBZS,PR_ZXDHL,PR_ACCEPTMETHOD,"
+                                        + "PR_RECORDMAN,PR_DOCDATE,PR_AUDITMAN,PR_AUDITDATE,PR_STATUS,PR_STATUSCODE,PR_REMARK_PURCHASE) VALUES(?,?,?,?,?,?,?,?,'PURCHASE','MRP','PUSH',?,?,'不检验','ADMIN',SYSDATE,'ADMIN',SYSDATE,'已审核','AUDITED',?)";
+                jdbcTemplate.execute(insertProductSql, id, code, product.getModel(), product.getSpec(), product.getUnit(), product.getModel(), product.getBrand(),product.getInvoiceModel() , product.getMpq(), product.getMoq(), product.getInvoiceName());
                 //生成供应商物料对照关系
                 jdbcTemplate.execute("insert into productVendor(pv_id,pv_prodid,pv_detno,pv_vendid,pv_vendcode,pv_vendprodcode,pv_vendprodspec,pv_vendprodunit,pv_vendname,pv_prodcode,pv_zxbzs) "
                         + "values(productVendor_seq.nextval, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?)", id, vendor.getVe_id(), vendor.getVe_code(), product.getMaterialCode(), product.getSpec(), product.getUnit(), vendor.getVe_name(), code, product.getMpq());

+ 9 - 6
src/main/java/com/uas/erp/schedular/mall/task/ProductTask.java

@@ -288,7 +288,7 @@ public class ProductTask extends AbstractTask {
     @TaskMapping(title = "库存同步", cron = "0 0 3 * * ?")
     public void getMallProductToErpProduct() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
         //查询中间表 库存取整
-        List<Stock> stock = jdbcTemplate.queryForBeanList("select TSS_PRODCODE,round(tss_amount,0) tss_amount, TSS_DATE ,pr_zxdhl moq,pr_zxbzs mpq,getsaleprice_hkd(pr_code) price,pr_remark_sale invoiceModel" +
+        List<Stock> stock = jdbcTemplate.queryForBeanList("select TSS_PRODCODE,round(tss_amount,0) tss_amount, TSS_DATE ,pr_zxdhl moq,pr_zxbzs mpq,getsaleprice_hkd(pr_code) price,pr_remark_sale invoiceModel,pr_remark_purchase invoiceName" +
                 " FROM TT_SHOP_STOCK LEFT JOIN PRODUCT ON TSS_PRODCODE=pr_code",Stock.class);
         String jsons = JSON.toJSONString(stock);
 
@@ -413,7 +413,10 @@ public class ProductTask extends AbstractTask {
 
                 Order order = orders.get(j);
                 order.getEnuu();
-
+                //初始状态、待支付、代收款状态订单不同步
+                if (order.getStatus() == 141000 || order.getStatus() == 141010 || order.getStatus() == 141020){
+                    continue;
+                }
                 String mallStatus = "";
                 if (order.getStatus() == 141010 || order.getStatus() == 141020){
                     mallStatus = "待支付";
@@ -460,7 +463,7 @@ public class ProductTask extends AbstractTask {
                     String prodSql = "select * from product where pr_code = '" + orderProduct.getMaterialCode() + "'";
                     com.uas.erp.schedular.publicproduct.domain.Prod prod = jdbcTemplate.queryForBean(prodSql, com.uas.erp.schedular.publicproduct.domain.Prod.class);
                     if (!ObjectUtils.isEmpty(prod)) {
-                        String DetailSql = "insert into saleDetail( sd_id , sd_said , sd_code, sd_detno, SD_PRODID , SD_PRODCODE , SD_QTY , SD_PRICE , SD_TAXRATE , SD_DELIVERY, sd_status, sd_statuscode) " +
+                        String DetailSql = "insert into mall$saleDetail( sd_id , sd_said , sd_code, sd_detno, SD_PRODID , SD_PRODCODE , SD_QTY , SD_PRICE , SD_TAXRATE , SD_DELIVERY, sd_status, sd_statuscode) " +
                                 "values(saleDetail_seq.nextval, " + saleId + ", '" + code + "'," + (detno++) + "," + prod.getPr_id() + ", '" + prod.getPr_code() + "', " + orderProduct.getAmount() +", " +  orderProduct.getUnitPrice() +", " +  "13" +", " +  "sysdate + " + orderProduct.getMaxDelivery() + ",'已审核','AUDITED')";
                         detailList.add(DetailSql);
                     }
@@ -487,7 +490,7 @@ public class ProductTask extends AbstractTask {
                 }
 
                 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 ," +
+                    String sql = "insert into mall$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_SELLERCODE, 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, SA_MALLSTATUS) values ('" + saleId + "','"+ code + "',sysdate,'商城订单','RMB','1','C18060102','深圳优软商城科技有限公司', 'C18060102','深圳优软商城科技有限公司', " +
                             "'C18060102','深圳优软商城科技有限公司','" + pa_code +"','" + pa_name +"','SZ0017','周连军','1202', " +
@@ -496,13 +499,13 @@ public class ProductTask extends AbstractTask {
                     int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
                     if (count > 0) {
                         if ("已结案".equals(status)) {
-                            jdbcTemplate.execute("UPDATE SALE SET SA_STATUS = ?, SA_STATUSCODE = ? WHERE SA_POCODE = ?", status, statusCode, order.getCode());
+                            jdbcTemplate.execute("UPDATE mall$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);
+                            jdbcTemplate.execute("UPDATE mall$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'");
                             }