Compare commits

..

No commits in common. "add0eea2acd7acc64b7f5bdb1d3d1ea8cadaf491" and "b501e8cd98465300b191e5debba38c8a24427ed5" have entirely different histories.

29 changed files with 190 additions and 545 deletions

View File

@ -2,7 +2,9 @@ package com.cnbm.basic.controller;
import com.cnbm.admin.annotation.LogOperation; import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.admin.params.IdParam; import com.cnbm.admin.params.IdParam;
import com.cnbm.basic.dto.*; import com.cnbm.basic.dto.FeaturesProcedureDTO;
import com.cnbm.basic.dto.FeaturesStageProcedureRelationDTO;
import com.cnbm.basic.dto.WorkingProcedureDTO;
import com.cnbm.basic.entity.ProductFeatures; import com.cnbm.basic.entity.ProductFeatures;
import com.cnbm.common.constant.Constant; import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData; import com.cnbm.common.page.PageData;
@ -13,6 +15,7 @@ import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup; import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup; import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup; import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.basic.dto.ProductFeaturesDTO;
import com.cnbm.basic.excel.ProductFeaturesExcel; import com.cnbm.basic.excel.ProductFeaturesExcel;
import com.cnbm.basic.service.IProductFeaturesService; import com.cnbm.basic.service.IProductFeaturesService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -159,11 +162,4 @@ public class ProductFeaturesController {
return new Result<List<ProductFeaturesDTO>>().ok(list); return new Result<List<ProductFeaturesDTO>>().ok(list);
} }
@PostMapping(value = "list")
@ApiOperation(value = "获取特性列表")
@LogOperation("获取特性列表")
public List<ProductFeaturesDTO> list() {
return productFeaturesService.list();
}
} }

View File

@ -112,10 +112,4 @@ public class ProductFeaturesDTO implements Serializable {
@ApiModelProperty(value = "版本号") @ApiModelProperty(value = "版本号")
private Integer version; private Integer version;
@ApiModelProperty(value = "工序id,关联 working_procedure 表")
private Long workingProcedureId;
@ApiModelProperty(value = "工序 名,关联working_procedure表")
private String workingProcedureName;
} }

View File

@ -25,6 +25,4 @@ public interface ProductFeaturesMapper extends BaseDao<ProductFeatures> {
List<ProductFeaturesDTO> getFeaturesList(Map<String, Object> params); List<ProductFeaturesDTO> getFeaturesList(Map<String, Object> params);
String getControlGraphNameById(Long id); String getControlGraphNameById(Long id);
List<ProductFeaturesDTO> list();
} }

View File

@ -1,6 +1,5 @@
package com.cnbm.basic.service; package com.cnbm.basic.service;
import com.cnbm.basic.dto.FactoryDTO;
import com.cnbm.basic.dto.FeaturesProcedureDTO; import com.cnbm.basic.dto.FeaturesProcedureDTO;
import com.cnbm.basic.dto.FeaturesStageProcedureRelationDTO; import com.cnbm.basic.dto.FeaturesStageProcedureRelationDTO;
import com.cnbm.common.page.PageData; import com.cnbm.common.page.PageData;
@ -35,6 +34,4 @@ public interface IProductFeaturesService extends CrudService<ProductFeatures, Pr
void batchUpdate(ProductFeaturesDTO[] lists); void batchUpdate(ProductFeaturesDTO[] lists);
List<ProductFeaturesDTO> getFeaturesList(Map<String, Object> params); List<ProductFeaturesDTO> getFeaturesList(Map<String, Object> params);
List<ProductFeaturesDTO> list();;
} }

View File

@ -64,7 +64,6 @@ public class ProductFeaturesServiceImpl extends CrudServiceImpl<ProductFeaturesM
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void save(ProductFeaturesDTO dto) { public void save(ProductFeaturesDTO dto) {
ProductFeatures entity = ConvertUtils.sourceToTarget(dto, ProductFeatures.class); ProductFeatures entity = ConvertUtils.sourceToTarget(dto, ProductFeatures.class);
insert(entity); insert(entity);
} }
@ -155,12 +154,4 @@ public class ProductFeaturesServiceImpl extends CrudServiceImpl<ProductFeaturesM
List<ProductFeaturesDTO> list = mapper.getFeaturesList(params); List<ProductFeaturesDTO> list = mapper.getFeaturesList(params);
return list; return list;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public List<ProductFeaturesDTO> list() {
List<ProductFeaturesDTO> list = mapper.list();
return list;
}
} }

View File

@ -73,10 +73,4 @@
<select id="getControlGraphNameById" resultType="String"> <select id="getControlGraphNameById" resultType="String">
select name from control_graph where id = #{id} select name from control_graph where id = #{id}
</select> </select>
<select id="list" resultType="com.cnbm.basic.dto.ProductFeaturesDTO">
select * from product_features
order by id asc
</select>
</mapper> </mapper>

View File

@ -182,6 +182,41 @@ public class Main {
return day; return day;
} }
private static List<FluxTable> query(QueryDataParam param,InfluxDBClient influxDBClient){
String measurement = param.getMeasurement();
List<String> dropedTagName = param.getDropedTagNames();
Range range = param.getRange();
String bucket = param.getBucket();
String tagName = param.getTag().getTagName();
String tagValue = param.getTag().getTagValue();
PageInfo pageInfo = param.getPageInfo();
String flux = "from(bucket:\""+bucket+"\")";
flux += "|> range(start: "+range.getBegin().toString()+",stop:"+range.getEnd().toString()+") \n";
flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\") \n";
flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\") \n";
for(String dropName:dropedTagName){
flux += "|> drop(columns: [\""+ dropName +"\"]) \n";
}
flux += "|> sort(columns: [\"_time\"], desc: true) \n";
flux += "|> window(every: 1y) \n";
if(pageInfo!=null){
flux += "|> limit(n: "+pageInfo.getSize()+", offset: "+(pageInfo.getCurrent()-1)* pageInfo.getSize()+")";
}
QueryApi queryApi = influxDBClient.getQueryApi();
List<FluxTable> tables = queryApi.query(flux);
for (FluxTable fluxTable : tables) {
List<FluxRecord> records = fluxTable.getRecords();
for (FluxRecord fluxRecord : records) {
System.out.println("time: "+fluxRecord.getTime() +" key:"+fluxRecord.getField()+" value: " + fluxRecord.getValueByKey("_value")+" measurement: " + fluxRecord.getMeasurement());
}
}
return tables;
}
} }

View File

