Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
FCL
2025-11-17 16:57:42 +08:00
12 changed files with 119 additions and 14 deletions

View File

@@ -16,7 +16,6 @@ import jakarta.annotation.Resource;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

View File

@@ -17,4 +17,7 @@ public class BusinessSubParentSampleAssessmentExtendRespVO extends BusinessSubPa
@Schema(description = "显示名称")
private String showName;
@Schema(description = "分析方法")
private String configAssayMethodName;
}

View File

@@ -31,4 +31,9 @@ public class ReportFieldValueData implements Serializable {
@Schema(description = "用途,ingredient-配料、report-报出、ingredient_report-配料及报出")
private String usage;
@Schema(description = "分析方法")
private String methodName;
@Schema(description = "下限值")
private String minLimitValue;
}

View File

@@ -8,6 +8,7 @@ import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleAssessmentDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectDO;
import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO;
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
@@ -52,11 +53,13 @@ public interface BusinessSubParentSampleAssessmentMapper extends BaseMapperX<Bus
return selectJoinList(BusinessSubParentSampleAssessmentExtendRespVO.class, new MPJLambdaWrapperX<BusinessSubParentSampleAssessmentDO>()
.leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, BusinessSubParentSampleAssessmentDO::getConfigAssayMethodProjectId)
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessSubParentSampleAssessmentDO::getDictionaryProjectId)
.leftJoin(ConfigAssayMethodDO.class, ConfigAssayMethodDO::getId, BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId)
.selectAll(BusinessSubParentSampleAssessmentDO.class)
.selectAs(ConfigAssayMethodProjectDO::getDictionaryProjectUnit, BusinessSubSampleAssessmentExtendRespVO::getDictionaryProjectUnit)
.selectAs(DictionaryProjectDO::getKey, BusinessSubSampleAssessmentExtendRespVO::getDictionaryProjectKey)
.selectAs(DictionaryProjectDO::getSimpleName, BusinessSubSampleAssessmentExtendRespVO::getSimpleName)
.selectAs(DictionaryProjectDO::getShowName, BusinessSubSampleAssessmentExtendRespVO::getShowName)
.selectAs(ConfigAssayMethodDO::getName, BusinessSubSampleAssessmentExtendRespVO::getConfigAssayMethodName)
.in(BusinessSubParentSampleAssessmentDO::getBusinessSubParentSampleId, businessSubParentSampleIds)
.eq(BusinessSubParentSampleAssessmentDO::getConfigAssayMethodId, configAssayMethodId));
}

View File

