洞车系统常见问题解决指南

news2024/10/5 19:19:13

洞车常见问题解决指南

    • 1.研发脚本处理问题
      • 1.1 WMS出库单无法审核
      • 1.2 OMS入库单无法提交,提示更新中心库存失败
      • 1.3 当出现OMS下发成功WMS/TMS/DMS还没有任务的情况时处理方案
      • 1.4 调度波次生成或者添加任务系统异常
      • 1.5 东鹏出库单部分出库回传之后要求重传
      • 1.6 更新订单商品分类
      • 1.7 中心库存查询
      • 1.8 运输单全部任务已经签收,但是运输单仍是在途状态
    • 2.常用查询脚本
      • 2.1 查看主数据,导出主数据
      • 2.2 导出三级分类
      • 2.3 查询回传失败脚本
      • 2.4 查询订单商品行号重复脚本
      • 2.5 查询重复商品分类
      • 2.6 查询客户当日库存快照
    • 3 程序修复类
      • 3.1修复主数据
      • 3.1.1修复主数据的商品分类
      • 3.2 修改主数据的长宽高体积重量并下发
      • 3.3 订单签收状态重传

以下记录问题为常见的需要修改数据库才能解决的问题

1.研发脚本处理问题

1.1 WMS出库单无法审核

在这里插入图片描述
处理脚本

update wm_so_header set IS_SCHEDULE = 'N'  where SO_NO = 'SO单号'

1.2 OMS入库单无法提交,提示更新中心库存失败

导致这类问题的原因是中心库存的计划出库存大于在库库存
在这里插入图片描述
处理脚本,查看此账户是否存在计划出数量大于在库库存,查询脚本为:

select * from eo_virtual_inv_item where EOVI_OWNER_CODE = '客户编码' and  EOVI_QTY < P_OUT_QTY

EOVI_QTY :在库库存
P_OUT_QTY:计划出库存

1.3 当出现OMS下发成功WMS/TMS/DMS还没有任务的情况时处理方案

  • 第一步,需要将任务处理为新增状态
    在这里插入图片描述
    执行脚本:
update jrwl_oms2c.eo_c_work_order set EOWO_ISSUE_STATUS = null,EOWO_STATUS_CODE = '00' where EOWO_ORDER_NO = '物联单号';
  • 第二步,删除TMS的订单
select * from et_order where ETOR_EXTERNAL_ORDER_NO = '物联单号'; ## 选中之后手动删除
delete et_order where ETOR_EXTERNAL_ORDER_NO = '物联单号';
  • 第三步,操作下发
    在这里插入图片描述
    注意TMS和DMS的任务都需要删除对应的系统的订单,DMS订单,TMS订单

造成此问题的根本原因是:商品分类重复导致执行一下SQL报错
单行记录返回多行

SELECT
	(
	CASE
			( SELECT ( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) IS NULL FROM DUAL ) 
			WHEN 1 THEN
			( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =( SELECT EBMG_PARENT_PM_CODE FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) ) ELSE ( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) 
		END 
		) AS EBMG_STANDARD_HOURS 
	FROM
		DUALSELECT (
		CASE
				( SELECT ( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) IS NULL FROM DUAL ) 
				WHEN 1 THEN
				( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =( SELECT EBMG_PARENT_PM_CODE FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) ) ELSE ( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) 
			END 
			) AS EBMG_STANDARD_HOURS 
		FROM
			DUALSELECT (
			CASE
					( SELECT ( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) IS NULL FROM DUAL ) 
					WHEN 1 THEN
					( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =( SELECT EBMG_PARENT_PM_CODE FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) ) ELSE ( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) 
				END 
				) AS EBMG_STANDARD_HOURS 
			FROM
				DUALSELECT (
				CASE
						( SELECT ( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) IS NULL FROM DUAL ) 
						WHEN 1 THEN
						( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =( SELECT EBMG_PARENT_PM_CODE FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) ) ELSE ( SELECT EBMG_STANDARD_HOURS FROM EB_MATERIAL_GROUP WHERE EBMG_CODE =? ) 
					END 
					) AS EBMG_STANDARD_HOURS 
			FROM
DUAL

