|
|
@@ -52,539 +52,539 @@ public class OrderTask extends AbstractTask {
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(OrderTask.class);
|
|
|
|
|
|
- @TaskMapping(title = "上传出货单过账状态到商城", cron = "0 0 1 * * ?")
|
|
|
- public void uploadPoststatus() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
- Master master = ContextHolder.getMaster();
|
|
|
- if ("test".equalsIgnoreCase(master.getEnv())) {
|
|
|
- BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
|
|
|
- }
|
|
|
- //获取需要上传的数据
|
|
|
- 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();
|
|
|
- json.put("secretId", master.getMa_uu());
|
|
|
- json.put("signature", "");
|
|
|
- json.put("orderDeliver", orderDeliverList);
|
|
|
- String signatureValues = OpenApiSignUtil.sign(JSON.toJSONString(json), master.getMa_accesssecret());
|
|
|
- json.put("signature", signatureValues);
|
|
|
-
|
|
|
- RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
|
|
|
- HttpHeaders headers = new HttpHeaders();
|
|
|
- headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
|
|
|
- HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(), headers);
|
|
|
- String response = restTemp.postForObject(BASEPATH_TRADE + "/openapi/trade/order/deliver", requestEntity, String.class);
|
|
|
- LOGGER.info("response={}", response);
|
|
|
- DeliverResp deliverResp = JSON.parseObject(response, DeliverResp.class);
|
|
|
- //成功后,更新上传状态
|
|
|
- if (deliverResp.getRespHeader().getCode() == 0) {
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- for (OrderDeliver orderDeliver : orderDeliverList) {
|
|
|
- sb.append("'" + orderDeliver.getOrderCode() + "',");
|
|
|
- }
|
|
|
- String pocodes = sb.substring(0, sb.length() - 1);
|
|
|
- jdbcTemplate.execute("UPDATE SALE SET SA_SENDPOSTSTATUS = '已上传' WHERE SA_KIND = '商城订单' AND SA_POCODE IN (" + pocodes +")");
|
|
|
- postERPUUToMall(pocodes, master.getMa_uu(), master.getMa_accesssecret());
|
|
|
- }else {
|
|
|
- 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 +")");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void postERPUUToMall(String PoCodes, Long secretId, String accesssecret) {
|
|
|
- try {
|
|
|
- JSONObject json = new JSONObject();
|
|
|
- json.put("secretId", secretId);
|
|
|
- json.put("signature", "");
|
|
|
- List<Map<String, Object>> orderInfoList = jdbcTemplate.queryForList("SELECT SA_POCODE, CU_UU FROM SALE LEFT JOIN CUSTOMER ON SA_CUSTCODE = CU_CODE WHERE SA_POCODE IN (" + PoCodes +")");
|
|
|
- JSONArray orderUpdateList = new JSONArray();
|
|
|
- for (Map<String, Object> map : orderInfoList) {
|
|
|
- JSONObject orderUpdate = new JSONObject();
|
|
|
- orderUpdate.put("orderCode", map.get("SA_POCODE"));
|
|
|
- orderUpdate.put("erpEnuu", map.get("CU_UU"));
|
|
|
- orderUpdateList.add(orderUpdate);
|
|
|
- }
|
|
|
- json.put("orderUpdate", orderUpdateList);
|
|
|
- String signatureValue = OpenApiSignUtil.sign(json.toString(), accesssecret);
|
|
|
- json.put("signature", signatureValue);
|
|
|
- RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
|
|
|
- HttpHeaders headers = new HttpHeaders();
|
|
|
- headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
|
|
|
- HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(), headers);
|
|
|
- String response = restTemp.postForObject(BASEPATH_TRADE + "/openapi/trade/order/batch/update", requestEntity, String.class);
|
|
|
- JSONObject respObject = JSON.parseObject(response).getJSONObject("respHeader");
|
|
|
- if (respObject.getInteger("code") != 0) {
|
|
|
- LOGGER.info("同步客户至优软商城失败:【" + respObject.getString("msg") + "】");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @TaskMapping(title = "下载已过账销售订单,生成采购/销售/入库/出货单据", cron = "0 0 1 * * ?")
|
|
|
- public void downloadOrder() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
+// @TaskMapping(title = "上传出货单过账状态到商城", cron = "0 0 1 * * ?")
|
|
|
+// public void uploadPoststatus() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
// Master master = ContextHolder.getMaster();
|
|
|
// if ("test".equalsIgnoreCase(master.getEnv())) {
|
|
|
// BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
|
|
|
// }
|
|
|
- String url = BASEPATH_TRADE + "/openapi/trade/order/page/get?";
|
|
|
- Long updateTime = System.currentTimeMillis() - 24 * 60 * 60 * 1000;
|
|
|
- //获取需要生成数据的供应商
|
|
|
- List<Map<String, Object>> vendorList = jdbcTemplate.queryForList("SELECT VE_UU,VE_ACCESSSECRET FROM VENDOR WHERE VE_ENABLEMALL = '1'");
|
|
|
- if (CollectionUtils.isEmpty(vendorList)) {
|
|
|
- LOGGER.error("没有启用的供应商");
|
|
|
- return;
|
|
|
- }
|
|
|
- for (Map<String, Object> map : vendorList){
|
|
|
- Object vendUU = map.get("VE_UU"), vendAccessSecret = map.get("VE_ACCESSSECRET");
|
|
|
- int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallOrder' and caller = 'mallOrder!YHND'"));
|
|
|
- if(0 == data){
|
|
|
- updateTime = 0L;
|
|
|
- }
|
|
|
- OrdersInfo ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, 1);
|
|
|
- PagingInfo pageInfo = ordersInfo.getPagingInfo();
|
|
|
- if (!ObjectUtils.isEmpty(pageInfo) && pageInfo.getTotalCount() > 0) {
|
|
|
- int totalCount = pageInfo.getTotalCount();
|
|
|
- if (totalCount > 30) {
|
|
|
- //生成单据
|
|
|
- generateOrder(ordersInfo.getOrder());
|
|
|
- //获取额外部分的数据
|
|
|
- int endCount = Double.valueOf(Math.ceil(totalCount / 30.0)).intValue();
|
|
|
- for (int i = 2; i <= endCount; i++) {
|
|
|
- ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, i);
|
|
|
- generateOrder(ordersInfo.getOrder());
|
|
|
- }
|
|
|
- }else {
|
|
|
- //生成单据
|
|
|
- generateOrder(ordersInfo.getOrder());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallOrder' and caller = 'mallOrder!YHND'"));
|
|
|
- if (0 == data) {
|
|
|
- jdbcTemplate.execute("UPDATE CONFIGS SET data = 1 WHERE code = 'mallOrder' and caller = 'mallOrder!YHND'");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成订单数据
|
|
|
- * @param orderList
|
|
|
- */
|
|
|
- private void generateOrder(List<Order> orderList) {
|
|
|
- LOGGER.info("订单数据orderList={}", JSON.toJSONString(orderList));
|
|
|
- for (Order order : orderList) {
|
|
|
- //此单是否已下载过
|
|
|
- int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
|
|
|
- if (count == 0) {
|
|
|
- //取已发货状态的订单生成
|
|
|
- if (order.getStatus() == 141040 || order.getStatus() == 141050 || order.getStatus() == 141091) {
|
|
|
- String purchaseCode = jdbcTemplate.generateCode("Purchase", 2);
|
|
|
- String saleCode = jdbcTemplate.generateCode("Sale", 2);
|
|
|
- //1.生成采购订单
|
|
|
- boolean success = generatePurchase(order, purchaseCode, saleCode);
|
|
|
- if (success) {
|
|
|
- //2.生成销售订单
|
|
|
- generateSale(order, saleCode);
|
|
|
- //3.生成采购验收单
|
|
|
- Map<String, String> purchaseInMap = purcahseIn(order, saleCode, purchaseCode);
|
|
|
- //4.生成销售出货单
|
|
|
- String saleOutCode = saleOut(order, saleCode, purchaseInMap.get("batchCode"));
|
|
|
- //5.过账
|
|
|
- postPurchaseAndSale(purchaseInMap.get("inoutno"), saleOutCode);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void postPurchaseAndSale(String purchaseInCode, String saleOutCode) {
|
|
|
- String message = jdbcTemplate.callForString("{call SP_COMMITPRODINOUT(?,?,?,?)}", "采购验收单", purchaseInCode, "ADMIN");
|
|
|
- if (StringUtils.isEmpty(message)) {
|
|
|
- message = jdbcTemplate.callForString("{call SP_COMMITPRODINOUT(?,?,?,?)}", "出货单", saleOutCode, "ADMIN");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成销售出货单并过账
|
|
|
- * @param saleCode
|
|
|
- */
|
|
|
- private String saleOut(Order order, String saleCode,String batchCode) {
|
|
|
- String saleOutCode = jdbcTemplate.generateCode("ProdInOut!Sale", 2);
|
|
|
- Integer saleOutId = jdbcTemplate.generate("prodinout_seq");
|
|
|
- //主表
|
|
|
- String mainSql = "INSERT INTO PRODINOUT(pi_id,pi_inoutno,pi_class,pi_date,pi_currency,pi_rate,pi_cardid,pi_cardcode,pi_title,pi_arcode,pi_arname,pi_paymentcode,pi_payment,pi_emcode,pi_emname,"
|
|
|
- + "pi_departmentcode,pi_departmentname,pi_address,pi_invostatus,pi_invostatuscode,pi_status,pi_statuscode,pi_purposename,pi_expresscode,pi_tocode,pi_recordman,pi_recorddate,"
|
|
|
- + "pi_auditman,pi_auditdate,pi_printstatus,pi_printstatuscode,pi_sellercode,pi_sellername,pi_sendstatus) SELECT " + saleOutId + ",'"+ saleOutCode +"','出货单',SYSDATE,'RMB','1',sa_custid,sa_custcode,sa_custname,"
|
|
|
- + "sa_apcustcode,sa_apcustname,sa_paymentscode,sa_payments,'ADMIN','管理员',sa_departmentcode,sa_departmentname,sa_toplace,'已审核','AUDITED','未过账','UNPOST',sa_need3,sa_need2,'普通','ADMIN',SYSDATE,'ADMIN',SYSDATE,'未打印','UNPRINT','ADMIN','管理员','已上传' "
|
|
|
- + " FROM SALE WHERE SA_CODE = ?";
|
|
|
- //明细表
|
|
|
- String detailSql = "INSERT INTO PRODIODETAIL(pd_id,pd_piid,pd_pdno,pd_inoutno,pd_piclass,pd_auditstatus,pd_outqty,pd_ordercode,pd_orderdetno,pd_prodcode,pd_prodid,pd_whcode,pd_whname,pd_sendprice,pd_taxrate,pd_batchCode,pd_pocode,pd_invoiceName) "
|
|
|
- + " SELECT PRODIODETAIL_SEQ.NEXTVAL," + saleOutId + ",ROWNUM,'" + saleOutCode + "','出货单','ENTERING',SD_QTY,SA_CODE,SD_DETNO,SD_PRODCODE,SD_PRODID,'SZ01','深圳仓',SD_PRICE,'13','"+ batchCode + "',SA_POCODE,sd_invoiceName "
|
|
|
- + " FROM SALE LEFT JOIN SALEDETAIL ON SA_ID = SD_SAID WHERE SA_CODE = ?";
|
|
|
-
|
|
|
- jdbcTemplate.execute(mainSql, saleCode);
|
|
|
- jdbcTemplate.execute(detailSql, saleCode);
|
|
|
- String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
- "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '销售出货单生成成功')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- return saleOutCode;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成采购验收单
|
|
|
- * @param purchaseCode
|
|
|
- */
|
|
|
- private Map<String, String> purcahseIn(Order order,String saleCode, String purchaseCode) {
|
|
|
- Map<String, String> resultMap = new HashMap<>(2);
|
|
|
- String purcCheckinCode = jdbcTemplate.generateCode("ProdInOut!PurcCheckin",2);
|
|
|
- Integer purcCheckinId = jdbcTemplate.getInt("SELECT PRODINOUT_SEQ.NEXTVAL FROM DUAL");
|
|
|
- Double total = Double.valueOf(jdbcTemplate.getString("select round(sum(pd_price * pd_qty),2) from purchase left join purchaseDetail on pu_id = pd_puid where pu_code = ?", purchaseCode));
|
|
|
- // 1.主表数据
|
|
|
- String mainSql = "INSERT INTO prodinout(pi_id,pi_inoutno,pi_class,pi_date,pi_currency,pi_rate,pi_cardcode,pi_title,pi_receivecode,pi_receivename,pi_paymentcode,pi_payment,pi_emcode,pi_emname,"
|
|
|
- + "pi_departmentcode,pi_departmentname,pi_total,pi_invostatus,pi_invostatuscode,pi_status,pi_statuscode,pi_recordman,pi_recorddate,pi_auditman,pi_auditdate,pi_updateman,pi_updatedate,pi_printstatus,pi_printstatuscode,pi_whcode,pi_whname,pi_sendstatus) "
|
|
|
- + "SELECT '" + purcCheckinId + "','" + purcCheckinCode + "','采购验收单',SYSDATE,'RMB','1',pu_vendcode,pu_vendname,pu_receivecode,pu_receivename,pu_paymentscode,pu_payments,'ADMIN','管理员',"
|
|
|
- + "'B15','优软云运营组','"+ total +"','已审核','AUDITED','未过账','UNPOST','ADMIN',SYSDATE,'ADMIN',SYSDATE,'ADMIN',SYSDATE,'未打印','UNPRINT','SZ01','深圳仓','已上传' FROM PURCHASE WHERE PU_CODE = ?";
|
|
|
- // 2.明细表数据
|
|
|
- //取批号
|
|
|
- String batchCode = jdbcTemplate.callForString("{call utl_rseq(?,?,?)}", "BatchCode", "/yyMMdd/5");
|
|
|
- String detailSql = "insert into prodiodetail(pd_id,pd_piid,pd_pdno,pd_inoutno,pd_piclass,pd_accountstatus,pd_accountstatuscode,pd_ordercode,pd_orderdetno,pd_prodcode,pd_prodid,pd_whcode,pd_whname,pd_inqty,pd_orderprice,pd_taxrate,pd_batchcode,pd_invoiceName) "
|
|
|
- + " select prodiodetail_seq.nextval," + purcCheckinId + ",rownum,'"+ purcCheckinCode +"','采购验收单','未核算','UNACCOUNT',pu_code,pd_detno,pd_prodcode,pd_prodid,'SZ01','深圳仓',pd_qty,pd_price,'13','"+batchCode+"',pd_invoiceName from purchase left join purchaseDetail on pu_id = pd_puid where pu_code = ?";
|
|
|
-
|
|
|
- jdbcTemplate.execute(mainSql, purchaseCode);
|
|
|
- jdbcTemplate.execute(detailSql, purchaseCode);
|
|
|
- resultMap.put("batchCode", batchCode);
|
|
|
- resultMap.put("inoutno", purcCheckinCode);
|
|
|
- String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
- "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '采购验收单生成成功')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- return resultMap;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成销售订单
|
|
|
- * @param order
|
|
|
- * @param saleCode
|
|
|
- */
|
|
|
- private void generateSale(Order order,String saleCode) {
|
|
|
- int saleId = jdbcTemplate.getInt("SELECT SALE_SEQ.NEXTVAL FROM DUAL");
|
|
|
- //客户资料
|
|
|
- Customer customer = generateCustomer(order);
|
|
|
- if(ObjectUtils.isEmpty(customer)){
|
|
|
- String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
- "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '失败', sysdate,'', '销售订单生成失败,没有客户资料')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- return;
|
|
|
- }
|
|
|
- //销售订单主表
|
|
|
- String insertSaleSql = "INSERT INTO SALE(SA_ID,SA_CODE,SA_DATE,SA_KIND,SA_CURRENCY,SA_RATE,SA_CUSTID,SA_CUSTCODE,SA_CUSTNAME,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_need3,SA_NEED2) "
|
|
|
- + "VALUES(?,?,SYSDATE,'代运营订单','RMB','1',?,?,?,?,?,'PC31','CBD(款到发货)','ADMIN','管理员','B15','优软云运营组',?,?,'已审核','AUDITED','ADMIN',SYSDATE,'ADMIN',SYSDATE,?,?)";
|
|
|
- //销售订单明细表
|
|
|
- String insertDetailSql = "INSERT INTO SALEDETAIL(SD_ID, SD_SAID, SD_CODE, SD_DETNO, SD_PRODID, SD_PRODCODE, SD_QTY, SD_PRICE, SD_TAXRATE, SD_DELIVERY,sd_invoiceName) "
|
|
|
- + "SELECT SALEDETAIL_SEQ.NEXTVAL,'"+saleId+"','"+saleCode+"',pd_detno,pd_prodid,pd_prodcode,pd_qty,pd_price,pd_rate,pd_delivery,pd_invoiceName FROM PURCHASE LEFT JOIN PURCHASEDETAIL ON PU_ID = PD_PUID WHERE PU_REFCODE = '"+saleCode+"'";
|
|
|
-
|
|
|
- jdbcTemplate.execute(insertSaleSql, saleId, saleCode, customer.getCu_id(), customer.getCu_code(), customer.getCu_name(), customer.getCu_arcode(), customer.getCu_arname(),
|
|
|
- order.getOrderDeliveryAddr().getDeliveryAddress(), order.getCode(), order.getBuyerName(), order.getBuyerMobile());
|
|
|
- jdbcTemplate.execute(insertDetailSql);
|
|
|
- String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
- "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '销售订单生成成功')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成客户资料
|
|
|
- */
|
|
|
- private Customer generateCustomer(Order order) {
|
|
|
- Customer customer = null;
|
|
|
- if (order.getEnuu() == null || order.getEnuu() == 0) {
|
|
|
- OrderInvoice orderInvoice = order.getOrderInvoice();
|
|
|
- if (ObjectUtils.isEmpty(orderInvoice)) {
|
|
|
- //虚拟客户
|
|
|
- customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_CODE = ?", Customer.class, "C0023");
|
|
|
- return customer;
|
|
|
- }else {
|
|
|
- customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_NAME = ? AND CU_BUSINESSCODE = ?", Customer.class, orderInvoice.getName(), orderInvoice.getIdentityNum());
|
|
|
- if (!ObjectUtils.isEmpty(customer)){
|
|
|
- return customer;
|
|
|
- }else {
|
|
|
- int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
|
|
|
- String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
|
|
|
- String insertCustomerSql = "insert into customer(cu_id,cu_code,cu_name,cu_shortname,cu_businesscode,cu_uu,cu_arcode,cu_arname,cu_paymentscode,cu_payments,cu_sellercode,cu_sellername,cu_servicecode,"
|
|
|
- + "cu_servicename,cu_kind,cu_agenttype,cu_cop,cu_enablecredit,cu_shipment,cu_email,cu_tel,cu_contact,cu_mobile,cu_recordman,cu_recorddate,cu_auditman,cu_auditdate,cu_auditstatus,cu_auditstatuscode)"
|
|
|
- + "values(" + id + ",'" + customerCode + "','" + orderInvoice.getName() + "','" + orderInvoice.getName() + "','" + orderInvoice.getIdentityNum() + "',null,'"+customerCode+"','"+orderInvoice.getName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
|
|
|
- + "'普通客户','普通客户','深圳怡海能达','否','快递',null,null,null,null,'ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
|
|
|
- jdbcTemplate.execute(insertCustomerSql);
|
|
|
- customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_ID = ?", Customer.class, id);
|
|
|
- return customer;
|
|
|
- }
|
|
|
- }
|
|
|
- }else {
|
|
|
- customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_UU = ? and nvl(cu_uu,' ') <> 0 and CU_AUDITSTATUS = '已审核'",
|
|
|
- Customer.class, order.getEnuu());
|
|
|
- if (ObjectUtils.isEmpty(customer)) {
|
|
|
- customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_NAME = ? and CU_AUDITSTATUS = '已审核'",
|
|
|
- Customer.class, order.getBuyerEnName());
|
|
|
- if (ObjectUtils.isEmpty(customer)) {
|
|
|
- //未找到对应的客户资料,新建一个
|
|
|
- int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
|
|
|
- String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
|
|
|
- //营业执照号
|
|
|
- String identityNum = "";
|
|
|
- OrderInvoice orderInvoice = order.getOrderInvoice();
|
|
|
- if (!ObjectUtils.isEmpty(orderInvoice)) {
|
|
|
- identityNum = orderInvoice.getIdentityNum();
|
|
|
- }
|
|
|
- String insertCustomerSql = "insert into customer(cu_id,cu_code,cu_name,cu_shortname,cu_businesscode,cu_uu,cu_arcode,cu_arname,cu_paymentscode,cu_payments,cu_sellercode,cu_sellername,cu_servicecode,"
|
|
|
- + "cu_servicename,cu_kind,cu_agenttype,cu_cop,cu_enablecredit,cu_shipment,cu_email,cu_tel,cu_contact,cu_mobile,cu_recordman,cu_recorddate,cu_auditman,cu_auditdate,cu_auditstatus,cu_auditstatuscode)"
|
|
|
- + "values(" + id + ",'" + customerCode + "','" + order.getBuyerEnName() + "','" + order.getBuyerEnName() + "','" + identityNum + "','" + order.getEnuu() + "','"+customerCode+"','"+order.getBuyerEnName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
|
|
|
- + "'普通客户','普通客户','深圳怡海能达','否','快递','" + order.getBuyerEmail() + "','" + order.getBuyerMobile() + "','" + order.getBuyerName() + "','" + order.getBuyerMobile() + "','ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
|
|
|
- jdbcTemplate.execute(insertCustomerSql);
|
|
|
- customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_ID = ?", Customer.class, id);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return customer;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成采购订单
|
|
|
- * @param order
|
|
|
- */
|
|
|
- private boolean generatePurchase(Order order,String purchaseCode, String saleCode) {
|
|
|
- int purchaseId = jdbcTemplate.getInt("select purchase_seq.nextval from dual");
|
|
|
- String insertMainSql = "insert into purchase(pu_id,pu_code,pu_date,pu_kind,pu_currency,pu_rate,pu_refcode,pu_vendcode,pu_vendname,pu_receivecode,pu_receivename,pu_vendoruu,"
|
|
|
- + "pu_paymentscode,pu_payments,pu_buyercode,pu_buyername,pu_departmentcode,pu_departmentname,pu_shipaddresscode,pu_pocode,pu_status,pu_statuscode,"
|
|
|
- + "pu_recordman,pu_indate,pu_auditman,pu_auditdate,pu_getprice,pu_isadvance,PU_SENDSTATUS) values(?,?,sysdate,'代运营订单','RMB','1',?,?,?,?,?,?,?,?,'ADMIN','管理员','B15','优软云运营组',?,?,'已审核','AUDITED','ADMIN',sysdate,'ADMIN',sysdate,'0','unadvance','已上传')";
|
|
|
- //供应商资料生成逻辑
|
|
|
- if (order.getErpEnuu() == null || order.getErpEnuu() == 0) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- Vendor vendor = getVendorByUUOrName(order.getCode(), order.getErpEnuu());
|
|
|
- if (null == vendor) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- List<OrderProduct> productList = order.getOrderProduct();
|
|
|
- List<String> insertDetailSqlList = new ArrayList<>(productList.size());
|
|
|
- for (int i = 0, len = productList.size(); i < len; i++) {
|
|
|
- OrderProduct product = productList.get(i);
|
|
|
- String prodCode = "";
|
|
|
- Integer prodId = null;
|
|
|
- //物料生成逻辑
|
|
|
- Map<String, Object> productMap = generateProduct(product, order.getCode(), vendor);
|
|
|
- if (!CollectionUtils.isEmpty(productMap)) {
|
|
|
- prodCode = String.valueOf(productMap.get("prodCode"));
|
|
|
- prodId = Integer.valueOf(String.valueOf(productMap.get("prodId")));
|
|
|
- }else {
|
|
|
- String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
- "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '失败', sysdate,'', '采购订单生成失败,没有物料资料')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- return false;
|
|
|
- }
|
|
|
- String insertDetailSql = "insert into PurchaseDetail(pd_id,pd_puid,pd_detno,pd_code,pd_prodcode,pd_prodid,pd_qty,pd_price,pd_rate,pd_delivery,pd_invoiceName) "
|
|
|
- + " values(PurchaseDetail_seq.nextval,"+ purchaseId +","+ (i+1) +",'"+ purchaseCode +"','"+ prodCode +"',"+prodId+",'"+ product.getAmount() +"','"+ product.getUnitPrice() +"','13',sysdate+"+product.getMaxDelivery()+",'"+product.getInvoiceName()+"')";
|
|
|
- insertDetailSqlList.add(insertDetailSql);
|
|
|
- }
|
|
|
-
|
|
|
- jdbcTemplate.execute(insertMainSql, purchaseId, purchaseCode, saleCode, vendor.getVe_code(), vendor.getVe_name(), vendor.getVe_apvendcode(), vendor.getVe_apvendname(), vendor.getVe_uu(),
|
|
|
- vendor.getVe_paymentcode(), vendor.getVe_payment(), order.getOrderDeliveryAddr().getDeliveryAddress(), order.getCode());
|
|
|
- jdbcTemplate.batchExecute(insertDetailSqlList);
|
|
|
- String sendStatus = jdbcTemplate.getString("SELECT PU_SENDSTATUS FROM PURCHASE WHERE PU_ID = ?", purchaseId);
|
|
|
- LOGGER.info("生成的采购订单id={},上传状态={}", purchaseId, sendStatus);
|
|
|
- jdbcTemplate.execute("UPDATE PURCHASE SET PU_SENDSTATUS = '已上传' WHERE PU_ID = ?", purchaseId);
|
|
|
- String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
- "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '采购订单生成成功')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成物料资料
|
|
|
- * @param product
|
|
|
- * @param orderCode
|
|
|
- * @param vendor
|
|
|
- * @return
|
|
|
- */
|
|
|
- private Map<String, Object> generateProduct(OrderProduct product, String orderCode, Vendor vendor){
|
|
|
- Map<String, Object> productMap = new HashMap<>(2);
|
|
|
- productMap = jdbcTemplate.queryForMap("SELECT PV_PRODCODE AS \"prodCode\",PV_PRODID AS \"prodId\" FROM PRODUCTVENDOR WHERE PV_VENDPRODCODE = ? AND PV_VENDCODE = ?", product.getMaterialCode(), vendor.getVe_code());
|
|
|
- if (!CollectionUtils.isEmpty(productMap)) {
|
|
|
- return productMap;
|
|
|
- }else {
|
|
|
- int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM PRODUCT WHERE PR_ORISPECCODE = ? AND PR_BRAND = ?", product.getModel(), product.getBrand());
|
|
|
- if (count > 1) {
|
|
|
- //不生成订单并生成日志
|
|
|
- String logOrderSql = "INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) "
|
|
|
- + "VALUES(LOGORDER_SEQ.NEXTVAL,'" + orderCode + "', '失败', SYSDATE, null, '根据平台订单物料的型号+品牌未在物料资料找到唯一对照关系')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- return null;
|
|
|
- }else if (count == 1) {
|
|
|
- //返回物料信息
|
|
|
- productMap = jdbcTemplate.queryForMap("SELECT PR_CODE AS \"prodCode\",PR_ID as \"prodId\" FROM PRODUCT WHERE PR_ORISPECCODE = ? AND PR_BRAND = ?", product.getModel(), product.getBrand());
|
|
|
- //生成供应商物料对照关系
|
|
|
- String insertProductVendorSql = "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, ?, ?, ?, ?, ?, ?, ?, ?)";
|
|
|
- jdbcTemplate.execute(insertProductVendorSql, productMap.get("prodId"), vendor.getVe_id(), vendor.getVe_code(), product.getMaterialCode(), product.getSpec(), product.getUnit(), vendor.getVe_name(), productMap.get("prodCode"), product.getMpq());
|
|
|
- }else if (count == 0) {
|
|
|
- String code = "";
|
|
|
- if (StringUtils.isEmpty(product.getMaterialCode())) {
|
|
|
- String logOrderSql = "INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) "
|
|
|
- + "VALUES(LOGORDER_SEQ.NEXTVAL,'" + orderCode + "', '失败', SYSDATE, null, '从平台获取到的产品信息uas物料编号为空')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- return null;
|
|
|
- }else {
|
|
|
- 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_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());
|
|
|
- productMap = new HashMap<>(2);
|
|
|
- productMap.put("prodCode", code);
|
|
|
- productMap.put("prodId", id);
|
|
|
- }
|
|
|
- }
|
|
|
- return productMap;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取供应商资料
|
|
|
- * @param enUU
|
|
|
- */
|
|
|
- private Vendor getVendorByUUOrName(String orderCode, Integer enUU){
|
|
|
- // 收到的供应商UU为优软商城时,默认转为怡海能达
|
|
|
- if (enUU == 10042875) {
|
|
|
- Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_code = 'YT4604'", Vendor.class);
|
|
|
- return vendor;
|
|
|
- }
|
|
|
- Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_uu = ? and rownum = 1", Vendor.class, enUU);
|
|
|
- if (!ObjectUtils.isEmpty(vendor)) {
|
|
|
- return vendor;
|
|
|
- }else {
|
|
|
- //记录日志
|
|
|
- String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
- "values(LOGORDER_SEQ.NEXTVAL,'" + orderCode + "', '失败', sysdate, null, '未找到对应的供应商资料!')";
|
|
|
- jdbcTemplate.execute(logOrderSql);
|
|
|
- return null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 取销售订单数据
|
|
|
- * @param requestURL
|
|
|
- * @param vendUU
|
|
|
- * @param updateTime
|
|
|
- * @param pageSize
|
|
|
- * @param pageNumber
|
|
|
- * @return
|
|
|
- * @throws NoSuchAlgorithmException
|
|
|
- * @throws InvalidKeyException
|
|
|
- * @throws UnsupportedEncodingException
|
|
|
- */
|
|
|
- private OrdersInfo getOrdersByUU(String requestURL, String vendUU, String vendAccessSecret, Long updateTime, int pageSize, int pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
- String paramStr = "secretId=" + vendUU + "&"+ "materialCode=" + "" + "&" + "updateTime=" + updateTime + "&" + "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
|
|
|
- //进行签名
|
|
|
- String signatureValue = OpenApiSignUtil.sign(paramStr,vendAccessSecret);
|
|
|
- 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);
|
|
|
- OrdersInfo ordersInfo = JSON.parseObject(result, OrdersInfo.class);
|
|
|
- return ordersInfo;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- @TaskMapping(title = "生成客户资料", fixedDelay = 60000)
|
|
|
- public void downloadCustomer() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
-// Master master = ContextHolder.getMaster();
|
|
|
-// if ("test".equalsIgnoreCase(master.getEnv())) {
|
|
|
-// BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
|
|
|
+// //获取需要上传的数据
|
|
|
+// 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();
|
|
|
+// json.put("secretId", master.getMa_uu());
|
|
|
+// json.put("signature", "");
|
|
|
+// json.put("orderDeliver", orderDeliverList);
|
|
|
+// String signatureValues = OpenApiSignUtil.sign(JSON.toJSONString(json), master.getMa_accesssecret());
|
|
|
+// json.put("signature", signatureValues);
|
|
|
+//
|
|
|
+// RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
|
|
|
+// HttpHeaders headers = new HttpHeaders();
|
|
|
+// headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
|
|
|
+// HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(), headers);
|
|
|
+// String response = restTemp.postForObject(BASEPATH_TRADE + "/openapi/trade/order/deliver", requestEntity, String.class);
|
|
|
+// LOGGER.info("response={}", response);
|
|
|
+// DeliverResp deliverResp = JSON.parseObject(response, DeliverResp.class);
|
|
|
+// //成功后,更新上传状态
|
|
|
+// if (deliverResp.getRespHeader().getCode() == 0) {
|
|
|
+// StringBuilder sb = new StringBuilder();
|
|
|
+// for (OrderDeliver orderDeliver : orderDeliverList) {
|
|
|
+// sb.append("'" + orderDeliver.getOrderCode() + "',");
|
|
|
+// }
|
|
|
+// String pocodes = sb.substring(0, sb.length() - 1);
|
|
|
+// jdbcTemplate.execute("UPDATE SALE SET SA_SENDPOSTSTATUS = '已上传' WHERE SA_KIND = '商城订单' AND SA_POCODE IN (" + pocodes +")");
|
|
|
+// postERPUUToMall(pocodes, master.getMa_uu(), master.getMa_accesssecret());
|
|
|
+// }else {
|
|
|
+// 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 +")");
|
|
|
+// }
|
|
|
// }
|
|
|
- String url = BASEPATH_TRADE + "/openapi/trade/order/page/get?";
|
|
|
- Long updateTime = System.currentTimeMillis() - 24 * 60 * 60 * 1000;
|
|
|
- //获取需要生成数据的供应商
|
|
|
- List<Map<String, Object>> vendorList = jdbcTemplate.queryForList("SELECT VE_UU,VE_ACCESSSECRET FROM VENDOR WHERE VE_ENABLEMALL = '1'");
|
|
|
- if (CollectionUtils.isEmpty(vendorList)) {
|
|
|
- LOGGER.error("没有启用的供应商");
|
|
|
- return;
|
|
|
- }
|
|
|
- for (Map<String, Object> map : vendorList){
|
|
|
- Object vendUU = map.get("VE_UU"), vendAccessSecret = map.get("VE_ACCESSSECRET");
|
|
|
- OrdersInfo ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, 1);
|
|
|
- PagingInfo pageInfo = ordersInfo.getPagingInfo();
|
|
|
- if (!ObjectUtils.isEmpty(pageInfo) && pageInfo.getTotalCount() > 0) {
|
|
|
- int totalCount = pageInfo.getTotalCount();
|
|
|
- if (totalCount > 30) {
|
|
|
- //生成单据
|
|
|
- createCustomer(ordersInfo.getOrder());
|
|
|
- //获取额外部分的数据
|
|
|
- int endCount = Double.valueOf(Math.ceil(totalCount / 30.0)).intValue();
|
|
|
- for (int i = 2; i <= endCount; i++) {
|
|
|
- ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, i);
|
|
|
- createCustomer(ordersInfo.getOrder());
|
|
|
- }
|
|
|
- }else {
|
|
|
- //生成单据
|
|
|
- createCustomer(ordersInfo.getOrder());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void createCustomer(List<Order> orderList) {
|
|
|
- for (Order order : orderList) {
|
|
|
- //此单是否已下载过
|
|
|
- int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
|
|
|
- if (count == 0) {
|
|
|
- //取已发货状态的订单生成
|
|
|
- if (order.getStatus() != 141000 && order.getStatus() != 141010 && order.getStatus() != 141095) {
|
|
|
- if (order.getEnuu() != null && order.getEnuu() != 0) {
|
|
|
- Customer customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_UU = ? and nvl(cu_uu,' ') <> 0 and CU_AUDITSTATUS = '已审核'", Customer.class, order.getEnuu());
|
|
|
- if (ObjectUtils.isEmpty(customer)) {
|
|
|
- customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_NAME = ? and CU_AUDITSTATUS = '已审核'", Customer.class, order.getBuyerEnName());
|
|
|
- if (ObjectUtils.isEmpty(customer)) {
|
|
|
- //未找到对应的客户资料,新建一个
|
|
|
- int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
|
|
|
- String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
|
|
|
- //营业执照号
|
|
|
- String identityNum = "";
|
|
|
- OrderInvoice orderInvoice = order.getOrderInvoice();
|
|
|
- if (!ObjectUtils.isEmpty(orderInvoice)) {
|
|
|
- identityNum = orderInvoice.getIdentityNum();
|
|
|
- }
|
|
|
- String insertCustomerSql = "insert into customer(cu_id,cu_code,cu_name,cu_shortname,cu_businesscode,cu_uu,cu_arcode,cu_arname,cu_paymentscode,cu_payments,cu_sellercode,cu_sellername,cu_servicecode,"
|
|
|
- + "cu_servicename,cu_kind,cu_agenttype,cu_cop,cu_enablecredit,cu_shipment,cu_email,cu_tel,cu_contact,cu_mobile,cu_recordman,cu_recorddate,cu_auditman,cu_auditdate,cu_auditstatus,cu_auditstatuscode)"
|
|
|
- + "values(" + id + ",'" + customerCode + "','" + order.getBuyerEnName() + "','" + order.getBuyerEnName() + "','" + identityNum + "','" + order.getEnuu() + "','"+customerCode+"','"+order.getBuyerEnName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
|
|
|
- + "'普通客户','普通客户','深圳怡海能达','否','快递','" + order.getBuyerEmail() + "','" + order.getBuyerMobile() + "','" + order.getBuyerName() + "','" + order.getBuyerMobile() + "','ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
|
|
|
- jdbcTemplate.execute(insertCustomerSql);
|
|
|
- LOGGER.info("生成客户资料,code={},id={}", customerCode, id);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+// }
|
|
|
+//
|
|
|
+// private void postERPUUToMall(String PoCodes, Long secretId, String accesssecret) {
|
|
|
+// try {
|
|
|
+// JSONObject json = new JSONObject();
|
|
|
+// json.put("secretId", secretId);
|
|
|
+// json.put("signature", "");
|
|
|
+// List<Map<String, Object>> orderInfoList = jdbcTemplate.queryForList("SELECT SA_POCODE, CU_UU FROM SALE LEFT JOIN CUSTOMER ON SA_CUSTCODE = CU_CODE WHERE SA_POCODE IN (" + PoCodes +")");
|
|
|
+// JSONArray orderUpdateList = new JSONArray();
|
|
|
+// for (Map<String, Object> map : orderInfoList) {
|
|
|
+// JSONObject orderUpdate = new JSONObject();
|
|
|
+// orderUpdate.put("orderCode", map.get("SA_POCODE"));
|
|
|
+// orderUpdate.put("erpEnuu", map.get("CU_UU"));
|
|
|
+// orderUpdateList.add(orderUpdate);
|
|
|
+// }
|
|
|
+// json.put("orderUpdate", orderUpdateList);
|
|
|
+// String signatureValue = OpenApiSignUtil.sign(json.toString(), accesssecret);
|
|
|
+// json.put("signature", signatureValue);
|
|
|
+// RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
|
|
|
+// HttpHeaders headers = new HttpHeaders();
|
|
|
+// headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
|
|
|
+// HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(), headers);
|
|
|
+// String response = restTemp.postForObject(BASEPATH_TRADE + "/openapi/trade/order/batch/update", requestEntity, String.class);
|
|
|
+// JSONObject respObject = JSON.parseObject(response).getJSONObject("respHeader");
|
|
|
+// if (respObject.getInteger("code") != 0) {
|
|
|
+// LOGGER.info("同步客户至优软商城失败:【" + respObject.getString("msg") + "】");
|
|
|
+// }
|
|
|
+// } catch (Exception e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// @TaskMapping(title = "下载已过账销售订单,生成采购/销售/入库/出货单据", cron = "0 0 1 * * ?")
|
|
|
+// public void downloadOrder() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
+//// Master master = ContextHolder.getMaster();
|
|
|
+//// if ("test".equalsIgnoreCase(master.getEnv())) {
|
|
|
+//// BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
|
|
|
+//// }
|
|
|
+// String url = BASEPATH_TRADE + "/openapi/trade/order/page/get?";
|
|
|
+// Long updateTime = System.currentTimeMillis() - 24 * 60 * 60 * 1000;
|
|
|
+// //获取需要生成数据的供应商
|
|
|
+// List<Map<String, Object>> vendorList = jdbcTemplate.queryForList("SELECT VE_UU,VE_ACCESSSECRET FROM VENDOR WHERE VE_ENABLEMALL = '1'");
|
|
|
+// if (CollectionUtils.isEmpty(vendorList)) {
|
|
|
+// LOGGER.error("没有启用的供应商");
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// for (Map<String, Object> map : vendorList){
|
|
|
+// Object vendUU = map.get("VE_UU"), vendAccessSecret = map.get("VE_ACCESSSECRET");
|
|
|
+// int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallOrder' and caller = 'mallOrder!YHND'"));
|
|
|
+// if(0 == data){
|
|
|
+// updateTime = 0L;
|
|
|
+// }
|
|
|
+// OrdersInfo ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, 1);
|
|
|
+// PagingInfo pageInfo = ordersInfo.getPagingInfo();
|
|
|
+// if (!ObjectUtils.isEmpty(pageInfo) && pageInfo.getTotalCount() > 0) {
|
|
|
+// int totalCount = pageInfo.getTotalCount();
|
|
|
+// if (totalCount > 30) {
|
|
|
+// //生成单据
|
|
|
+// generateOrder(ordersInfo.getOrder());
|
|
|
+// //获取额外部分的数据
|
|
|
+// int endCount = Double.valueOf(Math.ceil(totalCount / 30.0)).intValue();
|
|
|
+// for (int i = 2; i <= endCount; i++) {
|
|
|
+// ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, i);
|
|
|
+// generateOrder(ordersInfo.getOrder());
|
|
|
+// }
|
|
|
+// }else {
|
|
|
+// //生成单据
|
|
|
+// generateOrder(ordersInfo.getOrder());
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallOrder' and caller = 'mallOrder!YHND'"));
|
|
|
+// if (0 == data) {
|
|
|
+// jdbcTemplate.execute("UPDATE CONFIGS SET data = 1 WHERE code = 'mallOrder' and caller = 'mallOrder!YHND'");
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成订单数据
|
|
|
+// * @param orderList
|
|
|
+// */
|
|
|
+// private void generateOrder(List<Order> orderList) {
|
|
|
+// LOGGER.info("订单数据orderList={}", JSON.toJSONString(orderList));
|
|
|
+// for (Order order : orderList) {
|
|
|
+// //此单是否已下载过
|
|
|
+// int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
|
|
|
+// if (count == 0) {
|
|
|
+// //取已发货状态的订单生成
|
|
|
+// if (order.getStatus() == 141040 || order.getStatus() == 141050 || order.getStatus() == 141091) {
|
|
|
+// String purchaseCode = jdbcTemplate.generateCode("Purchase", 2);
|
|
|
+// String saleCode = jdbcTemplate.generateCode("Sale", 2);
|
|
|
+// //1.生成采购订单
|
|
|
+// boolean success = generatePurchase(order, purchaseCode, saleCode);
|
|
|
+// if (success) {
|
|
|
+// //2.生成销售订单
|
|
|
+// generateSale(order, saleCode);
|
|
|
+// //3.生成采购验收单
|
|
|
+// Map<String, String> purchaseInMap = purcahseIn(order, saleCode, purchaseCode);
|
|
|
+// //4.生成销售出货单
|
|
|
+// String saleOutCode = saleOut(order, saleCode, purchaseInMap.get("batchCode"));
|
|
|
+// //5.过账
|
|
|
+// postPurchaseAndSale(purchaseInMap.get("inoutno"), saleOutCode);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// private void postPurchaseAndSale(String purchaseInCode, String saleOutCode) {
|
|
|
+// String message = jdbcTemplate.callForString("{call SP_COMMITPRODINOUT(?,?,?,?)}", "采购验收单", purchaseInCode, "ADMIN");
|
|
|
+// if (StringUtils.isEmpty(message)) {
|
|
|
+// message = jdbcTemplate.callForString("{call SP_COMMITPRODINOUT(?,?,?,?)}", "出货单", saleOutCode, "ADMIN");
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成销售出货单并过账
|
|
|
+// * @param saleCode
|
|
|
+// */
|
|
|
+// private String saleOut(Order order, String saleCode,String batchCode) {
|
|
|
+// String saleOutCode = jdbcTemplate.generateCode("ProdInOut!Sale", 2);
|
|
|
+// Integer saleOutId = jdbcTemplate.generate("prodinout_seq");
|
|
|
+// //主表
|
|
|
+// String mainSql = "INSERT INTO PRODINOUT(pi_id,pi_inoutno,pi_class,pi_date,pi_currency,pi_rate,pi_cardid,pi_cardcode,pi_title,pi_arcode,pi_arname,pi_paymentcode,pi_payment,pi_emcode,pi_emname,"
|
|
|
+// + "pi_departmentcode,pi_departmentname,pi_address,pi_invostatus,pi_invostatuscode,pi_status,pi_statuscode,pi_purposename,pi_expresscode,pi_tocode,pi_recordman,pi_recorddate,"
|
|
|
+// + "pi_auditman,pi_auditdate,pi_printstatus,pi_printstatuscode,pi_sellercode,pi_sellername,pi_sendstatus) SELECT " + saleOutId + ",'"+ saleOutCode +"','出货单',SYSDATE,'RMB','1',sa_custid,sa_custcode,sa_custname,"
|
|
|
+// + "sa_apcustcode,sa_apcustname,sa_paymentscode,sa_payments,'ADMIN','管理员',sa_departmentcode,sa_departmentname,sa_toplace,'已审核','AUDITED','未过账','UNPOST',sa_need3,sa_need2,'普通','ADMIN',SYSDATE,'ADMIN',SYSDATE,'未打印','UNPRINT','ADMIN','管理员','已上传' "
|
|
|
+// + " FROM SALE WHERE SA_CODE = ?";
|
|
|
+// //明细表
|
|
|
+// String detailSql = "INSERT INTO PRODIODETAIL(pd_id,pd_piid,pd_pdno,pd_inoutno,pd_piclass,pd_auditstatus,pd_outqty,pd_ordercode,pd_orderdetno,pd_prodcode,pd_prodid,pd_whcode,pd_whname,pd_sendprice,pd_taxrate,pd_batchCode,pd_pocode,pd_invoiceName) "
|
|
|
+// + " SELECT PRODIODETAIL_SEQ.NEXTVAL," + saleOutId + ",ROWNUM,'" + saleOutCode + "','出货单','ENTERING',SD_QTY,SA_CODE,SD_DETNO,SD_PRODCODE,SD_PRODID,'SZ01','深圳仓',SD_PRICE,'13','"+ batchCode + "',SA_POCODE,sd_invoiceName "
|
|
|
+// + " FROM SALE LEFT JOIN SALEDETAIL ON SA_ID = SD_SAID WHERE SA_CODE = ?";
|
|
|
+//
|
|
|
+// jdbcTemplate.execute(mainSql, saleCode);
|
|
|
+// jdbcTemplate.execute(detailSql, saleCode);
|
|
|
+// String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
+// "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '销售出货单生成成功')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// return saleOutCode;
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成采购验收单
|
|
|
+// * @param purchaseCode
|
|
|
+// */
|
|
|
+// private Map<String, String> purcahseIn(Order order,String saleCode, String purchaseCode) {
|
|
|
+// Map<String, String> resultMap = new HashMap<>(2);
|
|
|
+// String purcCheckinCode = jdbcTemplate.generateCode("ProdInOut!PurcCheckin",2);
|
|
|
+// Integer purcCheckinId = jdbcTemplate.getInt("SELECT PRODINOUT_SEQ.NEXTVAL FROM DUAL");
|
|
|
+// Double total = Double.valueOf(jdbcTemplate.getString("select round(sum(pd_price * pd_qty),2) from purchase left join purchaseDetail on pu_id = pd_puid where pu_code = ?", purchaseCode));
|
|
|
+// // 1.主表数据
|
|
|
+// String mainSql = "INSERT INTO prodinout(pi_id,pi_inoutno,pi_class,pi_date,pi_currency,pi_rate,pi_cardcode,pi_title,pi_receivecode,pi_receivename,pi_paymentcode,pi_payment,pi_emcode,pi_emname,"
|
|
|
+// + "pi_departmentcode,pi_departmentname,pi_total,pi_invostatus,pi_invostatuscode,pi_status,pi_statuscode,pi_recordman,pi_recorddate,pi_auditman,pi_auditdate,pi_updateman,pi_updatedate,pi_printstatus,pi_printstatuscode,pi_whcode,pi_whname,pi_sendstatus) "
|
|
|
+// + "SELECT '" + purcCheckinId + "','" + purcCheckinCode + "','采购验收单',SYSDATE,'RMB','1',pu_vendcode,pu_vendname,pu_receivecode,pu_receivename,pu_paymentscode,pu_payments,'ADMIN','管理员',"
|
|
|
+// + "'B15','优软云运营组','"+ total +"','已审核','AUDITED','未过账','UNPOST','ADMIN',SYSDATE,'ADMIN',SYSDATE,'ADMIN',SYSDATE,'未打印','UNPRINT','SZ01','深圳仓','已上传' FROM PURCHASE WHERE PU_CODE = ?";
|
|
|
+// // 2.明细表数据
|
|
|
+// //取批号
|
|
|
+// String batchCode = jdbcTemplate.callForString("{call utl_rseq(?,?,?)}", "BatchCode", "/yyMMdd/5");
|
|
|
+// String detailSql = "insert into prodiodetail(pd_id,pd_piid,pd_pdno,pd_inoutno,pd_piclass,pd_accountstatus,pd_accountstatuscode,pd_ordercode,pd_orderdetno,pd_prodcode,pd_prodid,pd_whcode,pd_whname,pd_inqty,pd_orderprice,pd_taxrate,pd_batchcode,pd_invoiceName) "
|
|
|
+// + " select prodiodetail_seq.nextval," + purcCheckinId + ",rownum,'"+ purcCheckinCode +"','采购验收单','未核算','UNACCOUNT',pu_code,pd_detno,pd_prodcode,pd_prodid,'SZ01','深圳仓',pd_qty,pd_price,'13','"+batchCode+"',pd_invoiceName from purchase left join purchaseDetail on pu_id = pd_puid where pu_code = ?";
|
|
|
+//
|
|
|
+// jdbcTemplate.execute(mainSql, purchaseCode);
|
|
|
+// jdbcTemplate.execute(detailSql, purchaseCode);
|
|
|
+// resultMap.put("batchCode", batchCode);
|
|
|
+// resultMap.put("inoutno", purcCheckinCode);
|
|
|
+// String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
+// "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '采购验收单生成成功')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// return resultMap;
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成销售订单
|
|
|
+// * @param order
|
|
|
+// * @param saleCode
|
|
|
+// */
|
|
|
+// private void generateSale(Order order,String saleCode) {
|
|
|
+// int saleId = jdbcTemplate.getInt("SELECT SALE_SEQ.NEXTVAL FROM DUAL");
|
|
|
+// //客户资料
|
|
|
+// Customer customer = generateCustomer(order);
|
|
|
+// if(ObjectUtils.isEmpty(customer)){
|
|
|
+// String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
+// "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '失败', sysdate,'', '销售订单生成失败,没有客户资料')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// //销售订单主表
|
|
|
+// String insertSaleSql = "INSERT INTO SALE(SA_ID,SA_CODE,SA_DATE,SA_KIND,SA_CURRENCY,SA_RATE,SA_CUSTID,SA_CUSTCODE,SA_CUSTNAME,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_need3,SA_NEED2) "
|
|
|
+// + "VALUES(?,?,SYSDATE,'代运营订单','RMB','1',?,?,?,?,?,'PC31','CBD(款到发货)','ADMIN','管理员','B15','优软云运营组',?,?,'已审核','AUDITED','ADMIN',SYSDATE,'ADMIN',SYSDATE,?,?)";
|
|
|
+// //销售订单明细表
|
|
|
+// String insertDetailSql = "INSERT INTO SALEDETAIL(SD_ID, SD_SAID, SD_CODE, SD_DETNO, SD_PRODID, SD_PRODCODE, SD_QTY, SD_PRICE, SD_TAXRATE, SD_DELIVERY,sd_invoiceName) "
|
|
|
+// + "SELECT SALEDETAIL_SEQ.NEXTVAL,'"+saleId+"','"+saleCode+"',pd_detno,pd_prodid,pd_prodcode,pd_qty,pd_price,pd_rate,pd_delivery,pd_invoiceName FROM PURCHASE LEFT JOIN PURCHASEDETAIL ON PU_ID = PD_PUID WHERE PU_REFCODE = '"+saleCode+"'";
|
|
|
+//
|
|
|
+// jdbcTemplate.execute(insertSaleSql, saleId, saleCode, customer.getCu_id(), customer.getCu_code(), customer.getCu_name(), customer.getCu_arcode(), customer.getCu_arname(),
|
|
|
+// order.getOrderDeliveryAddr().getDeliveryAddress(), order.getCode(), order.getBuyerName(), order.getBuyerMobile());
|
|
|
+// jdbcTemplate.execute(insertDetailSql);
|
|
|
+// String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
+// "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '销售订单生成成功')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成客户资料
|
|
|
+// */
|
|
|
+// private Customer generateCustomer(Order order) {
|
|
|
+// Customer customer = null;
|
|
|
+// if (order.getEnuu() == null || order.getEnuu() == 0) {
|
|
|
+// OrderInvoice orderInvoice = order.getOrderInvoice();
|
|
|
+// if (ObjectUtils.isEmpty(orderInvoice)) {
|
|
|
+// //虚拟客户
|
|
|
+// customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_CODE = ?", Customer.class, "C0023");
|
|
|
+// return customer;
|
|
|
+// }else {
|
|
|
+// customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_NAME = ? AND CU_BUSINESSCODE = ?", Customer.class, orderInvoice.getName(), orderInvoice.getIdentityNum());
|
|
|
+// if (!ObjectUtils.isEmpty(customer)){
|
|
|
+// return customer;
|
|
|
+// }else {
|
|
|
+// int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
|
|
|
+// String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
|
|
|
+// String insertCustomerSql = "insert into customer(cu_id,cu_code,cu_name,cu_shortname,cu_businesscode,cu_uu,cu_arcode,cu_arname,cu_paymentscode,cu_payments,cu_sellercode,cu_sellername,cu_servicecode,"
|
|
|
+// + "cu_servicename,cu_kind,cu_agenttype,cu_cop,cu_enablecredit,cu_shipment,cu_email,cu_tel,cu_contact,cu_mobile,cu_recordman,cu_recorddate,cu_auditman,cu_auditdate,cu_auditstatus,cu_auditstatuscode)"
|
|
|
+// + "values(" + id + ",'" + customerCode + "','" + orderInvoice.getName() + "','" + orderInvoice.getName() + "','" + orderInvoice.getIdentityNum() + "',null,'"+customerCode+"','"+orderInvoice.getName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
|
|
|
+// + "'普通客户','普通客户','深圳怡海能达','否','快递',null,null,null,null,'ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
|
|
|
+// jdbcTemplate.execute(insertCustomerSql);
|
|
|
+// customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_ID = ?", Customer.class, id);
|
|
|
+// return customer;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }else {
|
|
|
+// customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_UU = ? and nvl(cu_uu,' ') <> 0 and CU_AUDITSTATUS = '已审核'",
|
|
|
+// Customer.class, order.getEnuu());
|
|
|
+// if (ObjectUtils.isEmpty(customer)) {
|
|
|
+// customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_NAME = ? and CU_AUDITSTATUS = '已审核'",
|
|
|
+// Customer.class, order.getBuyerEnName());
|
|
|
+// if (ObjectUtils.isEmpty(customer)) {
|
|
|
+// //未找到对应的客户资料,新建一个
|
|
|
+// int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
|
|
|
+// String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
|
|
|
+// //营业执照号
|
|
|
+// String identityNum = "";
|
|
|
+// OrderInvoice orderInvoice = order.getOrderInvoice();
|
|
|
+// if (!ObjectUtils.isEmpty(orderInvoice)) {
|
|
|
+// identityNum = orderInvoice.getIdentityNum();
|
|
|
+// }
|
|
|
+// String insertCustomerSql = "insert into customer(cu_id,cu_code,cu_name,cu_shortname,cu_businesscode,cu_uu,cu_arcode,cu_arname,cu_paymentscode,cu_payments,cu_sellercode,cu_sellername,cu_servicecode,"
|
|
|
+// + "cu_servicename,cu_kind,cu_agenttype,cu_cop,cu_enablecredit,cu_shipment,cu_email,cu_tel,cu_contact,cu_mobile,cu_recordman,cu_recorddate,cu_auditman,cu_auditdate,cu_auditstatus,cu_auditstatuscode)"
|
|
|
+// + "values(" + id + ",'" + customerCode + "','" + order.getBuyerEnName() + "','" + order.getBuyerEnName() + "','" + identityNum + "','" + order.getEnuu() + "','"+customerCode+"','"+order.getBuyerEnName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
|
|
|
+// + "'普通客户','普通客户','深圳怡海能达','否','快递','" + order.getBuyerEmail() + "','" + order.getBuyerMobile() + "','" + order.getBuyerName() + "','" + order.getBuyerMobile() + "','ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
|
|
|
+// jdbcTemplate.execute(insertCustomerSql);
|
|
|
+// customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_ID = ?", Customer.class, id);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return customer;
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成采购订单
|
|
|
+// * @param order
|
|
|
+// */
|
|
|
+// private boolean generatePurchase(Order order,String purchaseCode, String saleCode) {
|
|
|
+// int purchaseId = jdbcTemplate.getInt("select purchase_seq.nextval from dual");
|
|
|
+// String insertMainSql = "insert into purchase(pu_id,pu_code,pu_date,pu_kind,pu_currency,pu_rate,pu_refcode,pu_vendcode,pu_vendname,pu_receivecode,pu_receivename,pu_vendoruu,"
|
|
|
+// + "pu_paymentscode,pu_payments,pu_buyercode,pu_buyername,pu_departmentcode,pu_departmentname,pu_shipaddresscode,pu_pocode,pu_status,pu_statuscode,"
|
|
|
+// + "pu_recordman,pu_indate,pu_auditman,pu_auditdate,pu_getprice,pu_isadvance,PU_SENDSTATUS) values(?,?,sysdate,'代运营订单','RMB','1',?,?,?,?,?,?,?,?,'ADMIN','管理员','B15','优软云运营组',?,?,'已审核','AUDITED','ADMIN',sysdate,'ADMIN',sysdate,'0','unadvance','已上传')";
|
|
|
+// //供应商资料生成逻辑
|
|
|
+// if (order.getErpEnuu() == null || order.getErpEnuu() == 0) {
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// Vendor vendor = getVendorByUUOrName(order.getCode(), order.getErpEnuu());
|
|
|
+// if (null == vendor) {
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// List<OrderProduct> productList = order.getOrderProduct();
|
|
|
+// List<String> insertDetailSqlList = new ArrayList<>(productList.size());
|
|
|
+// for (int i = 0, len = productList.size(); i < len; i++) {
|
|
|
+// OrderProduct product = productList.get(i);
|
|
|
+// String prodCode = "";
|
|
|
+// Integer prodId = null;
|
|
|
+// //物料生成逻辑
|
|
|
+// Map<String, Object> productMap = generateProduct(product, order.getCode(), vendor);
|
|
|
+// if (!CollectionUtils.isEmpty(productMap)) {
|
|
|
+// prodCode = String.valueOf(productMap.get("prodCode"));
|
|
|
+// prodId = Integer.valueOf(String.valueOf(productMap.get("prodId")));
|
|
|
+// }else {
|
|
|
+// String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
+// "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '失败', sysdate,'', '采购订单生成失败,没有物料资料')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// String insertDetailSql = "insert into PurchaseDetail(pd_id,pd_puid,pd_detno,pd_code,pd_prodcode,pd_prodid,pd_qty,pd_price,pd_rate,pd_delivery,pd_invoiceName) "
|
|
|
+// + " values(PurchaseDetail_seq.nextval,"+ purchaseId +","+ (i+1) +",'"+ purchaseCode +"','"+ prodCode +"',"+prodId+",'"+ product.getAmount() +"','"+ product.getUnitPrice() +"','13',sysdate+"+product.getMaxDelivery()+",'"+product.getInvoiceName()+"')";
|
|
|
+// insertDetailSqlList.add(insertDetailSql);
|
|
|
+// }
|
|
|
+//
|
|
|
+// jdbcTemplate.execute(insertMainSql, purchaseId, purchaseCode, saleCode, vendor.getVe_code(), vendor.getVe_name(), vendor.getVe_apvendcode(), vendor.getVe_apvendname(), vendor.getVe_uu(),
|
|
|
+// vendor.getVe_paymentcode(), vendor.getVe_payment(), order.getOrderDeliveryAddr().getDeliveryAddress(), order.getCode());
|
|
|
+// jdbcTemplate.batchExecute(insertDetailSqlList);
|
|
|
+// String sendStatus = jdbcTemplate.getString("SELECT PU_SENDSTATUS FROM PURCHASE WHERE PU_ID = ?", purchaseId);
|
|
|
+// LOGGER.info("生成的采购订单id={},上传状态={}", purchaseId, sendStatus);
|
|
|
+// jdbcTemplate.execute("UPDATE PURCHASE SET PU_SENDSTATUS = '已上传' WHERE PU_ID = ?", purchaseId);
|
|
|
+// String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
+// "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '采购订单生成成功')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// return true;
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成物料资料
|
|
|
+// * @param product
|
|
|
+// * @param orderCode
|
|
|
+// * @param vendor
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// private Map<String, Object> generateProduct(OrderProduct product, String orderCode, Vendor vendor){
|
|
|
+// Map<String, Object> productMap = new HashMap<>(2);
|
|
|
+// productMap = jdbcTemplate.queryForMap("SELECT PV_PRODCODE AS \"prodCode\",PV_PRODID AS \"prodId\" FROM PRODUCTVENDOR WHERE PV_VENDPRODCODE = ? AND PV_VENDCODE = ?", product.getMaterialCode(), vendor.getVe_code());
|
|
|
+// if (!CollectionUtils.isEmpty(productMap)) {
|
|
|
+// return productMap;
|
|
|
+// }else {
|
|
|
+// int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM PRODUCT WHERE PR_ORISPECCODE = ? AND PR_BRAND = ?", product.getModel(), product.getBrand());
|
|
|
+// if (count > 1) {
|
|
|
+// //不生成订单并生成日志
|
|
|
+// String logOrderSql = "INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) "
|
|
|
+// + "VALUES(LOGORDER_SEQ.NEXTVAL,'" + orderCode + "', '失败', SYSDATE, null, '根据平台订单物料的型号+品牌未在物料资料找到唯一对照关系')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// return null;
|
|
|
+// }else if (count == 1) {
|
|
|
+// //返回物料信息
|
|
|
+// productMap = jdbcTemplate.queryForMap("SELECT PR_CODE AS \"prodCode\",PR_ID as \"prodId\" FROM PRODUCT WHERE PR_ORISPECCODE = ? AND PR_BRAND = ?", product.getModel(), product.getBrand());
|
|
|
+// //生成供应商物料对照关系
|
|
|
+// String insertProductVendorSql = "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, ?, ?, ?, ?, ?, ?, ?, ?)";
|
|
|
+// jdbcTemplate.execute(insertProductVendorSql, productMap.get("prodId"), vendor.getVe_id(), vendor.getVe_code(), product.getMaterialCode(), product.getSpec(), product.getUnit(), vendor.getVe_name(), productMap.get("prodCode"), product.getMpq());
|
|
|
+// }else if (count == 0) {
|
|
|
+// String code = "";
|
|
|
+// if (StringUtils.isEmpty(product.getMaterialCode())) {
|
|
|
+// String logOrderSql = "INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) "
|
|
|
+// + "VALUES(LOGORDER_SEQ.NEXTVAL,'" + orderCode + "', '失败', SYSDATE, null, '从平台获取到的产品信息uas物料编号为空')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// return null;
|
|
|
+// }else {
|
|
|
+// 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_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());
|
|
|
+// productMap = new HashMap<>(2);
|
|
|
+// productMap.put("prodCode", code);
|
|
|
+// productMap.put("prodId", id);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return productMap;
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 获取供应商资料
|
|
|
+// * @param enUU
|
|
|
+// */
|
|
|
+// private Vendor getVendorByUUOrName(String orderCode, Integer enUU){
|
|
|
+// // 收到的供应商UU为优软商城时,默认转为怡海能达
|
|
|
+// if (enUU == 10042875) {
|
|
|
+// Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_code = 'YT4604'", Vendor.class);
|
|
|
+// return vendor;
|
|
|
+// }
|
|
|
+// Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_uu = ? and rownum = 1", Vendor.class, enUU);
|
|
|
+// if (!ObjectUtils.isEmpty(vendor)) {
|
|
|
+// return vendor;
|
|
|
+// }else {
|
|
|
+// //记录日志
|
|
|
+// String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
|
|
|
+// "values(LOGORDER_SEQ.NEXTVAL,'" + orderCode + "', '失败', sysdate, null, '未找到对应的供应商资料!')";
|
|
|
+// jdbcTemplate.execute(logOrderSql);
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 取销售订单数据
|
|
|
+// * @param requestURL
|
|
|
+// * @param vendUU
|
|
|
+// * @param updateTime
|
|
|
+// * @param pageSize
|
|
|
+// * @param pageNumber
|
|
|
+// * @return
|
|
|
+// * @throws NoSuchAlgorithmException
|
|
|
+// * @throws InvalidKeyException
|
|
|
+// * @throws UnsupportedEncodingException
|
|
|
+// */
|
|
|
+// private OrdersInfo getOrdersByUU(String requestURL, String vendUU, String vendAccessSecret, Long updateTime, int pageSize, int pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
+// String paramStr = "secretId=" + vendUU + "&"+ "materialCode=" + "" + "&" + "updateTime=" + updateTime + "&" + "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
|
|
|
+// //进行签名
|
|
|
+// String signatureValue = OpenApiSignUtil.sign(paramStr,vendAccessSecret);
|
|
|
+// 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);
|
|
|
+// OrdersInfo ordersInfo = JSON.parseObject(result, OrdersInfo.class);
|
|
|
+// return ordersInfo;
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// @TaskMapping(title = "生成客户资料", fixedDelay = 60000)
|
|
|
+// public void downloadCustomer() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
|
|
|
+//// Master master = ContextHolder.getMaster();
|
|
|
+//// if ("test".equalsIgnoreCase(master.getEnv())) {
|
|
|
+//// BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
|
|
|
+//// }
|
|
|
+// String url = BASEPATH_TRADE + "/openapi/trade/order/page/get?";
|
|
|
+// Long updateTime = System.currentTimeMillis() - 24 * 60 * 60 * 1000;
|
|
|
+// //获取需要生成数据的供应商
|
|
|
+// List<Map<String, Object>> vendorList = jdbcTemplate.queryForList("SELECT VE_UU,VE_ACCESSSECRET FROM VENDOR WHERE VE_ENABLEMALL = '1'");
|
|
|
+// if (CollectionUtils.isEmpty(vendorList)) {
|
|
|
+// LOGGER.error("没有启用的供应商");
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// for (Map<String, Object> map : vendorList){
|
|
|
+// Object vendUU = map.get("VE_UU"), vendAccessSecret = map.get("VE_ACCESSSECRET");
|
|
|
+// OrdersInfo ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, 1);
|
|
|
+// PagingInfo pageInfo = ordersInfo.getPagingInfo();
|
|
|
+// if (!ObjectUtils.isEmpty(pageInfo) && pageInfo.getTotalCount() > 0) {
|
|
|
+// int totalCount = pageInfo.getTotalCount();
|
|
|
+// if (totalCount > 30) {
|
|
|
+// //生成单据
|
|
|
+// createCustomer(ordersInfo.getOrder());
|
|
|
+// //获取额外部分的数据
|
|
|
+// int endCount = Double.valueOf(Math.ceil(totalCount / 30.0)).intValue();
|
|
|
+// for (int i = 2; i <= endCount; i++) {
|
|
|
+// ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, i);
|
|
|
+// createCustomer(ordersInfo.getOrder());
|
|
|
+// }
|
|
|
+// }else {
|
|
|
+// //生成单据
|
|
|
+// createCustomer(ordersInfo.getOrder());
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// private void createCustomer(List<Order> orderList) {
|
|
|
+// for (Order order : orderList) {
|
|
|
+// //此单是否已下载过
|
|
|
+// int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
|
|
|
+// if (count == 0) {
|
|
|
+// //取已发货状态的订单生成
|
|
|
+// if (order.getStatus() != 141000 && order.getStatus() != 141010 && order.getStatus() != 141095) {
|
|
|
+// if (order.getEnuu() != null && order.getEnuu() != 0) {
|
|
|
+// Customer customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_UU = ? and nvl(cu_uu,' ') <> 0 and CU_AUDITSTATUS = '已审核'", Customer.class, order.getEnuu());
|
|
|
+// if (ObjectUtils.isEmpty(customer)) {
|
|
|
+// customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_NAME = ? and CU_AUDITSTATUS = '已审核'", Customer.class, order.getBuyerEnName());
|
|
|
+// if (ObjectUtils.isEmpty(customer)) {
|
|
|
+// //未找到对应的客户资料,新建一个
|
|
|
+// int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
|
|
|
+// String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
|
|
|
+// //营业执照号
|
|
|
+// String identityNum = "";
|
|
|
+// OrderInvoice orderInvoice = order.getOrderInvoice();
|
|
|
+// if (!ObjectUtils.isEmpty(orderInvoice)) {
|
|
|
+// identityNum = orderInvoice.getIdentityNum();
|
|
|
+// }
|
|
|
+// String insertCustomerSql = "insert into customer(cu_id,cu_code,cu_name,cu_shortname,cu_businesscode,cu_uu,cu_arcode,cu_arname,cu_paymentscode,cu_payments,cu_sellercode,cu_sellername,cu_servicecode,"
|
|
|
+// + "cu_servicename,cu_kind,cu_agenttype,cu_cop,cu_enablecredit,cu_shipment,cu_email,cu_tel,cu_contact,cu_mobile,cu_recordman,cu_recorddate,cu_auditman,cu_auditdate,cu_auditstatus,cu_auditstatuscode)"
|
|
|
+// + "values(" + id + ",'" + customerCode + "','" + order.getBuyerEnName() + "','" + order.getBuyerEnName() + "','" + identityNum + "','" + order.getEnuu() + "','"+customerCode+"','"+order.getBuyerEnName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
|
|
|
+// + "'普通客户','普通客户','深圳怡海能达','否','快递','" + order.getBuyerEmail() + "','" + order.getBuyerMobile() + "','" + order.getBuyerName() + "','" + order.getBuyerMobile() + "','ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
|
|
|
+// jdbcTemplate.execute(insertCustomerSql);
|
|
|
+// LOGGER.info("生成客户资料,code={},id={}", customerCode, id);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
}
|