@@ -351,7 +351,7 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
List<ConfigSampleReportDO> configSampleReportDOList = configSampleReportList.stream().filter(f -> f.getConfigBaseSampleId().equals(configBaseSampleId)).collect(Collectors.toList());
for (ConfigSampleReportDO configSampleReport : configSampleReportDOList) {
BusinessAssayReportDataDO businessAssayReportDataDO = new BusinessAssayReportDataDO();
businessAssayReportDataDO.setBusinessBaseSampleId(configBaseSampleId);
businessAssayReportDataDO.setBusinessBaseSampleId(businessBaseSampleDO.getId());
businessAssayReportDataDO.setDataSource(configSampleReport.getDataSource());
businessAssayReportDataDO.setConfigReportTypeId(configSampleReport.getConfigReportTypeId());
businessAssayReportDataDO.setConfigSampleReportId(configSampleReport.getId());
@@ -487,7 +487,8 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
if (isSjEntrust && isAssayAuAg && sort == 0 && !isCreateZhy && sDictionaryProjectId.equals(configAssayMethodProjectDO.getDictionaryProjectId())) {//是商检样品分析金银第一个样品不创建综合样并且是S值
businessAssayProjectDataDO.setUsage(QmsCommonConstant.ASSAY_PROJECT_USAGE_INGREDIENT_REPORT);
}
businessAssayProjectDataDO.setMinimumLimitValue(configAssayMethodProjectDO.getMinimumLimitValue());
businessAssayProjectDataDO.setIsEnabled(1);
businessAssayProjectDataDO.setIsNotAssessment(0);
@@ -575,7 +576,7 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent {
businessAssayProjectDataDO.setDataType(configAssayMethodProjectDO.getDataType());
businessAssayProjectDataDO.setDecimalPosition(configAssayMethodProjectDO.getDecimalPosition());
businessAssayProjectDataDO.setUsage(QmsCommonConstant.ASSAY_PROJECT_USAGE_INGREDIENT);
businessAssayProjectDataDO.setMinimumLimitValue(configAssayMethodProjectDO.getMinimumLimitValue());
businessAssayProjectDataDO.setIsEnabled(1);
businessAssayProjectDataDO.setIsNotAssessment(0);

View File

@@ -559,6 +559,7 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
businessSubSampleAssessmentDO.setAssayType(businessAssayTaskDataDO.getAssayType());
businessSubSampleAssessmentDO.setTaskType(businessAssayTaskDataDO.getTaskType());
businessSubSampleAssessmentDO.setUsage(businessAssayProjectDataDO.getUsage());
businessSubSampleAssessmentDO.setMinimumLimitValue(businessAssayProjectDataDO.getMinimumLimitValue());
businessSubSampleAssessmentDO.setSymbol(businessAssayProjectDataDO.getSymbol());
businessSubSampleAssessmentDO.setAssessmentStatus(QmsCommonConstant.NORMAL);
businessSubSampleAssessmentDO.setAssessmentValue(businessAssayProjectDataDO.getValue());
@@ -722,6 +723,8 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
businessSubParentSampleAssessmentDO.setAssayType(businessSubSampleAssessment.getAssayType());
businessSubParentSampleAssessmentDO.setDataType(businessSubSampleAssessment.getDataType());
businessSubParentSampleAssessmentDO.setDecimalPosition(businessSubSampleAssessment.getDecimalPosition());
businessSubParentSampleAssessmentDO.setUsage(businessSubSampleAssessment.getUsage());
businessSubParentSampleAssessmentDO.setMinimumLimitValue(businessSubParentSampleAssessmentDO.getMinimumLimitValue());
businessSubParentSampleAssessmentDO.setConfigAssayMethodId(businessSubSampleAssessment.getConfigAssayMethodId());
businessSubParentSampleAssessmentDO.setConfigAssayMethodProjectId(businessSubSampleAssessment.getConfigAssayMethodProjectId());
businessSubParentSampleAssessmentDO.setDictionaryProjectId(businessSubSampleAssessment.getDictionaryProjectId());

View File

@@ -471,8 +471,12 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
reportFieldValueData.setFieldName(configReportField.getFieldName());
reportFieldValueData.setFieldValue(businessSubParentSampleAssessment.getAssessmentValue());
reportFieldValueData.setDataType(configReportField.getDataType());
reportFieldValueData.setDecimalPosition(configReportField.getDecimalPosition());
reportFieldValueData.setMathSymbol("=");
reportFieldValueData.setUnit(configProjectFeild.getDictionaryProjectUnit());
reportFieldValueData.setUnit(configProjectFeild.getDictionaryProjectUnit());
reportFieldValueData.setUsage(businessSubParentSampleAssessment.getUsage());
reportFieldValueData.setMinLimitValue(businessSubParentSampleAssessment.getMinimumLimitValue());
reportFieldValueData.setMethodName(businessSubParentSampleAssessment.getConfigAssayMethodName());
assayDataJson.put(configReportField.getField(), reportFieldValueData);
}
}

View File