1.4 调度波次生成或者添加任务系统异常

问题原因:地址里面有特殊字符,需要手动的将收货地址中的特殊字符去掉,例如空格,引号等

select * from et_task where ETTA_SO_NO = 'YXSA23042400007' and  ETTA_ETOR_FROM_EBRG_ADDRESS like '%"%';
select * from et_task where ETTA_ETOR_TO_EBRG_ADDRESS like '%"%'

ETTA_ETOR_FROM_EBRG_ADDRESS :发货地址
ETTA_ETOR_TO_EBRG_ADDRESS :收货地址

1.5 东鹏出库单部分出库回传之后要求重传

按照常理订单出入库回传之后不可再次回传,但是有些时候仓库要求帮助回传,执行方案如下

  • 1、根据需要回传的数量更新订单的出库数量
    在这里插入图片描述
    处理脚本为:
select * from eo_c_order_item where eooi_order_no = '物联单行';

更新 EOOI_ALLOCATED_QTY
在这里插入图片描述

将实发数量修改为需要回传的数量
千万注意:由于东鹏回传数量是累加的,因此这里的面数据需要修改为需要回传的数量,回传完成之后,EOOI_ALLOCATED_QTY需要修改为原来的值,如果有多条数据,但是不用回传的,可以暂时将无需回传的数据rec_status=1,等待回传完成之后,在修改rec_status=0

  • 第二步,操作回传

总订单查询->接口重传
在这里插入图片描述

1.6 更新订单商品分类

先更新订单商品分类编码
在更新分类名称

# 更新编码
update eo_c_order_item eooi set  
EOOI_ITEM_TYPE_CODE =  (select CDCM_TYPE_CODE from cd_common_material where cdcm_material_no = eooi_code limit 1) 
where eooi.CREATE_TIME>'2023-04-27'
select 
eooi.EOOI_ITEM_TYPE_CODE,
eooi.EOOI_ITEM_TYPE_NAME
from eo_c_order_item eooi
left join EB_MATERIAL_GROUP emg on eooi.EOOI_ITEM_TYPE_CODE = emg.EBMG_CODE
where eooi.CREATE_TIME>'2023-04-27' and emg.EBMG_CODE is null;

# 更新名称
update eo_c_order_item eooi set  
EOOI_ITEM_TYPE_NAME =  (select EBMG_NAME_CN from eb_material_group where EBMG_CODE = eooi.EOOI_ITEM_TYPE_CODE) 
where eooi.CREATE_TIME>'2023-04-27'

1.7 中心库存查询

select * from eo_virtual_inv_item where eovi_sku_code = 'jr000027853077' and color = ''

1.8 运输单全部任务已经签收,但是运输单仍是在途状态

select * from et_dispatch_order where ETDO_NO = 'T2305020000006';

需要修改运输单状态30->60

2.常用查询脚本

2.1 查看主数据,导出主数据

select 
jdo.code 居然商品编码,
jdo.string64 客户商品编码,
jdo.name 商品名称,
jdo.string66 客户组,
jdo.string65 品牌,
jdo.string22 是否定制品,
jdo.string17 大类编码,
jdo.string12 大类名称,
jdo.string18 中类编码,
jdo.string8 中类名称,
jdo.string19 小类编码,
jdo.string67 小类名称,
jdo.double1 长,
ebmg.EBMG_SUBSTR1 品类长推荐,
jdo.double2 宽,
ebmg.EBMG_SUBSTR2 品类宽推荐,
jdo.double3 高,
ebmg.EBMG_SUBSTR3 品类高推荐,
jdo.double10 体积,
ebmg.EBMG_SUBSTR4 品类体积推荐,
jdo.double4 重量,
jdo.double5 包装长,
jdo.double6 包装宽,
jdo.double7 包装高,
jdo.double8 包装体积,
jdo.double9 包装重量,
(select qty from jrwl_wms.wm_inv_lot_loc where SKU_CODE = `code` and qty>0 limit 1) 库存
from jr_data_object jdo
left join jr_eb_material_group ebmg on ebmg.EBMG_CODE = jdo.string19
where OBJECT_TYPE = 'SP' and DEL_FLAG = 0 and DATA_DISABLE = 0
# 新增三级分类条件
-- and ( ABS(ebmg.EBMG_SUBSTR1 + 0 -jdo.double1) > (ebmg.EBMG_SUBSTR1 + 0)*0.2 # 长宽高
-- or ABS(ebmg.EBMG_SUBSTR2 + 0 -jdo.double2) > (ebmg.EBMG_SUBSTR2 + 0)*0.2 # 长宽高
-- or ABS(ebmg.EBMG_SUBSTR3 + 0 -jdo.double3) > (ebmg.EBMG_SUBSTR3 + 0)*0.2 # 长宽高
-- or ABS(ebmg.EBMG_SUBSTR4 + 0 -jdo.double4) > (ebmg.EBMG_SUBSTR4 + 0)*0.2 # 体积)
-- or jdo.double1 is null or jdo.double1 =1
-- or jdo.double2 is null or jdo.double2 =1
-- or jdo.double3 is null or jdo.double3 =1
-- or jdo.double4 is null or jdo.double4 =1
-- )
-- limit  10