@ -1,7 +1,10 @@
package com.cnbm.influx.config; package com.cnbm.influx.config;
import com.cnbm.influx.constant.Constant; import com.cnbm.influx.constant.Constant;
import com.cnbm.influx.param.*; import com.cnbm.influx.param.PageInfo;
import com.cnbm.influx.param.QueryDataGroupByTimeParam;
import com.cnbm.influx.param.QueryDataParam;
import com.cnbm.influx.param.Range;
import com.cnbm.influx.template.Event; import com.cnbm.influx.template.Event;
import com.influxdb.client.InfluxDBClient; import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxDBClientFactory; import com.influxdb.client.InfluxDBClientFactory;
@ -138,7 +141,6 @@ public enum InfluxClient {
} }
public List<FluxTable> query(QueryDataParam param){ public List<FluxTable> query(QueryDataParam param){
String measurement = param.getMeasurement(); String measurement = param.getMeasurement();
List<String> dropedTagNames = param.getDropedTagNames(); List<String> dropedTagNames = param.getDropedTagNames();
@ -150,12 +152,10 @@ public enum InfluxClient {
flux += "|> range(start: "+range.getBegin()+",stop:"+range.getEnd()+")"; flux += "|> range(start: "+range.getBegin()+",stop:"+range.getEnd()+")";
flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\")"; flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\")";
if(param.getTags()!=null && param.getTags().size()>0){ if(param.getTag()!=null){
for(Tag tag:param.getTags()){ String tagName = param.getTag().getTagName();
String tagName = tag.getTagName(); String tagValue = param.getTag().getTagValue();
String tagValue = tag.getTagValue(); flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
}
} }
//调整时区查询出的结果 +8个小时 //调整时区查询出的结果 +8个小时
@ -177,28 +177,16 @@ public enum InfluxClient {
List<String> dropedTagNames = param.getDropedTagNames(); List<String> dropedTagNames = param.getDropedTagNames();
Range range = param.getRange(); Range range = param.getRange();
String bucket = param.getBucket(); String bucket = param.getBucket();
String tagName = param.getTag().getTagName();
String tagValue = param.getTag().getTagValue();
String groupName = param.getGroupName(); String groupName = param.getGroupName();
PageInfo pageInfo = param.getPageInfo(); PageInfo pageInfo = param.getPageInfo();
String flux = "from(bucket:\""+bucket+"\")"; String flux = "from(bucket:\""+bucket+"\")";
flux += "|> range(start: "+range.getBegin()+",stop:"+range.getEnd()+")"; flux += "|> range(start: "+range.getBegin()+",stop:"+range.getEnd()+")";
flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\")"; flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\")";
flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
// String tagName = param.getTag().getTagName(); flux += "|> timeShift(duration: 8h)";
// String tagValue = param.getTag().getTagValue();
// flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
if(param.getTags()!=null && param.getTags().size()>0){
for(Tag tag:param.getTags()){
String tagName = tag.getTagName();
String tagValue = tag.getTagValue();
flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
}
}
// flux += "|> timeShift(duration: 8h)";
flux += "|> group(columns: [\""+groupName+"\"], mode: \"except\")"; flux += "|> group(columns: [\""+groupName+"\"], mode: \"except\")";
for(String dropName:dropedTagNames){ for(String dropName:dropedTagNames){
flux += "|> drop(columns: [\""+dropName+"\"])"; flux += "|> drop(columns: [\""+dropName+"\"])";
@ -215,25 +203,15 @@ public enum InfluxClient {
List<String> dropedTagNames = param.getDropedTagNames(); List<String> dropedTagNames = param.getDropedTagNames();
Range range = param.getRange(); Range range = param.getRange();
String bucket = param.getBucket(); String bucket = param.getBucket();
String tagName = param.getTag().getTagName();
String tagValue = param.getTag().getTagValue();
PageInfo pageInfo = param.getPageInfo(); PageInfo pageInfo = param.getPageInfo();
String flux = "from(bucket:\""+bucket+"\")"; String flux = "from(bucket:\""+bucket+"\")";
flux += "|> range(start: "+range.getBegin()+",stop:"+range.getEnd()+")"; flux += "|> range(start: "+range.getBegin()+",stop:"+range.getEnd()+")";
flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\")"; flux += "|> filter(fn: (r) => r[\"_measurement\"] == \""+measurement+"\")";
flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
// String tagName = param.getTag().getTagName(); flux += "|> timeShift(duration: 8h)";
// String tagValue = param.getTag().getTagValue();
// flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
// flux += "|> timeShift(duration: 8h)";
if(param.getTags()!=null && param.getTags().size()>0){
for(Tag tag:param.getTags()){
String tagName = tag.getTagName();
String tagValue = tag.getTagValue();
flux += "|> filter(fn: (r) => r[\""+tagName+"\"] == \""+tagValue+"\")";
}
}
for(String dropName:dropedTagNames){ for(String dropName:dropedTagNames){
flux += "|> drop(columns: [\""+dropName+"\"])"; flux += "|> drop(columns: [\""+dropName+"\"])";
} }

View File

@ -15,7 +15,6 @@ import com.influxdb.query.FluxTable;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -70,7 +69,7 @@ public class Main {
dropNames.add("transationId"); dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTags(Arrays.asList(new Tag("argName","forUpdate"))); queryDataParam.setTag(new Tag("argName","forUpdate"));
queryDataParam.setRange(new Range(DataUtils.getBeforeDate(999).toInstant(),DataUtils.getAfterDate(999).toInstant())); queryDataParam.setRange(new Range(DataUtils.getBeforeDate(999).toInstant(),DataUtils.getAfterDate(999).toInstant()));
queryDataParam.setPageInfo(new PageInfo(1,10)); queryDataParam.setPageInfo(new PageInfo(1,10));
List<FluxTable> query = InfluxClient.Client.query(queryDataParam); List<FluxTable> query = InfluxClient.Client.query(queryDataParam);

View File

@ -1,7 +1,6 @@
package com.cnbm.influx.controller; package com.cnbm.influx.controller;
import com.cnbm.common.spc.util.DataUtils; import com.cnbm.common.spc.util.DataUtils;
import com.cnbm.common.utils.Result;
import com.cnbm.influx.config.InfluxClient; import com.cnbm.influx.config.InfluxClient;
import com.cnbm.influx.constant.Constant; import com.cnbm.influx.constant.Constant;
import com.cnbm.influx.param.PageInfo; import com.cnbm.influx.param.PageInfo;
@ -16,12 +15,14 @@ import com.influxdb.query.FluxTable;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.time.Instant; import java.time.Instant;
import java.util.*; import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
@RestController @RestController
@RequestMapping("/influx") @RequestMapping("/influx")
@ -29,9 +30,9 @@ public class S7DemoController {
private static final Logger logger = LoggerFactory.getLogger(S7DemoController.class); private static final Logger logger = LoggerFactory.getLogger(S7DemoController.class);
//for 常规计 //for 常规计
@PostMapping("/insertDemoDataForCount") @PostMapping("/insertDemoDataForMetering")
public void insertDemoDataForCount() throws InterruptedException { public void insertDemoDataForMetering() throws InterruptedException {
List<Event> list = new ArrayList<>(); List<Event> list = new ArrayList<>();
Random r = new Random(); Random r = new Random();
@ -53,117 +54,54 @@ public class S7DemoController {
InfluxClient.Client.batchInsert(list,"Weight"); InfluxClient.Client.batchInsert(list,"Weight");
} }
public static void main(String[] args) throws InterruptedException {
long l1 = System.currentTimeMillis();
System.out.println(l1);
Date date = new Date(l1);
Thread.sleep(1000);
Date date2 = new Date(l1);
System.out.println();
}
@PostMapping("/insertDemoOne") @PostMapping("/insertDemoOne")
public void insertDemoOne() throws InterruptedException { public void insertDemoOne() throws InterruptedException {
List<Event> list = new ArrayList<>(); List<Event> list = new ArrayList<>();
Random r = new Random();
Thread.sleep(10);
Instant time = new Date().toInstant();
Event event = new Event(); Event event = new Event();
event.setTime(new Date(1670554110451L).toInstant()); event.setTime(time);
event.setArgName("failDayDay"); event.setArgName("failDayDay");
event.setArgValue("30089"); event.setArgValue("1");
event.setSampleNumber("10001"); event.setSampleNumber("10001");
list.add(event); list.add(event);
Thread.sleep(1000);
Event event2 = new Event(); Event event2 = new Event();
event2.setTime(new Date(1670555006702L).toInstant()); event2.setTime(time);
event2.setArgName("failDayDay"); event2.setArgName("failDayDay");
event2.setArgValue("40088"); event2.setArgValue("2");
event2.setSampleNumber("10001"); event2.setSampleNumber("10001");
list.add(event2); list.add(event2);
InfluxClient.Client.batchInsert(list,"Weight");
// Thread.sleep(10000); InfluxClient.Client.batchInsert(list,"Weight");
//
// List<Event> list2 = new ArrayList<>();
// Event event2 = new Event();
// event2.setTime(time);
//
// event2.setArgName("failDayDay");
// event2.setArgValue("20087");
// event2.setSampleNumber("10001");
// list2.add(event2);
//
// InfluxClient.Client.batchInsert(list2,"Weight");
} }
@PostMapping("/readDemoOne") @PostMapping("/readDemoOne")
public void readDemoOne() throws InterruptedException { public void readDemoOne() throws InterruptedException {
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
// dropNames.add("inspectionSheetId");
// dropNames.add("batchNum");
QueryDataParam queryDataParam = new QueryDataParam();
queryDataParam.setMeasurement("PID2");
queryDataParam.setRange(new Range(DataUtils.getBeforeDate(999).toInstant(), DataUtils.getAfterDate(999).toInstant() ));
queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTags(Arrays.asList(new Tag("argName","LTWeight"),new Tag("inspectionSheetId","1601123134690340865")));
queryDataParam.setBucket(Constant.bucket);
List<FluxTable> query = InfluxClient.Client.query(queryDataParam);
}
@PostMapping("/getFlux")
public Result<Instant> getFlux() throws InterruptedException {
List<String> dropNames = new ArrayList<>();
dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
// dropNames.add("batchNum"); dropNames.add("batchNum");
QueryDataParam queryDataParam = new QueryDataParam(); QueryDataParam queryDataParam = new QueryDataParam();
queryDataParam.setMeasurement(Constant.measurement); queryDataParam.setMeasurement(Constant.measurement);
queryDataParam.setRange(new Range(DataUtils.getBeforeDate(999).toInstant(), DataUtils.getAfterDate(999).toInstant() )); queryDataParam.setRange(new Range(DataUtils.getBeforeDate(999).toInstant(), DataUtils.getAfterDate(999).toInstant() ));
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTags(Arrays.asList(new Tag("argName","failDayDay"))); queryDataParam.setTag(new Tag("argName","failDayDay"));
queryDataParam.setBucket(Constant.bucket); queryDataParam.setBucket(Constant.bucket);
List<FluxTable> query = InfluxClient.Client.query(queryDataParam); List<FluxTable> query = InfluxClient.Client.query(queryDataParam);
Instant time = query.get(0).getRecords().get(0).getTime();
return new Result<Instant>().ok(time);
}
@PostMapping("/saveFlux1")
public Result<Instant> saveFlux1() throws InterruptedException {
List<Event> list = new ArrayList<>();
Event event2 = new Event();
Instant instant = new Date().toInstant();
event2.setTime(instant);
event2.setArgName("failDayDay");
event2.setArgValue("");
event2.setSampleNumber("10001");
list.add(event2);
InfluxClient.Client.batchInsert(list,"Weight");
return new Result<Instant>().ok(instant);
}
@PostMapping("/saveFlux2")
public void saveFlux2(@RequestBody TIMETest timeTest) throws InterruptedException {
List<Event> list = new ArrayList<>();
Event event2 = new Event();
event2.setTime(timeTest.getTime2());
event2.setArgName("failDayDay");
event2.setArgValue("40091");
event2.setSampleNumber("10001");
list.add(event2);
InfluxClient.Client.batchInsert(list,"Weight");
System.out.println(); System.out.println();
} }
//for 常规计 //for 常规计数型
@PostMapping("/insertDemoDataForMetering") @PostMapping("/insertDemoDataForCount")
public void insertDemoDataForMetering() throws InterruptedException { public void insertDemoDataForCount() throws InterruptedException {
List<Event> list = new ArrayList<>(); List<Event> list = new ArrayList<>();
Random r = new Random(); Random r = new Random();

View File

@ -1,20 +0,0 @@
package com.cnbm.influx.controller;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.Instant;
/**
* @Desc: ""
* @Author: caixiang
* @DATE: 2022/12/9 15:53
*/
@Data
@ApiModel(value = "检验样本 DTO对象")
public class TIMETest {
@ApiModelProperty(value = "时间2")
private Instant time2;
}

View File

@ -25,8 +25,7 @@ import java.util.List;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
public class QueryDataGroupByTimeParam extends BaseParam{ public class QueryDataGroupByTimeParam extends BaseParam{
private Tag tag;
private List<Tag> tags;
//查询的时候需要忽略的字段(transationId是唯一标识会对 最终的查询结果集产生影响) //查询的时候需要忽略的字段(transationId是唯一标识会对 最终的查询结果集产生影响)
private List<String> dropedTagNames; private List<String> dropedTagNames;
private String bucket; private String bucket;

View File

@ -25,9 +25,8 @@ import java.util.List;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
public class QueryDataParam extends BaseParam{ public class QueryDataParam extends BaseParam{
//如果tag不传就是查询所有, 多条件查询influxdb数据 //如果tag不传就是查询所有
private List<Tag> tags; private Tag tag;
//private Tag tag;
//查询的时候需要忽略的字段(transationId是唯一标识会对 最终的查询结果集产生影响) //查询的时候需要忽略的字段(transationId是唯一标识会对 最终的查询结果集产生影响)
private List<String> dropedTagNames; private List<String> dropedTagNames;
private String bucket; private String bucket;

View File

@ -1,30 +0,0 @@
package com.cnbm.influx.template;
import com.influxdb.annotations.Column;
import com.influxdb.annotations.Measurement;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.Instant;
/**
* @Desc: "常规计量值 - entity"
* @Author: caixiang
* @DATE: 2022/6/25 11:13
*/
@Data
public class Sample {
private String inspectionSheetId;
private Instant sampleTime;
private String workingProcedureName;
private String sampleNumber;
private String argName;
private String argValue;
}

View File

@ -1,27 +0,0 @@
package com.cnbm.influx.template;
import com.influxdb.annotations.Column;
import com.influxdb.annotations.Measurement;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.Instant;
/**
* @Desc: "常规计量值 - entity"
* @Author: caixiang
* @DATE: 2022/6/25 11:13
*/
@Data
public class SampleParam {
private String workingProcedureName;
//private String transationId;
private String argName;
private String argValue;
}

View File

@ -1,8 +1,8 @@
package com.cnbm.processInspection.controller; package com.cnbm.processInspection.controller;
import com.alibaba.fastjson.JSONObject;
import com.cnbm.admin.annotation.LogOperation; import com.cnbm.admin.annotation.LogOperation;
import com.cnbm.basic.dto.FeaturesProcedureDTO;
import com.cnbm.basic.dto.ProductFeaturesDTO; import com.cnbm.basic.dto.ProductFeaturesDTO;
import com.cnbm.common.constant.Constant; import com.cnbm.common.constant.Constant;
import com.cnbm.common.page.PageData; import com.cnbm.common.page.PageData;
@ -13,11 +13,9 @@ import com.cnbm.common.validator.ValidatorUtils;
import com.cnbm.common.validator.group.AddGroup; import com.cnbm.common.validator.group.AddGroup;
import com.cnbm.common.validator.group.DefaultGroup; import com.cnbm.common.validator.group.DefaultGroup;
import com.cnbm.common.validator.group.UpdateGroup; import com.cnbm.common.validator.group.UpdateGroup;
import com.cnbm.influx.param.QueryDataParam;
import com.cnbm.influx.template.Event;
import com.cnbm.processInspection.dto.InspectionSampleDTO; import com.cnbm.processInspection.dto.InspectionSampleDTO;
import com.cnbm.processInspection.dto.InspectionSampleDTO2;
import com.cnbm.processInspection.dto.InspectionSampleDTO3;
import com.cnbm.processInspection.dto.InspectionSheetDTO; import com.cnbm.processInspection.dto.InspectionSheetDTO;
import com.cnbm.processInspection.entity.InspectionSheet; import com.cnbm.processInspection.entity.InspectionSheet;
import com.cnbm.processInspection.excel.InspectionSheetExcel; import com.cnbm.processInspection.excel.InspectionSheetExcel;
@ -175,12 +173,6 @@ public class InspectionSheetController {
return inspectionSheetService.getFluxParamList(inspectionSheetId); return inspectionSheetService.getFluxParamList(inspectionSheetId);
} }
@PostMapping(value = "getFluxParamList3")
@ApiOperation(value = "从influxdb中获取检测参数3")
List<InspectionSampleDTO3> getFluxParamList3(@RequestParam("inspectionSheetId") Long inspectionSheetId){
return inspectionSheetService.getFluxParamList3(inspectionSheetId);
}
@PostMapping("saveFluxParamList") @PostMapping("saveFluxParamList")
@ApiOperation("将样本检测参数写入influxdb") @ApiOperation("将样本检测参数写入influxdb")
public Result saveFluxParamList(@RequestBody InspectionSampleDTO[] lists) throws InterruptedException{ public Result saveFluxParamList(@RequestBody InspectionSampleDTO[] lists) throws InterruptedException{
@ -192,28 +184,6 @@ public class InspectionSheetController {
return new Result(); return new Result();
} }
@PostMapping("saveFluxParamList2")
@ApiOperation("将样本检测参数写入influxdb2")
public Result saveFluxParamList2(@RequestBody InspectionSampleDTO2[] lists) throws InterruptedException{
inspectionSheetService.saveFluxParamList2(lists);
Thread.sleep(1000);
//样本数据更新后 计算检验单缺陷数不良数
inspectionSheetService.calculate(Long.valueOf(lists[0].getInspectionSheetId()));
return new Result();
}
@PostMapping("saveFluxParamList3")
@ApiOperation("将样本检测参数写入influxdb3")
public Result saveFluxParamList3(@RequestBody InspectionSampleDTO3[] lists) throws InterruptedException{
inspectionSheetService.saveFluxParamList3(lists);
Thread.sleep(1000);
//样本数据更新后 计算检验单缺陷数不良数
inspectionSheetService.calculate(Long.valueOf(lists[0].getInspectionSheetId()));
return new Result();
}
@PostMapping("getInspectionSheetFeaturesList") @PostMapping("getInspectionSheetFeaturesList")
@ApiOperation("获取检验单对应检验属性") @ApiOperation("获取检验单对应检验属性")
@ApiImplicitParams({ @ApiImplicitParams({

View File

@ -35,7 +35,6 @@ import org.springframework.web.bind.annotation.RestController;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
@ -117,7 +116,6 @@ public class ProcessInspectionController {
return R.ok("成功",xbarSGraphData); return R.ok("成功",xbarSGraphData);
} }
@PostMapping("/XMRGraphTest") @PostMapping("/XMRGraphTest")
public R<XMRGraphData> XMRGraphTest() throws Exception { public R<XMRGraphData> XMRGraphTest() throws Exception {
ProductFeatures productFeatures = new ProductFeatures(); ProductFeatures productFeatures = new ProductFeatures();
@ -149,6 +147,7 @@ public class ProcessInspectionController {
(xmrGraph.getXigma()==null||xmrGraph.getTotalXigma()==null)?null:new StandardDiviation(xmrGraph.getXigma(),xmrGraph.getTotalXigma()) (xmrGraph.getXigma()==null||xmrGraph.getTotalXigma()==null)?null:new StandardDiviation(xmrGraph.getXigma(),xmrGraph.getTotalXigma())
); );
return R.ok("成功",xmrGraphData); return R.ok("成功",xmrGraphData);
} }
@ -173,9 +172,7 @@ public class ProcessInspectionController {
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
dropNames.add("argName"); dropNames.add("argName");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTag(new Tag("argName","LTWeight"));
queryDataParam.setTags(Arrays.asList(new Tag("argName","LTWeight")));
queryDataParam.setRange(new Range(DataUtils.getBeforeDate(100).toInstant(),Instant.now())); queryDataParam.setRange(new Range(DataUtils.getBeforeDate(100).toInstant(),Instant.now()));
// queryDataParam.setPageInfo(new PageInfo(1,10)); // queryDataParam.setPageInfo(new PageInfo(1,10));
List<FluxTable> query = InfluxClient.Client.queryByGroup(queryDataParam); List<FluxTable> query = InfluxClient.Client.queryByGroup(queryDataParam);

View File

@ -1,40 +0,0 @@
package com.cnbm.processInspection.dto;
import com.cnbm.influx.template.Event;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.Instant;
import java.util.List;
/**
* 检验样本
*
* @author yanyang
* @since 2022-11-24
*/
@Data
@ApiModel(value = "检验样本 DTO对象")
public class InspectionSampleDTO2 implements Serializable {
@ApiModelProperty(value = "工序名称关联working_procedure表")
private String workingProcedureName;
@ApiModelProperty(value = "检验单id")
private String inspectionSheetId;
@ApiModelProperty(value = "检验参数")
private List<Event> events;
@ApiModelProperty(value = "批次号")
private String batchNum;
@ApiModelProperty(value = "取样时间")
private Instant sampleTime;
@ApiModelProperty(value = "样本号")
private String sampleNumber;
}

View File

@ -1,37 +0,0 @@
package com.cnbm.processInspection.dto;
import com.cnbm.influx.template.Event;
import com.cnbm.influx.template.SampleParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.Instant;
import java.util.List;
/**
* 检验样本
*
* @author yanyang
* @since 2022-11-24
*/
@Data
@ApiModel(value = "检验样本 DTO3对象")
public class InspectionSampleDTO3 implements Serializable {
@ApiModelProperty(value = "检验单id")
private String inspectionSheetId;
@ApiModelProperty(value = "取样时间")
private Instant sampleTime;
@ApiModelProperty(value = "批次号")
private String batchNum;
@ApiModelProperty(value = "样本号")
private String sampleNumber;
@ApiModelProperty(value = "检验参数")
private List<SampleParam> sampleParamList;
}

View File

@ -15,7 +15,6 @@ import com.influxdb.query.FluxTable;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -105,9 +104,9 @@ public class CGraph {
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
// dropNames.add("batchNum"); dropNames.add("batchNum");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTags(Arrays.asList(new Tag("argName",argName))); queryDataParam.setTag(new Tag("argName",argName));
List<FluxTable> query = InfluxClient.Client.queryGroupByTime(queryDataParam); List<FluxTable> query = InfluxClient.Client.queryGroupByTime(queryDataParam);
//1. 先从fluxdb 里面提取原始数据 //1. 先从fluxdb 里面提取原始数据

View File

@ -12,7 +12,6 @@ import com.influxdb.query.FluxTable;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -97,10 +96,10 @@ public class NPGraph {
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
//dropNames.add("batchNum"); dropNames.add("batchNum");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTag(new Tag("argName",argName));
queryDataParam.setTags(Arrays.asList(new Tag("argName",argName)));
List<FluxTable> query = InfluxClient.Client.queryGroupByTime(queryDataParam); List<FluxTable> query = InfluxClient.Client.queryGroupByTime(queryDataParam);
//1. 先从fluxdb 里面提取原始数据 //1. 先从fluxdb 里面提取原始数据
List<Double> originData = new ArrayList<>(); List<Double> originData = new ArrayList<>();

View File

@ -15,7 +15,6 @@ import com.influxdb.query.FluxTable;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -110,9 +109,9 @@ public class PGraph {
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
//dropNames.add("batchNum"); dropNames.add("batchNum");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTags(Arrays.asList(new Tag("argName",argName))); queryDataParam.setTag(new Tag("argName",argName));
List<FluxTable> query = InfluxClient.Client.queryGroupByTime(queryDataParam); List<FluxTable> query = InfluxClient.Client.queryGroupByTime(queryDataParam);
//1. 先从fluxdb 里面提取原始数据 //1. 先从fluxdb 里面提取原始数据

View File

@ -15,7 +15,6 @@ import com.influxdb.query.FluxTable;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -109,10 +108,10 @@ public class UGraph {
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
//dropNames.add("batchNum"); dropNames.add("batchNum");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTag(new Tag("argName",argName));
queryDataParam.setTags(Arrays.asList(new Tag("argName",argName)));
List<FluxTable> query = InfluxClient.Client.queryGroupByTime(queryDataParam); List<FluxTable> query = InfluxClient.Client.queryGroupByTime(queryDataParam);
//1. 先从fluxdb 里面提取原始数据 //1. 先从fluxdb 里面提取原始数据
//计算p bar //计算p bar

View File

@ -17,7 +17,6 @@ import com.influxdb.query.FluxTable;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -103,9 +102,9 @@ public class MeanRGraph {
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
//dropNames.add("batchNum"); dropNames.add("batchNum");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTags(Arrays.asList(new Tag("argName",argName))); queryDataParam.setTag(new Tag("argName",argName));
List<FluxTable> query = InfluxClient.Client.query(queryDataParam); List<FluxTable> query = InfluxClient.Client.query(queryDataParam);
if(query.size() == 0){ if(query.size() == 0){

View File

@ -18,7 +18,6 @@ import com.influxdb.query.FluxTable;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -100,9 +99,9 @@ public class MeanStandardDeviationGraph {
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
//dropNames.add("batchNum"); dropNames.add("batchNum");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTags(Arrays.asList(new Tag("argName",argName))); queryDataParam.setTag(new Tag("argName",argName));
List<FluxTable> query = InfluxClient.Client.query(queryDataParam); List<FluxTable> query = InfluxClient.Client.query(queryDataParam);
//1. 先从fluxdb 里面提取原始数据 //1. 先从fluxdb 里面提取原始数据

View File

@ -15,7 +15,6 @@ import com.influxdb.query.FluxTable;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -97,9 +96,9 @@ public class XMRGraph {
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
dropNames.add("inspectionSheetId"); dropNames.add("inspectionSheetId");
//dropNames.add("batchNum"); dropNames.add("batchNum");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setTags(Arrays.asList(new Tag("argName",argName))); queryDataParam.setTag(new Tag("argName",argName));
List<FluxTable> query = InfluxClient.Client.query(queryDataParam); List<FluxTable> query = InfluxClient.Client.query(queryDataParam);

View File

@ -7,8 +7,6 @@ import com.cnbm.common.service.CrudService;
import com.cnbm.influx.param.QueryDataParam; import com.cnbm.influx.param.QueryDataParam;
import com.cnbm.influx.template.Event; import com.cnbm.influx.template.Event;
import com.cnbm.processInspection.dto.InspectionSampleDTO; import com.cnbm.processInspection.dto.InspectionSampleDTO;
import com.cnbm.processInspection.dto.InspectionSampleDTO2;
import com.cnbm.processInspection.dto.InspectionSampleDTO3;
import com.cnbm.processInspection.dto.InspectionSheetDTO; import com.cnbm.processInspection.dto.InspectionSheetDTO;
import com.cnbm.processInspection.entity.InspectionSheet; import com.cnbm.processInspection.entity.InspectionSheet;
import com.influxdb.query.FluxTable; import com.influxdb.query.FluxTable;
@ -38,11 +36,8 @@ public interface IInspectionSheetService extends CrudService<InspectionSheet, In
// List<Event> getFluxParamList(Map<String, Object> params); // List<Event> getFluxParamList(Map<String, Object> params);
List<InspectionSampleDTO> getFluxParamList(Long inspectionSheetId); List<InspectionSampleDTO> getFluxParamList(Long inspectionSheetId);
List<InspectionSampleDTO3> getFluxParamList3(Long inspectionSheetId);
void saveFluxParamList(InspectionSampleDTO[] lists); void saveFluxParamList(InspectionSampleDTO[] lists);
void saveFluxParamList2(InspectionSampleDTO2[] lists);
void saveFluxParamList3(InspectionSampleDTO3[] lists);
List<ProductFeaturesDTO> getInspectionSheetFeaturesList(Map<String, Object> params); List<ProductFeaturesDTO> getInspectionSheetFeaturesList(Map<String, Object> params);

View File

@ -6,9 +6,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.cnbm.basic.dto.ProductFeaturesDTO; import com.cnbm.basic.dto.ProductFeaturesDTO;
import com.cnbm.basic.dto.WorkingProcedureDTO; import com.cnbm.basic.entity.Machine;
import com.cnbm.basic.entity.*; import com.cnbm.basic.entity.Product;
import com.cnbm.basic.service.impl.*; import com.cnbm.basic.entity.Shift;
import com.cnbm.basic.entity.WorkingProcedure;
import com.cnbm.basic.service.impl.MachineServiceImpl;
import com.cnbm.basic.service.impl.ProductServiceImpl;
import com.cnbm.basic.service.impl.ShiftServiceImpl;
import com.cnbm.basic.service.impl.WorkingProcedureServiceImpl;
import com.cnbm.common.page.PageData; import com.cnbm.common.page.PageData;
import com.cnbm.common.service.impl.CrudServiceImpl; import com.cnbm.common.service.impl.CrudServiceImpl;
import com.cnbm.common.spc.util.DataUtils; import com.cnbm.common.spc.util.DataUtils;
@ -17,18 +22,14 @@ import com.cnbm.influx.config.InfluxClient;
import com.cnbm.influx.param.PageInfo; import com.cnbm.influx.param.PageInfo;
import com.cnbm.influx.param.QueryDataParam; import com.cnbm.influx.param.QueryDataParam;
import com.cnbm.influx.param.Range; import com.cnbm.influx.param.Range;
import com.cnbm.influx.param.Tag; import com.cnbm.influx.param.Tag;
import com.cnbm.influx.template.Event; import com.cnbm.influx.template.Event;
import com.cnbm.influx.template.Sample;
import com.cnbm.influx.template.SampleParam;
import com.cnbm.processInspection.dto.InspectionSampleDTO; import com.cnbm.processInspection.dto.InspectionSampleDTO;
import com.cnbm.processInspection.dto.InspectionSampleDTO2;
import com.cnbm.processInspection.dto.InspectionSampleDTO3;
import com.cnbm.processInspection.dto.InspectionSheetDTO; import com.cnbm.processInspection.dto.InspectionSheetDTO;
import com.cnbm.processInspection.entity.InspectionSheet; import com.cnbm.processInspection.entity.InspectionSheet;
import com.cnbm.processInspection.mapper.InspectionSheetMapper; import com.cnbm.processInspection.mapper.InspectionSheetMapper;
import com.cnbm.processInspection.service.IInspectionSheetService; import com.cnbm.processInspection.service.IInspectionSheetService;
import com.google.gson.JsonObject;
import com.influxdb.query.FluxRecord; import com.influxdb.query.FluxRecord;
import com.influxdb.query.FluxTable; import com.influxdb.query.FluxTable;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -67,10 +68,6 @@ public class InspectionSheetServiceImpl extends CrudServiceImpl<InspectionSheetM
@Autowired @Autowired
private ShiftServiceImpl shiftService; private ShiftServiceImpl shiftService;
@Autowired
private ProductFeaturesServiceImpl productFeaturesService;
@Override @Override
public QueryWrapper<InspectionSheet> getWrapper(Map<String, Object> params) { public QueryWrapper<InspectionSheet> getWrapper(Map<String, Object> params) {
Long id = (Long) params.get("id"); Long id = (Long) params.get("id");
@ -135,12 +132,9 @@ public class InspectionSheetServiceImpl extends CrudServiceImpl<InspectionSheetM
public InspectionSheetDTO get(Long id) { public InspectionSheetDTO get(Long id) {
InspectionSheet entity = baseDao.selectById(id); InspectionSheet entity = baseDao.selectById(id);
InspectionSheetDTO dto = ConvertUtils.sourceToTarget(entity, InspectionSheetDTO.class); InspectionSheetDTO dto = ConvertUtils.sourceToTarget(entity, InspectionSheetDTO.class);
WorkingProcedure workingProcedure = workingProcedureService.selectById(dto.getWorkingProcedureId());
if(dto.getWorkingProcedureId()!=null) { if(workingProcedure!=null){
WorkingProcedure workingProcedure = workingProcedureService.selectById(dto.getWorkingProcedureId()); dto.setWorkingProcedureName(workingProcedure.getName());
if (workingProcedure != null) {
dto.setWorkingProcedureName(workingProcedure.getName());
}
} }
return dto; return dto;
} }
@ -215,7 +209,7 @@ public class InspectionSheetServiceImpl extends CrudServiceImpl<InspectionSheetM
queryDataParam.setMeasurement(workingProcedureName); queryDataParam.setMeasurement(workingProcedureName);
//queryDataParam.setInspectionSheetId(inspectionSheetId); //queryDataParam.setInspectionSheetId(inspectionSheetId);
queryDataParam.setBucket("qgs-bucket"); queryDataParam.setBucket("qgs-bucket");
queryDataParam.setTags(Arrays.asList(new Tag("inspectionSheetId", inspectionSheetId))); queryDataParam.setTag(new Tag("inspectionSheetId", inspectionSheetId));
List<String> dropNames = new ArrayList<>(); List<String> dropNames = new ArrayList<>();
dropNames.add("transationId"); dropNames.add("transationId");
queryDataParam.setDropedTagNames(dropNames); queryDataParam.setDropedTagNames(dropNames);
@ -268,6 +262,7 @@ public class InspectionSheetServiceImpl extends CrudServiceImpl<InspectionSheetM
@Override @Override
public void saveFluxParamList(InspectionSampleDTO[] lists){ public void saveFluxParamList(InspectionSampleDTO[] lists){
for (InspectionSampleDTO dto : lists) { for (InspectionSampleDTO dto : lists) {
//String jsonData = {"workingProcedureName":"test","inspectionSheetId":"116","param1":"0.47","param2":"0.687","param2":"0.53"};
String workingProcedureName = dto.getWorkingProcedureName(); String workingProcedureName = dto.getWorkingProcedureName();
String inspectionSheetId = dto.getInspectionSheetId(); String inspectionSheetId = dto.getInspectionSheetId();
// String batchNum = dto.getBatchNum(); // String batchNum = dto.getBatchNum();
@ -295,24 +290,6 @@ public class InspectionSheetServiceImpl extends CrudServiceImpl<InspectionSheetM
// calculate(Long.valueOf(lists[0].getInspectionSheetId())); // calculate(Long.valueOf(lists[0].getInspectionSheetId()));
} }
@Override
public void saveFluxParamList2(InspectionSampleDTO2[] lists){
for (InspectionSampleDTO2 dto : lists) {
//String jsonData = {"workingProcedureName":"test","inspectionSheetId":"116","param1":"0.47","param2":"0.687","param2":"0.53"};
String workingProcedureName = dto.getWorkingProcedureName();
String inspectionSheetId = dto.getInspectionSheetId();
// String batchNum = dto.getBatchNum();
String sampleNumber = dto.getSampleNumber();
// LocalDateTime sampleTime = dto.getSampleTime();
// Instant eventTime = sampleTime.toInstant(ZoneOffset.UTC);
InfluxClient.Client.batchInsert(dto.getEvents(), workingProcedureName);
}
// //样本数据更新后 计算检验单缺陷数不良数
// System.out.println("--------------------------------------");
// calculate(Long.valueOf(lists[0].getInspectionSheetId()));
}
private Event newEvent(Instant time, String inspectionSheetId, String argName, String argValue, String sampleNo) { private Event newEvent(Instant time, String inspectionSheetId, String argName, String argValue, String sampleNo) {
Event event = new Event(); Event event = new Event();
event.setInspectionSheetId(inspectionSheetId); event.setInspectionSheetId(inspectionSheetId);
@ -342,47 +319,48 @@ public class InspectionSheetServiceImpl extends CrudServiceImpl<InspectionSheetM
//计算并更新检验单缺陷数不良数 //计算并更新检验单缺陷数不良数
@Override @Override
public void calculate(Long inspectionSheetId) { public void calculate(Long inspectionSheetId) {
List<InspectionSampleDTO3> sampleDTOList = getFluxParamList3(inspectionSheetId); List<InspectionSampleDTO> sampleDTOList = getFluxParamList(inspectionSheetId);
if (sampleDTOList != null || sampleDTOList.size() > 0) { if (sampleDTOList != null || sampleDTOList.size() > 0) {
//缺陷 //缺陷
Integer numberOfDefects = 0; Integer numberOfDefects = 0;
//不良 //不良
Integer defectiveQuantity = 0; Integer defectiveQuantity = 0;
//获取的产品特性参照值 //获取的产品特性参照值
Long productId = get(inspectionSheetId).getProductId(); InspectionSheetDTO dto = get(inspectionSheetId);
List<ProductFeaturesDTO> featuresList = productFeaturesService.getProductFeaturesByProductId(productId); Map<String, Object> params2 = new HashMap<>();
Map<String, ProductFeaturesDTO> featureMap = featuresList.stream().collect(Collectors.groupingBy(ProductFeaturesDTO::getName, Collectors.collectingAndThen(Collectors.toList(), f -> f.get(0)))); params2.put("productId", dto.getProductId());
params2.put("workingProcedureId", dto.getWorkingProcedureId());
params2.put("inspectionStage", dto.getInspectionStage());
List<ProductFeaturesDTO> featuresList = getInspectionSheetFeaturesList(params2);
//循环每个样本组 //循环每个样本组
for (InspectionSampleDTO3 sampleDTO : sampleDTOList) { for (InspectionSampleDTO sampleDTO : sampleDTOList) {
//该样本的缺陷数 //该样本的缺陷数
Integer eventDefects = 0; Integer eventDefects = 0;
//该样本的属性列表 //该样本的属性列表
List<SampleParam> sampleParamList = sampleDTO.getSampleParamList(); String jsonData = sampleDTO.getJsonData();
for(SampleParam sampleParam : sampleParamList){ JSONObject json = JSON.parseObject(jsonData);
String argName = sampleParam.getArgName(); for (ProductFeaturesDTO feature : featuresList) {
String argValue = sampleParam.getArgValue(); String v = (String)json.get(feature.getName());
ProductFeaturesDTO feature = featureMap.get(argName); if (!Objects.equals(v, "") && v != null) {
//属性值非空 对应产品特性非空
if(!Objects.equals(argValue, "") && argValue != null && feature!=null){
//1 计量型2 计数型 //1 计量型2 计数型
if (feature.getType() == 1) { if (feature.getType() == 1) {
Double featureValue = Double.valueOf(argValue); Double featureValue = Double.valueOf(v);
if (featureValue > feature.getUsl() || featureValue < feature.getLsl()) { if (featureValue > feature.getUsl() || featureValue < feature.getLsl()) {
eventDefects = eventDefects + 1; eventDefects = eventDefects + 1;
} }
} }
if (feature.getType() == 2) { if (feature.getType() == 2) {
Double featureValue = Double.valueOf(argValue); Integer featureValue = Integer.valueOf(v);
if (featureValue == 1) { if (featureValue == 1) {
eventDefects = eventDefects + 1; eventDefects = eventDefects + 1;
} }
} }
} }
} if (eventDefects != 0) {
//该样本是否有缺陷 numberOfDefects = numberOfDefects + eventDefects;
if (eventDefects != 0) { defectiveQuantity = defectiveQuantity + 1;
numberOfDefects = numberOfDefects + eventDefects; }
defectiveQuantity = defectiveQuantity + 1;
} }
} }
InspectionSheetDTO updateDto = new InspectionSheetDTO(); InspectionSheetDTO updateDto = new InspectionSheetDTO();
@ -391,112 +369,61 @@ public class InspectionSheetServiceImpl extends CrudServiceImpl<InspectionSheetM
updateDto.setDefectiveQuantity(defectiveQuantity); updateDto.setDefectiveQuantity(defectiveQuantity);
update(updateDto); update(updateDto);
} }
} }
/*
@Override //获取该检验单的所有样本数据
public void saveFluxParamList3(InspectionSampleDTO3[] lists){ List<Event> eventList = getFluxParamList(inspectionSheetId);
for (InspectionSampleDTO3 dto : lists) { if (eventList != null || eventList.size() > 0) {
String inspectionSheetId = dto.getInspectionSheetId();
Instant eventTime = dto.getSampleTime();
String sampleNumber = dto.getSampleNumber();
List<SampleParam> sampleParamList = dto.getSampleParamList();
for(SampleParam sampleParam : sampleParamList){
String workingProcedureName = sampleParam.getWorkingProcedureName();
String paramName = sampleParam.getArgName();
String paramValue = sampleParam.getArgValue();
Event event = newEvent(eventTime, inspectionSheetId, paramName, paramValue, sampleNumber);
InfluxClient.Client.insert(event, workingProcedureName);
}
}
}
@Override
public List<InspectionSampleDTO3> getFluxParamList3(Long id) {
List<Sample> sampleList = new ArrayList<>();
//获取influx查询参数
InspectionSheetDTO dto = get(id);
if(dto!=null){
//检验单-单一工序
if(dto.getWorkingProcedureName()!=null){
String workingProcedureName = dto.getWorkingProcedureName();
sampleList = getEventList(id.toString(),workingProcedureName);
}
//检验单-所有工序
else {
List<WorkingProcedureDTO> workingProcedureDTOList = workingProcedureService.getWorkingProcedureByProductId(dto.getProductId());
for(WorkingProcedureDTO workingProcedureDTO:workingProcedureDTOList){
List<Sample> sampleList1 = getEventList(id.toString(),workingProcedureDTO.getName());
sampleList.addAll(sampleList1);
}
}
}
List<InspectionSampleDTO3> list = new ArrayList<>();
if (sampleList != null || sampleList.size() > 0) {
//根据样本号分组 //根据样本号分组
Map<String, List<Sample>> map = sampleList.stream().collect(Collectors.groupingBy(Sample::getSampleNumber)); Map<String, List<Event>> map = eventList.stream().collect(Collectors.groupingBy(Event::getSampleNumber));
for (Map.Entry<String, List<Sample>> entry : map.entrySet()) { //获取的产品特性参照值
String sampleNumber = entry.getKey(); InspectionSheetDTO dto = get(inspectionSheetId);
List<Sample> samples = entry.getValue(); Map<String, Object> params2 = new HashMap<>();
InspectionSampleDTO3 sampleDTO = new InspectionSampleDTO3(); params2.put("productId", dto.getProductId());
sampleDTO.setSampleNumber(sampleNumber); params2.put("workingProcedureId", dto.getWorkingProcedureId());
sampleDTO.setSampleTime(samples.get(0).getSampleTime()); params2.put("inspectionStage", dto.getInspectionStage());
sampleDTO.setBatchNum(dto.getBatchNumber()); //缺陷
sampleDTO.setInspectionSheetId(samples.get(0).getInspectionSheetId()); Integer numberOfDefects = 0;
List<SampleParam> sampleParamList = new ArrayList<>(); //不良
for(Sample sample:samples){ Integer defectiveQuantity = 0;
SampleParam sampleParam = new SampleParam();
sampleParam.setArgName(sample.getArgName()); List<ProductFeaturesDTO> featuresList = getInspectionSheetFeaturesList(params2);
sampleParam.setArgValue(sample.getArgValue()); //循环每个样本组
sampleParam.setWorkingProcedureName(sample.getWorkingProcedureName()); for (Map.Entry<String, List<Event>> entry : map.entrySet()) {
sampleParamList.add(sampleParam); //该样本的缺陷数
Integer eventDefects = 0;
//该样本的属性列表
List<Event> eventList1 = entry.getValue();
for (Event event : eventList1) {
String featureName = event.getArgName();
ProductFeaturesDTO feature = featuresList.stream().filter(u -> u.getName().equals(featureName)).findAny().orElse(null);
if (feature != null && !Objects.equals(event.getArgValue(), "") && event.getArgValue() != null) {
//1 计量型2 计数型
if (feature.getType() == 1) {
Double featureValue = Double.valueOf(event.getArgValue());
if (featureValue > feature.getUsl() || featureValue < feature.getLsl()) {
eventDefects = eventDefects + 1;
}
}
if (feature.getType() == 2) {
Integer featureValue = Integer.valueOf(event.getArgValue());
if (featureValue == 1) {
eventDefects = eventDefects + 1;
}
}
}
if (eventDefects != 0) {
numberOfDefects = numberOfDefects + eventDefects;
defectiveQuantity = defectiveQuantity + 1;
}
} }
sampleDTO.setSampleParamList(sampleParamList);
list.add(sampleDTO);
} }
InspectionSheetDTO updateDto = new InspectionSheetDTO();
updateDto.setId(inspectionSheetId);
updateDto.setNumberOfDefects(numberOfDefects);
updateDto.setDefectiveQuantity(defectiveQuantity);
update(updateDto);
} }
//返回先按时间排序 再按样本号排序 }*/
List<InspectionSampleDTO3> sortedList = list.stream()
.sorted(Comparator.comparing(InspectionSampleDTO3::getSampleTime).thenComparing(InspectionSampleDTO3::getSampleNumber))
.collect(Collectors.toList());
return sortedList;
}
private List<Sample> getEventList(String inspectionSheetId, String workingProcedureName) {
List<Sample> sampleList = new ArrayList<>();
QueryDataParam queryDataParam = new QueryDataParam();
queryDataParam.setMeasurement(workingProcedureName);
queryDataParam.setBucket("qgs-bucket");
queryDataParam.setTags(Arrays.asList(new Tag("inspectionSheetId", inspectionSheetId.toString())));
List<String> dropNames = new ArrayList<>();
dropNames.add("transationId");
queryDataParam.setDropedTagNames(dropNames);
queryDataParam.setRange(new Range(DataUtils.getBeforeDate(999).toInstant(), DataUtils.getAfterDate(999).toInstant()));
queryDataParam.setPageInfo(new PageInfo(1, 10));
List<FluxTable> fluxTableList = InfluxClient.Client.query(queryDataParam);
for (FluxTable fluxTable : fluxTableList) {
List<FluxRecord> records = fluxTable.getRecords(); // 获取实际的记录操作
for (FluxRecord fluxRecord : records) {
Instant time = fluxRecord.getTime();
String argName = (String) fluxRecord.getValueByKey("argName");
String argValue = (String) fluxRecord.getValueByKey("_value");
String sampleNo = (String) fluxRecord.getValueByKey("sampleNumber");
sampleList.add(newSample(time, inspectionSheetId, workingProcedureName, argName, argValue, sampleNo));
}
}
return sampleList;
}
private Sample newSample(Instant time, String inspectionSheetId, String workingProcedureName, String argName, String argValue, String sampleNo) {
Sample sample = new Sample();
sample.setInspectionSheetId(inspectionSheetId);
sample.setWorkingProcedureName(workingProcedureName);
sample.setSampleTime(time);
sample.setSampleNumber(sampleNo);
sample.setArgName(argName);
sample.setArgValue(argValue);
return sample;
}
} }

View File

@ -83,10 +83,9 @@
</select> </select>
<select id="getInspectionSheetFeaturesList" resultType="com.cnbm.basic.dto.ProductFeaturesDTO"> <select id="getInspectionSheetFeaturesList" resultType="com.cnbm.basic.dto.ProductFeaturesDTO">
select pf.*,fspr.working_procedure_id AS workingProcedureId,wp.name AS workingProcedureName select pf.*
from features_stage_procedure_relation fspr from features_stage_procedure_relation fspr
LEFT JOIN product_features pf ON pf.id=fspr.product_features_id LEFT JOIN product_features pf ON pf.id=fspr.product_features_id
LEFT JOIN working_procedure wp ON fspr.working_procedure_id=wp.id
<where> <where>
pf.valid = 1 and fspr.valid = 1 pf.valid = 1 and fspr.valid = 1
<if test="productId != null"> <if test="productId != null">