@@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigXRFLineRespVO;
import com.zt.plat.module.qms.thirdpartyapi.controller.vo.*;
import com.zt.plat.module.qms.thirdpartyapi.service.XRFDataService;
@@ -26,7 +25,7 @@ public class XRFDataController {
@GetMapping("/xrf-line-list")
public CommonResult<?> getXrfLineList(@RequestParam("deviceNo") String deviceNo) {
List<ConfigXRFLineRespVO> list = xrfDataService.getXrfLineList(deviceNo);
List<ConfigXRFLineCustomRespVO> list = xrfDataService.getXrfLineList(deviceNo);
return CommonResult.success(list);
}

View File

@@ -0,0 +1,66 @@
package com.zt.plat.module.qms.thirdpartyapi.controller.vo;
import java.io.Serializable;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class ConfigXRFLineCustomRespVO implements Serializable {
private static final long serialVersionUID = 4827957658423219091L;
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10711")
private Long id;
@Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String deviceNo;
@Schema(description = "荧光线名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
private String lineName;
@Schema(description = "是否启用,0、未启用1、启用")
private Integer isUse;
@Schema(description = "连接字符串")
private String connectString;
@Schema(description = "数据源类型,1rdb,2mdb", example = "1")
private Integer dataSourceType;
@Schema(description = "末次同步数据时间")
@JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化(响应)
@JsonDeserialize(using = LocalDateDeserializer.class) // 反序列化(请求)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastSynchronousDataTime;
@Schema(description = "末次检查数据时间")
@JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化(响应)
@JsonDeserialize(using = LocalDateDeserializer.class) // 反序列化(请求)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime lastCheckDataTime;
@Schema(description = "所属部门")
private String systemDepartmentCode;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化(响应)
@JsonDeserialize(using = LocalDateDeserializer.class) // 反序列化(请求)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@Schema(description = "备注")
private String remark;
}

View File

@@ -7,6 +7,10 @@ import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -43,6 +47,8 @@ public class XRFDeviceSampleReqVO implements Serializable {
/**
* 样品时间
*/
@JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化(响应)
@JsonDeserialize(using = LocalDateDeserializer.class) // 反序列化(请求)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "样品时间")

View File

@@ -2,12 +2,11 @@ package com.zt.plat.module.qms.thirdpartyapi.service;
import java.util.List;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigXRFLineRespVO;
import com.zt.plat.module.qms.thirdpartyapi.controller.vo.XRFDeviceSampleReqVO;
import com.zt.plat.module.qms.thirdpartyapi.controller.vo.*;
public interface XRFDataService {
List<ConfigXRFLineRespVO> getXrfLineList(String deviceNo);
List<ConfigXRFLineCustomRespVO> getXrfLineList(String deviceNo);
int submitXrfData(List<XRFDeviceSampleReqVO> reqList);

View File

@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO;
@@ -22,7 +23,6 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessXRFDataDO;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayProjectDataMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessXRFDataMapper;
import com.zt.plat.module.qms.business.config.controller.vo.*;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigXRFConversionRateDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigXRFLineDO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigXRFProjectDO;
@@ -62,9 +62,9 @@ public class XRFDataServiceImpl implements XRFDataService {
private BusinessAssayProjectDataMapper businessAssayProjectDataMapper;
@Override
public List<ConfigXRFLineRespVO> getXrfLineList(String deviceNo) {
public List<ConfigXRFLineCustomRespVO> getXrfLineList(String deviceNo) {
List<ConfigXRFLineDO> list = configXRFLineMapper.selectByDeviceNo(deviceNo);
return BeanUtils.toBean(list, ConfigXRFLineRespVO.class);
return BeanUtils.toBean(list, ConfigXRFLineCustomRespVO.class);
}
@Override
@@ -118,6 +118,12 @@ public class XRFDataServiceImpl implements XRFDataService {
busYgData.setSampleTime(ygDeviceSample.getSampleTime());
busYgData.setAssayOperator(ygDeviceSample.getAssayOper());
busYgData.setIsCheckCreate(ygDeviceSample.getIsCheck() ? 1 : 0);
JSONObject assayDataJson = new JSONObject();
String assayData = busYgData.getAssayData();
if (StringUtils.isNotBlank(assayData)) {
assayDataJson = JSON.parseObject(assayData);
}
//处理匹配
@@ -147,7 +153,7 @@ public class XRFDataServiceImpl implements XRFDataService {
} else {
conYgElement = conYgElementList.stream().filter(f -> f.getXRFProjectName().equals(ygDeviceSampleElement.getXRFProjectName()) && (StringUtils.isBlank(f.getXRFProjectUnit()) || StringUtils.isBlank(ygDeviceSampleElement.getXRFProjectUnit()) || f.getXRFProjectUnit().equals(ygDeviceSampleElement.getXRFProjectUnit()))).findFirst().orElse(null);
}
if(conYgElement != null) {
if(conYgElement != null) {
//数据转换
BigDecimal elementValue = BigDecimal.ZERO;
Integer conYgElementDataType = 0;
@@ -177,6 +183,14 @@ public class XRFDataServiceImpl implements XRFDataService {
busElementValueList.add(BeanUtils.toBean(busElementValue, BusinessAssayProjectDataDO.class));
}
ReportFieldValueData reportFieldValueData = new ReportFieldValueData();
reportFieldValueData.setFieldName(conYgElement.getSaveColumn());
reportFieldValueData.setFieldValue(ygDeviceSampleElement.getXRFProjectName());
reportFieldValueData.setDecimalPosition(ygDeviceSampleElement.getValueDecimals());
reportFieldValueData.setMathSymbol("=");
reportFieldValueData.setUnit(ygDeviceSampleElement.getXRFProjectUnit());
assayDataJson.put(conYgElement.getSaveColumn(), reportFieldValueData);
// if(conYgElementDataType != null && conYgElementDataType.intValue() > -1) {
// BeanUtil.setFieldValue(busYgData, conYgElement.getSaveColumn(), elementValue.setScale(conYgElementDataType, BigDecimal.ROUND_HALF_EVEN).toPlainString());//数据格式化-四舍六入五单双
// } else {
@@ -192,6 +206,9 @@ public class XRFDataServiceImpl implements XRFDataService {
}
}
//设置分析数据
busYgData.setAssayData(assayDataJson.toJSONString());
if (businessAssayTaskData != null) {
busYgData.setIsMatched(QmsCommonConstant.YES);
busYgData.setBusinessBaseSampleId(businessAssayTaskData.getBusinessBaseSampleId());