AND JDO.integer1 = 1
-- and code = 'jr000019719560';

2.2 导出三级分类

SELECT
	one.EBMG_CODE '一级分类编码',
	one.EBMG_NAME_CN '一级分类名称',
	two.EBMG_CODE '二级分类编码',
	two.EBMG_NAME_CN '二级分类名称',
	three.EBMG_CODE '三级分类编码',
	three.EBMG_NAME_CN '三级分类名称',
	IFNULL(three.EBMG_SUBSTR1,0) '品类长推荐',
	IFNULL(three.EBMG_SUBSTR2,0) '品类宽推荐',
	IFNULL(three.EBMG_SUBSTR3,0) '品类高推荐',
	IFNULL(three.EBMG_SUBSTR4,0) '品类体积推荐' 
FROM
	( SELECT * FROM jr_eb_material_group WHERE EBMG_LEVEL = 1 AND REC_STATUS < 1 AND EBMG_STATE = '0' ) one
	LEFT JOIN ( SELECT * FROM jr_eb_material_group WHERE EBMG_LEVEL = 2 AND REC_STATUS < 1 AND EBMG_STATE = '0' ) two ON one.EBMG_CODE = two.EBMG_PARENT_PM_CODE
	LEFT JOIN ( SELECT * FROM jr_eb_material_group WHERE EBMG_LEVEL = 3 AND REC_STATUS < 1 AND EBMG_STATE = '0' ) three ON two.EBMG_CODE = three.EBMG_PARENT_PM_CODE

2.3 查询回传失败脚本

详情可以参考报表:接口回传
在这里插入图片描述

select * from oms_interface_log where
SENDER = 'WMS'
and REMARK like '订单出库完成%'
and message not like '%成功%'
and message not like '%没有可转单据的行%'
and ORDER_NO in(
select
DISTINCT eoor.EOOR_ORDER_NO
from eo_c_order_item eooi
left join eo_c_order eoor on eoor.EOOR_ORDER_NO = eooi.EOOI_ORDER_NO
where eooi.eooi_code = 'jr000035695860' 
and eooi.REC_STATUS = 0 
and eoor.REC_STATUS = 0
and eoor.EOOR_STATUS_CODE not in ('00','500')
and eoor.EOOR_CUSTOMER_CODE = 'jr000523'
and eoor.EOOR_ORDER_TYPE_CODE in(
select EBCD_CODE from eb_code_master where EBCD_DICTIONARY_TYPE = 'OMS_NEW_OUT_ORDER_TYPE'
)
)

2.4 查询订单商品行号重复脚本

SELECT COUNT(EOOI_LINK_PM_CODE),EOOI_LINK_PM_CODE,EOOI_ORDER_NO  FROM eo_c_order_item eooi
			left join eo_c_order eoor on eoor.EOOR_ORDER_NO = eooi.EOOI_ORDER_NO
			where eoor.CREATE_TIME>'2023-01-01' and eoor.REC_STATUS = 0 and eooi.REC_STATUS = 0 and eoor.EOOR_STATUS_CODE <> '500'
			GROUP BY EOOI_LINK_PM_CODE,EOOI_ORDER_NO
			HAVING COUNT(EOOI_LINK_PM_CODE)>1

