当前位置:网站首页>车辆属性最近一次入库时间初始化生成sql脚本文件
车辆属性最近一次入库时间初始化生成sql脚本文件
2022-07-25 09:24:00 【孰能生巧-LWP】
package com.dst.modules.business.vehicle.workorderconfig.controller;
import com.dstcar.common.utils.poi.ExcelName;
import com.dstcar.common.utils.poi.ExcelVO;
import lombok.Data;
/**
* 车辆数据值
*
* @author yuez
* @date 2022/3/7 20:51
*/
@Data
public class VinCodeData implements ExcelVO {
@ExcelName(name = "车架号")
private String vinCode;
@ExcelName(name = "属性值")
private String attrValueName;
}
/**
* 车辆数据导入
*
* @param file 文件
* @return Results
*/
@PostMapping("/importData")
public Results importData(@RequestBody MultipartFile file) {
Workbook work = null;
InputStream in = null;
// 导入新增的表头
String[] workOrderBonusDetailInsertArr = {"vinCode", "attrValueName"};
List<VinCodeData> list = null;
try {
in = file.getInputStream();
work = ImportExcelUtil.getWorkbook(in, Objects.requireNonNull(file.getOriginalFilename()));
list = ImportExcelUtil.getBankListByExcel(work,
VinCodeData.class, workOrderBonusDetailInsertArr
, "yyyy-MM-dd", 0);
} catch (Exception e) {
return failure("导入数据错误");
} finally {
ImportExcelUtil.closeInputStream(work, in);
}
if (CollectionUtils.isEmpty(list) && list.size() == 1) {
return failure("数据错误");
}
String sql = "";
for (VinCodeData vinCodeData : list) {
sql ="INSERT INTO o_vehicle_attribute_manage (id,vin_code,attr_category,attr_id,attr_value_id,attr_value_name) " +
"VALUES (" + dstIdUtils.getPrimaryKey()+ ",'"+ vinCodeData.getVinCode() +"',103,562591737520992256,NULL,\n" +
"'"+ DateUtil.convert2String(DateUtil.convert2Date(vinCodeData.getAttrValueName(),"yyyy-MM-dd"),"yyyy-MM-dd")+"');";
System.out.println(sql);
}
return succeed();
}/** * 车辆车架号数据导入,修改最近一次入库时间,拿采购入库时间 * * @param file 文件 * @return Results */ @PostMapping("/importVinCodeData") public Results importVinCodeData(@RequestBody MultipartFile file) throws Exception { try ( InputStream in = file.getInputStream() ) { ExcelUserReadConfig<VinCodeDatas> config = new ExcelUserReadConfig<>(); config.setSheetIndex(1); config.setStartRowIndex(2); config.setTargetClass(VinCodeDatas.class); Map<String, String> fieldMap = new HashMap<>(); // 车架号 fieldMap.put("A", "vinCode"); config.setColumn(fieldMap); List<VinCodeDatas> importList = ExcelTools.readExcel(in, config); if (org.springframework.util.CollectionUtils.isEmpty(importList)) { return failure("导入的数据不能为空!"); } carAttributeDataSyncImpl.updateCarAttribute(importList); return succeed(); } }--- o_vehicle_attribute_manage 表有两个唯一索引,id和vin_code 加attr_id组合唯一索引, --- 如果id存在更新,vin_code加attr_id存在更新, 同时两个唯一索引值不存在则进行新增 INSERT INTO `dst_vehicle`.`o_vehicle_attribute_manage`(`id`, `vin_code`, `attr_category`, `attr_id`, `attr_value_id`, `attr_value_name`) VALUES (620982230797261004, 'LR83STGTXMB107581', 103, 513752533924458496, NULL, '2021-09-29') ON DUPLICATE KEY UPDATE attr_value_name= '2021-09-23'; -- 用excel表格用坐标替换变量 ="INSERT INTO o_vehicle_attribute_manage (id,vin_code,attr_category,attr_id,attr_value_id,attr_value_name) VALUES ( -- (SELECT @maxid:=MAX(tt.`id`)+1 FROM o_vehicle_attribute_manage tt),'"&A2&"',103,513752533924458496,NULL, -- '"&B2&"');"
-- 查询返回值处理精度丢失的问题
select concat("\t",v.id) as id,v.vin_code,v.attr_category,concat("\t",v.attr_id) as attr_id,e.attr_name,concat("\t",v.attr_value_id) as attr_value_id, concat("\t",v.attr_value_name) as attr_value_name from dst_vehicle.o_vehicle_attribute_manage v,dst_goods.g_attribute_manage e where v.attr_id = e.id and v.vin_code in ( 'LR83STG6XHB350453');-- 20808 条没有最近入库时间 SELECT count(o.vin_code) FROM dst_vehicle.o_basic_car o where o.vin_code not in ( select v.vin_code from `dst_vehicle`.`o_vehicle_attribute_manage` v where v.attr_id = 562591737520992256 );-- 处理雪花算法生成的id,跟机器di,work_id和当前的时间,生成的时间戳有关系
use dst_vehicle; INSERT INTO o_vehicle_attribute_manage (id,vin_code,attr_category,attr_id,attr_value_id,attr_value_name) VALUES ( (SELECT @maxid:=MAX(tt.`id`)+1 FROM o_vehicle_attribute_manage tt),'LA9BBJBR4MKLM6043',103,513752533924458496,NULL, '2022-01-04');-- 工单计件test、demo 数据初始化 两张表关联查询,根据工单编码分别修改场站id和工单的开始时间 UPDATE tbl_work_order_bonus s SET s.station_id = ( SELECT b.station_id FROM dst_work_order.tbl_work_order b WHERE s.work_order_code = b.CODE ), s.work_order_start_time = ( SELECT b.create_time FROM dst_work_order.tbl_work_order b WHERE s.work_order_code = b.CODE);use dst_work_order; -- 工单展示表 工单为车载终端检修类型补充设备类型的数据 BEGIN; SELECT @maxid := max(id)+ 1 FROM `dst_work_order`.`tbl_work_order_show` ; INSERT INTO `dst_work_order`.`tbl_work_order_show` ( `id`, `work_order_id`, `name`, `value`, `type`, `sort` ) SELECT @maxid := @maxid + 1, w.id AS work_order_id, '设备类型', 'T-Box', 0, 7 FROM ( SELECT d.id FROM ( SELECT a.id FROM ( SELECT t.id FROM tbl_work_order t, tbl_work_order_show b WHERE t.type = 4 AND t.id = b.work_order_id ) a GROUP BY a.id ) d WHERE d.id NOT IN ( SELECT d.id FROM ( SELECT a.id FROM ( SELECT t.id FROM tbl_work_order t, tbl_work_order_show b WHERE t.type = 4 AND t.id = b.work_order_id AND b.NAME = '设备类型' ) a GROUP BY a.id ) d ) ) w, ( SELECT @maxid := 0 ) ind, ( SELECT @maxid := max(id)+ 1 FROM `dst_work_order`.`tbl_work_order_show` ) tmp; COMMIT; -- 验证数据脚本 select d.id from (SELECT a.id FROM (SELECT t.id FROM tbl_work_order t, tbl_work_order_show b WHERE t.type = 4 AND t.id = b.work_order_id ) a GROUP BY a.id ) d where d.id not in( select d.id from (SELECT a.id FROM (SELECT t.id FROM tbl_work_order t, tbl_work_order_show b WHERE t.type = 4 AND t.id = b.work_order_id and b.name ='设备类型' ) a GROUP BY a.id ) d );
1.先用车架号查找到对应的最近一次入库时间,共2万多条,再用excel表格生成两列。
2.再用导入接口把这两列值得到生成集合对象。
3.再用循环打印拼接sql,5000一次,分为5批生成sql语句,车架号和最近一次入库时间的属性id
去重,生成5个sql文件。
4.然后发送邮件给运维在生产库执行,执行ok。

边栏推荐
- 数据分析业务核心
- Evolution based on packnet -- review of depth estimation articles of Toyota Research Institute (TRI) (Part 2)
- Camera attitude estimation
- ARM预备知识
- VScode配置ROS开发环境:修改代码不生效问题原因及解决方法
- I2C也可总线取电!
- 从Anaconda到TensorFlow到Jupyter一路踩坑一路填平
- [tensorflow2 installation] tensorflow2.3-cpu installation pit avoidance guide!!!
- CCF 201512-4 送货
- Advanced introduction to digital IC Design SOC
猜你喜欢

手持振弦VH501TC采集仪传感器的连接与数据读取

Mlx90640 infrared thermal imager temperature measurement module development instructions

NLM5系列无线振弦传感采集仪的工作模式及休眠模式下状态

MLX90640 红外热成像仪测温模块开发笔记(五)

【近万字干货】别让你的简历配不上你的才华——手把手教你制作最适合你的简历

Evolution based on packnet -- review of depth estimation articles of Toyota Research Institute (TRI) (Part 2)

Introduction to armv8 architecture

TM1638 LED数码显示模块ARDUINO驱动代码
![[Android studio] batch data import to Android local database](/img/fc/758df0ba1c4c5b4f0eb8ccbcb4952c.png)
[Android studio] batch data import to Android local database

Principle analysis of self supervised depth estimation of fish eye image and interpretation of omnidet core code
随机推荐
AMD EPYC 9664旗舰规格曝光:96核192线程 480MB缓存 3.8GHz频率
Introduction to arm GIC
ARMV8体系结构简介
ROS分布式操作--launch文件启动多个机器上的节点
C函数不加括号的教训
预测2021年:加速实现RPA以外的超自动化成果
ADC introduction
Development history of convolutional neural network (part)
Mlx90640 infrared thermal imaging sensor temperature measurement module development notes (II)
Principle analysis of self supervised depth estimation of fish eye image and interpretation of omnidet core code
CCF 201509-4 Expressway
CCF 201512-3 画图
SystemVerilog syntax
framework打包合并脚本
LoRA转4G及网关中继器工作原理
数据分析面试记录1-5
数字IC设计SOC入门进阶
TensorFlow raw_rnn - 实现seq2seq模式中将上一时刻的输出作为下一时刻的输入
TensorFlow raw_ RNN - implement the seq2seq mode to take the output of the previous time as the input of the next time
Terminal definition and wiring of bsp3 power monitor (power monitor)