2.5 查询重复商品分类

## 查询数据
select count(*),ebmg_code from eb_material_group group by ebmg_code having count(*)>1

## 修复数据
select * from eb_material_group where ebmg_code = '0740021010';
select * from jrwl_mdm.jr_material_group limit 10;
select * from jrwl_mdm.JR_EB_MATERIAL_GROUP where EBMG_CODE = '0740021018';

2.6 查询客户当日库存快照

select * from WM_DAILY_STOCK where STOCK_DATE = '2023-04-30'
and lot_num in(
select lot_num from wm_inv_lot_att where OWNER_CODE = '客户编码'
);

3 程序修复类

3.1修复主数据

3.1.1修复主数据的商品分类

主数据分类修复,需要修复主数据的信息有

商品大类编码:string17
商品大类名称:string12
商品中类编码:string18
商品中类名称:string8
商品小类编码:string19
商品小类名称:string67
integer1默认为1标记人工修复过

命中的条件是居然商品编码jr编码,此编码全局唯一
更新表为 :jr_data_object

更新sql为:

update jr_data_object jdo set string17= '大类编码',jdo.string12 ='大类名称',jdo.string18 = '中类编码',jdo.string8 ='中类名称',jdo.string19 ='小类编码',jdo.string67 ='小类名称',integer1 = 1 where code = '商品编码'

以下是修复数据的主要代码
Mdm修复商品主类

@Slf4j
public class Mdm {
    // 读取excel
    public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException {
        List<MdmSku> mdmSkus = readDatas();
        Connection connection = DataSource.getConnection("jdbc:mysql://地址:3306/数据库", "账号", "密码");
        ExecutorService executorService = Executors.newFixedThreadPool(20);

        String sql = "update jr_data_object jdo set string17= '大类编码',jdo.string12 ='大类名称',jdo.string18 = '中类编码',jdo.string8 ='中类名称',jdo.string19 ='小类编码',jdo.string67 ='小类名称',integer1 = 1 where code = '商品编码'";
        mdmSkus.forEach(sku->{
            String replace = sql.replace("商品编码", sku.getCode())
                    .replace("大类编码", sku.getTypeName1())
                    .replace("大类名称", sku.getTypeCode1())
                    .replace("中类编码", sku.getTypeName2())
                    .replace("中类名称", sku.getTypeCode2())
                    .replace("小类编码", sku.getTypeName3())
                    .replace("小类名称", sku.getTypeCode3());

            // log.info("执行SQL为:{}",replace);
            executorService.submit(new MdmSkuUpdateTread(connection,replace,sku.getCode()));
        });
        executorService.shutdown();
    }

    private static List<MdmSku> readDatas(){
        List<MdmSku> list = new ArrayList<>();
        Workbook workbook = null;
        try {
            workbook = new XSSFWorkbook(new FileInputStream("C:\\Work\\2023\\04\\26\\分类为其他的数据-4-25.xlsx"));
            Sheet updateSet = workbook.getSheet("更新数据");
            // 读取最总行数
            int lastRowNum = updateSet.getLastRowNum();
            for (int i=1;i<lastRowNum;i++){
                Row row = updateSet.getRow(i);
                MdmSku sku = new MdmSku();
                Cell cell0 = row.getCell(0);
                Cell cell1 = row.getCell(1);
                Cell cell2 = row.getCell(2);
                Cell cell3 = row.getCell(3);
                Cell cell4 = row.getCell(4);
                Cell cell5 = row.getCell(5);
                Cell cell6 = row.getCell(6);
                sku.setCode(cell0.getStringCellValue());
                sku.setTypeCode1(cell1.getStringCellValue());
                sku.setTypeName1(cell2.getStringCellValue());
                sku.setTypeCode2(cell3.getStringCellValue());
                sku.setTypeName2(cell4.getStringCellValue());
                sku.setTypeCode3(cell5.getStringCellValue());
                sku.setTypeName3(cell6.getStringCellValue());
                list.add(sku);
            }
            return list;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

读取excel的格式一定要按照一下顺序排列,从第0行开始读取
在这里插入图片描述
为了加快执行效率,以上代码使用多线程编写,线程类MdmSkuUpdateTread
主要的功能实在更新主数据的同时,下发的各个业务系统中去

@Slf4j
public class MdmSkuUpdateTread implements Runnable{
    private Connection connection;
    private String sql;
    private String code;
    
    public MdmSkuUpdateTread(Connection connection, String sql,String code) {
        this.connection = connection;
        this.sql = sql;
        this.code = code;
    }
    @Override
    public void run() {
        try {
            Statement statement = connection.createStatement();
            int update = statement.executeUpdate(sql);

            if(update < 1){
                log.error("sql执行失败:{}",sql);
            }else{
                // 请求数据;
                String querySql = "select id from jr_data_object where code = 'JRCODE' limit 1";
                ResultSet jrcode = statement.executeQuery(querySql.replace("JRCODE", code));
                while (jrcode.next()){
                    long id = jrcode.getLong("ID");

                    // 请求mdm下发;
                    // log.info("得到信息为:{}",id);
                    String url = "https://www.jrlog.cn/module-mdmweb/mdmweb/JrDataObject/sendData.shtml";

                    String content = "dataTypeId=DATAID&sendType=1&sendObj=&dataType=SP";

                    Map<String,String> headers = new HashMap<>();
                    headers.put("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
                    headers.put("Cookie","JSESSIONID=416871FE4424DF396B17A070496CE1A4; _sna=U1FRUVVRUFRVXVZdVlJTUlBHUVZXUVFHVVRUUVxWXFZHVVRUR0A7Cg0IO0BH");
                    headers.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Edg/100.0.1185.50");
                    String payload = content.replace("DATAID",id+"");
                    log.info("请求参数为:{}",payload);
                    String post = null;
                    try {
                        post = HttpURLConnectionUtil.post(url, payload, headers);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    log.info("请求结果为:{}",post);
                }
            }
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

需要注意的是这里的Cookie:需要根据实际替换

商品信息类 MdmSku

@Data
public class MdmSku {

    private String code;

    private String typeCode1;

    private String typeName1;

    private String typeCode2;

    private String typeName2;

    private String typeCode3;

    private String typeName3;

    private double length;

    private double width;

    private double hight;

    private double weight;

    private double volume;
}

3.2 修改主数据的长宽高体积重量并下发

和3.1的类似

@Slf4j
public class MdmVolumeWeight {

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        List<MdmSku> mdmSkus = readDatas();
        Connection connection = DataSource.getConnection("jdbc:mysql://地址:3306/数据库", "账号", "密码");
        ExecutorService executorService = Executors.newFixedThreadPool(20);
        // String sql = "update jr_data_object jdo set string17= '大类编码',jdo.string12 ='大类名称',jdo.string18 = '中类编码',jdo.string8 ='中类名称',jdo.string19 ='小类编码',jdo.string67 ='小类名称',integer1 = 1 where code = '商品编码'";

        String sql = "update jr_data_object jdo set  " +
                "jdo.double1 =长 , " +
                "jdo.double2 =宽, " +
                "jdo.double3 =高, " +
                "jdo.double10 =体积," +
                "jdo.double4 =重量," +
                "jdo.double5 =长," +
                "jdo.double6 =宽," +
                "jdo.double7 =高," +
                "jdo.double8 =体积," +
                "jdo.double9 =重量," +
                "jdo.string33='1'" +
                "where jdo.code='商品编码'";

        mdmSkus.forEach(sku->{
            String replace = sql.replace("商品编码", sku.getCode())
                    .replace("长", sku.getLength()+"")
                    .replace("宽", sku.getWidth()+"")
                    .replace("高", sku.getHight()+"")
                    .replace("体积", sku.getVolume()+"")
                    .replace("重量", sku.getWeight()+"");

            //log.info("执行SQL为:{}",replace);
            //log.info("");
            executorService.submit(new MdmSkuUpdateTread(connection,replace,sku.getCode()));
        });
        executorService.shutdown();

        // connection.close();
    }
    private static List<MdmSku> readDatas() {

        List<MdmSku> list = new ArrayList<>();

        Workbook workbook = null;
        try {
            workbook = new XSSFWorkbook(new FileInputStream("C:\\Work\\2023\\04\\26\\鑫德需改尺寸.xlsx"));
            Sheet updateSet = workbook.getSheet("更新数据");

            // 读取最总行数
            int lastRowNum = updateSet.getLastRowNum();

            for (int i=1;i<lastRowNum;i++){
                Row row = updateSet.getRow(i);
                MdmSku sku = new MdmSku();

                Cell cell0 = row.getCell(0);
                Cell cell1 = row.getCell(1);
                Cell cell2 = row.getCell(2);
                Cell cell3 = row.getCell(3);
                Cell cell4 = row.getCell(4);
                Cell cell5 = row.getCell(5);

                sku.setCode(cell0.getStringCellValue());
                sku.setLength(cell1.getNumericCellValue());
                sku.setWidth(cell2.getNumericCellValue());
                sku.setHight(cell3.getNumericCellValue());
                sku.setWeight(cell4.getNumericCellValue());
                sku.setVolume(cell5.getNumericCellValue());
                list.add(sku);
            }
            return list;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

excel格式要求
sheet名称:数据更新
在这里插入图片描述
更新线程类 MdmSkuUpdateTread 与3.1公用

3.3 订单签收状态重传

订单签收状态重传之前需要确认重传是否会影响到对方系统的状态,例如退货单状态是否会从已入库状态变更为已签收状态,如果没有这样的影响则可以回传;

选中需要重传单据SQL:

select ETTA_EXTERNAL_ORDER_NO from et_task where CREATE_TIME>'2023-04-06' and ETTA_CUSTOM_EBCU_NO = '客户编码' and  ETTA_STATUS = '90' and REC_STATUS = 0

主程序代码FeedBack

public class FeedBack {

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // 从数据库里面选择单据
        String sql = "select ETTA_EXTERNAL_ORDER_NO from et_task where CREATE_TIME>'2023-04-06' and ETTA_CUSTOM_EBCU_NO = 'jr000494' and  ETTA_STATUS = '90' and REC_STATUS = 0";

        Connection connection = DataSource.getConnection("jdbc:mysql://地址:3306/数据库", "账号", "密码");

        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        ResultSet resultSet = preparedStatement.executeQuery();

        ExecutorService executorService = Executors.newFixedThreadPool(1);

        while(resultSet.next()){
            String etta_external_order_no = resultSet.getString("ETTA_EXTERNAL_ORDER_NO");
            executorService.submit(new StatusFeedbackThread(etta_external_order_no,"55","订单运输任务已全部签收!"));
        }
        executorService.shutdown();
    }
}

更新线程:StatusFeedbackThread

public class StatusFeedbackThread implements Runnable{

    private String orderNo;

    private String status;

    private String label;

    public StatusFeedbackThread(String orderNo, String status, String label) {
        this.orderNo = orderNo;
        this.status = status;
        this.label = label;
    }


    @Override
    public void run() {
        String url = "https://www.jrlog.cn/module-oms2cweb/oms2cweb/eorder/eorderManager/rePushOrderStatus.shtml";

        String content = "eoorOrderNo="+orderNo+"&statusCode="+status+"&statusName="+label;
        Map<String,String> headers = new HashMap<>();
        headers.put("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
        headers.put("Cookie","JSESSIONID=B87A417F5CF2C7C852621DA357C3EAF7; _sna=U1FRUVVRUFRVXVZdVlJTUlBHUVZXUVFHVVRUUVxWXFZHVVRUR0A7Cg0IO0BH");
        headers.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 Edg/100.0.1185.50");
        // String payload = content.replace("DATAID",id+"");
        log.info("请求参数为:{}",content);
        String post = null;
        try {
            post = HttpURLConnectionUtil.post(url, content, headers);
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info("请求结果为:{}",post);
    }
}

还是一样Cookie需要修改一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring、springmvc、springboot、mybatis框架高频面试题

一、spring 1、Spring框架中的单例bean是线程安全的吗&#xff1f; 不是线程安全的&#xff0c;是这样的&#xff1a; 当多用户同时请求一个服务时&#xff0c;容器会给每一个请求分配一个线程&#xff0c;这是多个线程会并发执行该请求对应的业务逻辑&#xff08;成员方法&a…

ES索引结构升级-笔记

ES中索引的字段类型是不可修改的&#xff0c;只能是重新创建一个索引并设置好mapping&#xff0c;然后再将老索引的数据复制过去 查看老索引mapping GET /twitter/_mappings创建new索引&#xff0c;并指定mapping PUT /twitter410{"mappings": {"properties&…

金3银四结束了,回顾一下我2个月面试的公司....

金三银四结束了&#xff0c;还没有 offer 的同学不要气馁&#xff0c;该来的迟早会来。楼主从 年底 月有想法跳槽开始准备春招&#xff0c;一开始也是惨不忍睹&#xff0c;后来慢慢进入状态最近的面试基本都能走到终面&#xff0c;所以好好坚持&#xff0c;最后一定会有好结果的…

操作系统考试复习——第四章 存储器管理 4.1 4.2

存储器的层次结构&#xff1a; 存储器的多层结构&#xff1a; 存储器至少分为三级&#xff1a;CPU寄存器&#xff0c;主存和辅存。 但是一般分为6层为寄存器&#xff0c;高速缓存&#xff0c;主存储器&#xff0c;磁盘缓存&#xff0c;固定磁盘&#xff0c;可移动存储介质。…

无需重复造轮子—借助 Jetpack 组件,加速应用程序开发

简介 Android Jetpack 是谷歌官方推出的一套 Android 应用架构组件库&#xff0c;旨在为 Android 应用开发提供一种更优秀、更高效且更简单的方式。 Android Jetpack 对开发者带来了许多好处&#xff0c;以下是其中的一些&#xff1a; 提高开发效率&#xff1a;Jetpack 提供…

vue项目重复点击一个路由会报错如何解决

在新版本的vue-router中&#xff0c;重复点击同一个路由会出现以下报错 &#xff1a; 这个问题时vue-router 3.2.0版本的一个小Bug 方法有很多,比如降低路由版本(不推荐),但是推荐下面这种方式,比较简单靠谱 // 把这段代码直接粘贴到router/index.js中的Vue.use(VueRouter)之…

django:django2配置websocket

源码地址&#xff1a; https://gitee.com/liuhaizhang/django2-configuring-websockethttps://gitee.com/liuhaizhang/django2-configuring-websocket python3.9.0 django2.2.1 channels2.2.0 项目结构&#xff1a; test_websocket_django2 -chat -home -test_websocket_dja…

深度学习笔记之卷积神经网络(一)卷积函数与图像卷积操作

深度学习笔记之卷积神经网络——卷积函数 引言什么是卷积图像卷积操作 引言 从本节开始&#xff0c;将介绍卷积神经网络。本节将介绍卷积函数。 什么是卷积 卷积&#xff0c;是一种通过两个函数 f ( ⋅ ) 和 f(\cdot)和 f(⋅)和 g ( ⋅ ) g(\cdot) g(⋅)生成第三个函数 h ( …

备战花了2个月,春招3轮顺利拿下字节offer

PART1&#xff1a;个人情况简介 菜 J 一枚&#xff0c;本硕都是计算机&#xff08;普通二本&#xff09;&#xff0c;2021 届应届硕士&#xff0c;软件测试方向。个人也比较喜欢看书&#xff0c;技术书之类的都有看&#xff0c;最后下面也会推荐一些经典书籍。 先说一下春招结…

Docker--harbor私有仓库管理与部署

目录 一、本地私有仓库 搭建本地私有仓库 Docker容器的重启策略 二、Harbor 1、什么是Harbor 2、Harbor特性 3、Harbor的构成 三、Harbor部署 实验步骤 1、安装Docker-Compose服务 2、部署Harbor服务 1、下载或上传Harbor安装程序 2、修改Harbor安装的配置文件 3、…

day26_mysql

今日内容 零、 复习昨日 一、MySQL 一、引言 1.1 现有的数据存储方式有哪些&#xff1f; Java程序存储数据&#xff08;变量、对象、数组、集合&#xff09;&#xff0c;数据保存在内存中&#xff0c;属于瞬时状态存储。 文件&#xff08;File&#xff09;存储数据&#xff0c…

多款智能骑行终端齐登场,移远通信闪亮第31届中国国际自行车展览会

近年来&#xff0c;自行车、电动车市场火爆&#xff0c;随着数字化、智能化的持续深入&#xff0c;更具科技感的骑行工具受到了越来越多年轻一代的青睐。5月5-8日&#xff0c;以" 更安全、更智能、更低碳 " 为主题的第 31 届中国国际自行车展览会在上海新国际博览中心…

Java连接顺丰开放平台

今天使用Java去访问顺丰的开放平台时&#xff0c;JSON转换一直不成功&#xff0c;最终发现是 可以看到这里是 "apiResultData": "{\"success\": .........它是以 " 开头的&#xff01;&#xff01;&#xff01;如果是对象的话&#xff0c;那么…

Zookeeper初识

序 Zookeeper是什么&#xff0c;Zookeeper有什么用&#xff1f;因为在研究Zookeeper源码之后&#xff0c;就要去研究Dubbo源码&#xff0c;而Dubbo必然用到了Zookeeper&#xff0c;而我在写这篇博客时&#xff0c;我也是一个Zookeeper小白&#xff0c;我也有7年开发经验了&…

将ROS1和ROS2安装到同一个ubuntu系统中,ROS2安装

1. 本文测试环境: ubuntu:20.04,虚拟机 ROS1:noetic ROS2:foxy 2. 先说结论 ROS1 与 ROS2 共存,需要考虑三个问题: 1) 不同Ubuntu版本,有不同版本的ROS1和ROS2推荐,尽量不要任性地乱装; 2)ROS1和ROS2安装过程中,是否会出现文件“删改”的问题?目前使用下来,并…

章节1:PHP反序列化渗透与防御

章节1&#xff1a;PHP反序列化渗透与防御 1.1-PHP类与对象 类Class 一个共享相同结构和行为的对象的集合。 对象Object 类的实例 1.2-PHP Magic函数 Magic Methods https://www.php.net/__sleep 函数作用 函数作用__construct当一个对象创建时被调用__destruct当一个对象…

Linux_红帽8学习笔记分享_10(SELinux管理与防火墙)

Linux_红帽8学习笔记分享_10(SELinux管理与防火墙) 文章目录 Linux_红帽8学习笔记分享_10(**SELinux管理与防火墙**)1.Linux系统的安全机制1.1 Filesystem1.2 Service1.3 Firewall1.4 SELinux 2.SElinux理论概述3.SElinux的配置文件3.1 SELINUX参数3.2 SELINUXTYPE参数 4.查看和…

网络安全行业职位解析:如何选择适合自己的职业发展路径?

前言 网络安全行业发展迅速&#xff0c;各种职位层出不穷&#xff0c;这给刚入门的小伙伴带来了很大的困惑&#xff1a;我应该选择哪个职位&#xff1f;如何才能在这个行业立足并获得高薪工作&#xff1f;如果你也有这些疑惑&#xff0c;那么恭喜你&#xff0c;来到了正确的地…

git push 上去的文件操作

先在git 创建一个仓库&#xff0c;仓库创建好后有一个快速上手的页面 注意第一个是你的登录账号和密码这个是账号和密码这个是你这个仓库的地址 接下来在你要上传的文件右键git bash here 进入 1. 先初始化进入 git init 2.再登录和输入你的密码登录好了&#xff0c;可以再初…

Java笔记_17(异常、File)

Java笔记_17 一、异常1.1、异常体系介绍1.2、编译时异常和运行时异常1.3、异常的作用1.4、异常的处理方式1.5、捕获异常的灵魂四问1.6、异常中的常见方法1.7、抛出处理1.8、异常-练习&#xff08;键盘录入数据&#xff09;1.9、自定义异常 二、File2.1、File的概述和构造2.2、F…