7 changed files with 462 additions and 0 deletions
-
70src/main/java/com/heai/modules/pms/data/QcFAIRecordData.java
-
56src/main/java/com/heai/modules/pms/entity/InspectInfoToQmsDto.java
-
6src/main/java/com/heai/modules/pms/mapper/QcMapper.java
-
26src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java
-
216src/main/java/com/heai/modules/pms/service/Impl/SynInspectInfoToQmsServiceImpl.java
-
9src/main/java/com/heai/modules/pms/service/SynInspectInfoToQmsService.java
-
79src/main/resources/mapper/pms/QcMapper.xml
@ -0,0 +1,56 @@ |
|||||
|
package com.heai.modules.pms.entity; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
@Data |
||||
|
public class InspectInfoToQmsDto { |
||||
|
private String transNo; |
||||
|
private String site; |
||||
|
private String fromProLineNo; |
||||
|
private String toProLineNo; |
||||
|
private String toWarehouseID; |
||||
|
private String fromEnteredby; |
||||
|
private Date fromEnteredDate; |
||||
|
private Date transDate; |
||||
|
private String toReceiver; |
||||
|
private String fromReceiver; |
||||
|
private String fromRemark; |
||||
|
private String toRemark; |
||||
|
private String confirmedFlag; |
||||
|
private String toConfirmedBy; |
||||
|
private String toEnteredby; |
||||
|
private Date toEnteredDate; |
||||
|
private String latestUpdatedBy; |
||||
|
private Date latestUpdatedDate; |
||||
|
private String recordVersion; |
||||
|
private String status; |
||||
|
private String toTypeFlagDB; |
||||
|
private String toTypeFlag; |
||||
|
private String confirmedTransNo; |
||||
|
private String needInspectFlag; |
||||
|
private String inspectedFlag; |
||||
|
private String inspectResult; |
||||
|
private String inspectRemark; |
||||
|
private String needReceiveFlag; |
||||
|
private Integer itemNo; |
||||
|
private Integer fromOpsID; |
||||
|
private String fromWorkCenterNo; |
||||
|
private String toWorkCenterNo; |
||||
|
private Integer toOpsID; |
||||
|
private String orderNo; |
||||
|
private String partNo; |
||||
|
private Double transQty; |
||||
|
private Double confirmQty; |
||||
|
private String taskNo; |
||||
|
private String insStatus; |
||||
|
private Double toConfirmQty; |
||||
|
private Integer seqNo; |
||||
|
private Double boxWeight; |
||||
|
private String orderRef1; |
||||
|
private String orderRef2; |
||||
|
private String orderRef3; |
||||
|
private String orderRef4; |
||||
|
private String orderRef5; |
||||
|
} |
||||
@ -0,0 +1,216 @@ |
|||||
|
package com.heai.modules.pms.service.Impl; |
||||
|
|
||||
|
import com.heai.modules.pms.data.QcFAIRecordData; |
||||
|
import com.heai.modules.pms.data.QcSamplingInspectionProgrammeData; |
||||
|
import com.heai.modules.pms.data.QcTemplateData; |
||||
|
import com.heai.modules.pms.entity.InspectInfoToQmsDto; |
||||
|
import com.heai.modules.pms.mapper.QcMapper; |
||||
|
import com.heai.modules.pms.service.SynInspectInfoToQmsService; |
||||
|
import com.heai.modules.sys.entity.SysSceneDynamicControlModelEntity; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Service |
||||
|
public class SynInspectInfoToQmsServiceImpl implements SynInspectInfoToQmsService { |
||||
|
@Autowired |
||||
|
private QcMapper qcMapper; |
||||
|
|
||||
|
@Override |
||||
|
@Transactional |
||||
|
public String synInspectInfoToQms(List<InspectInfoToQmsDto> inspect) { |
||||
|
for (InspectInfoToQmsDto inspectInfoToQmsDto : inspect){ |
||||
|
QcFAIRecordData data = new QcFAIRecordData(); |
||||
|
data.setSite(inspectInfoToQmsDto.getSite()); |
||||
|
data.setPartNo(inspectInfoToQmsDto.getPartNo()); |
||||
|
data.setRefInfo1(inspectInfoToQmsDto.getTransNo()); |
||||
|
data.setRefInfo2(inspectInfoToQmsDto.getItemNo().toString()); |
||||
|
data.setOrderNo(inspectInfoToQmsDto.getOrderNo()); |
||||
|
|
||||
|
|
||||
|
data.setTaskDate(new Date()); |
||||
|
if("W".equals(inspectInfoToQmsDto.getToTypeFlagDB())){//FQC |
||||
|
String InspectionNo = qcMapper.selectFQCInspectionNo(data); |
||||
|
data.setInspectionNo("FQC" + InspectionNo); |
||||
|
data.setState("未开始"); |
||||
|
List<QcFAIRecordData> partAttribute; |
||||
|
// 检查动控是否已开启 |
||||
|
// 根据用户选择的模板编码获取模板详情,todo同步的数据模板id哪里来 |
||||
|
//partAttribute = qcMapper.selectTemplate(data); |
||||
|
partAttribute = qcMapper.selectTemplateByPartNo(data); |
||||
|
// 获取检验周期 |
||||
|
if (partAttribute.get(0).getInspectionCycle() != null) { |
||||
|
data.setInspectionCycle(partAttribute.get(0).getInspectionCycle()); |
||||
|
} |
||||
|
// 获取抽样数量 |
||||
|
BigDecimal samplingQty = getInspectionSamplingQty(partAttribute, data.getRollQty()); |
||||
|
data.setSamplingQty(samplingQty); |
||||
|
// 获取检验明细数据 |
||||
|
List<QcFAIRecordData> faiRecordDataList = getInspectionDetails(partAttribute.get(0), data); |
||||
|
// 新增FQC明细记录信息 |
||||
|
for (QcFAIRecordData recordData : faiRecordDataList) { |
||||
|
qcMapper.saveFQCDetailedRecord(recordData); |
||||
|
} |
||||
|
// 新增FQC主记录信息 |
||||
|
qcMapper.saveFQCRecord(data); |
||||
|
}else if("I".equals(inspectInfoToQmsDto.getToTypeFlagDB())){//IPQC |
||||
|
String InspectionNo = qcMapper.selectIPQCInspectionNo(data); |
||||
|
data.setInspectionNo("IPQC" + InspectionNo); |
||||
|
data.setState("未开始"); |
||||
|
List<QcFAIRecordData> partAttribute; |
||||
|
// 检查动控是否已开启 |
||||
|
// 根据用户选择的模板编码获取模板详情 |
||||
|
//partAttribute = qcMapper.selectTemplate(data); |
||||
|
partAttribute = qcMapper.selectTemplateByPartNo(data); |
||||
|
// 获取检验周期 |
||||
|
if (partAttribute.get(0).getInspectionCycle() != null) { |
||||
|
data.setInspectionCycle(partAttribute.get(0).getInspectionCycle()); |
||||
|
} |
||||
|
// 获取抽样数量 |
||||
|
BigDecimal samplingQty = getInspectionSamplingQty(partAttribute, data.getRollQty()); |
||||
|
data.setSamplingQty(samplingQty); |
||||
|
// 获取检验明细数据 |
||||
|
List<QcFAIRecordData> faiRecordDataList = getInspectionDetails(partAttribute.get(0), data); |
||||
|
// 新增IPQC明细记录信息 |
||||
|
for (QcFAIRecordData recordData : faiRecordDataList) { |
||||
|
qcMapper.saveIPQCDetailedRecord(recordData); |
||||
|
} |
||||
|
// 新增IPQC主记录信息 |
||||
|
qcMapper.saveIPQCRecord(data); |
||||
|
}else if ("Q".equals(inspectInfoToQmsDto.getToTypeFlagDB())){ //IQC |
||||
|
String InspectionNo = qcMapper.selectIQCInspectionNo(data); |
||||
|
data.setInspectionNo("IQC" + InspectionNo); |
||||
|
data.setState("未开始"); |
||||
|
List<QcFAIRecordData> partAttribute; |
||||
|
// 检查动控是否已开启 |
||||
|
// 根据用户选择的模板编码获取模板详情 |
||||
|
//partAttribute = qcMapper.selectTemplate(data); |
||||
|
partAttribute = qcMapper.selectTemplateByPartNo(data); |
||||
|
// 获取检验周期 |
||||
|
if (partAttribute.get(0).getInspectionCycle() != null) { |
||||
|
data.setInspectionCycle(partAttribute.get(0).getInspectionCycle()); |
||||
|
} |
||||
|
// 获取抽样数量 |
||||
|
BigDecimal samplingQty = getInspectionSamplingQty(partAttribute, data.getRollQty()); |
||||
|
data.setSamplingQty(samplingQty); |
||||
|
// 获取检验明细数据 |
||||
|
List<QcFAIRecordData> faiRecordDataList = getInspectionDetails(partAttribute.get(0), data); |
||||
|
// 新增IPQC明细记录信息 |
||||
|
for (QcFAIRecordData recordData : faiRecordDataList) { |
||||
|
qcMapper.saveIQCDetailedRecord(recordData); |
||||
|
} |
||||
|
// 新增IPQC主记录信息 |
||||
|
qcMapper.saveIQCRecord(data); |
||||
|
}else if("S".equals(inspectInfoToQmsDto.getToTypeFlagDB())){ //过期复检 |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
return "200"; |
||||
|
} |
||||
|
|
||||
|
public BigDecimal getInspectionSamplingQty(List<QcFAIRecordData> partAttribute, BigDecimal rollQty) { |
||||
|
QcFAIRecordData firstPart = partAttribute.get(0); |
||||
|
BigDecimal samplingQty = null; |
||||
|
// 如果该检验模板有维护抽样方案 |
||||
|
if (StringUtils.isNotBlank(firstPart.getSamplingProgrammeNo())) { |
||||
|
QcSamplingInspectionProgrammeData searchCriteria = new QcSamplingInspectionProgrammeData(); |
||||
|
searchCriteria .setSite(firstPart.getSite()); |
||||
|
searchCriteria .setBuNo(firstPart.getBuNo()); |
||||
|
searchCriteria .setSamplingProgrammeNo(firstPart.getSamplingProgrammeNo()); |
||||
|
// 获取抽样方案维护的矩阵详情 |
||||
|
List<QcSamplingInspectionProgrammeData> dataList = qcMapper.searchSamplingProgrammeDetails(searchCriteria); |
||||
|
// 根据抽样方案确定抽样数 |
||||
|
for (QcSamplingInspectionProgrammeData programmeData : dataList) { |
||||
|
if (programmeData.getSamplingLevelNo().equals(firstPart.getSamplingLevelNo()) && (rollQty.compareTo(programmeData.getMinQty()) > 0 || rollQty.compareTo(programmeData.getMinQty()) == 0) && (rollQty.compareTo(programmeData.getMaxQty()) < 0 || rollQty.compareTo(programmeData.getMaxQty()) == 0) ){ |
||||
|
samplingQty = programmeData.getSamplingQty(); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
// 没有维护抽样方案,再根据默认抽样数来确定 |
||||
|
if (samplingQty == null && firstPart.getDefaultSamplingQuantity() != null) { |
||||
|
samplingQty = firstPart.getDefaultSamplingQuantity(); |
||||
|
} |
||||
|
// 也没有维护默认抽样数,最后根据默认抽样比例来确定 |
||||
|
if (samplingQty == null && firstPart.getDefaultSamplingProportion() != null) { |
||||
|
samplingQty = firstPart.getDefaultSamplingProportion().multiply(rollQty).divide(new BigDecimal(100),3,BigDecimal.ROUND_HALF_UP); |
||||
|
} |
||||
|
return samplingQty; |
||||
|
} |
||||
|
|
||||
|
public List<QcFAIRecordData> getInspectionDetails(QcFAIRecordData firstPart, QcFAIRecordData data) { |
||||
|
// 获取根据该检验模板下维护的检验项目 |
||||
|
QcTemplateData templateData = new QcTemplateData(); |
||||
|
templateData.setSite(data.getSite()); |
||||
|
templateData.setBuNo(data.getBuNo()); |
||||
|
templateData.setTemplateId(firstPart.getTemplateId()); |
||||
|
templateData.setItemType("D"); |
||||
|
List<QcTemplateData> itemList = qcMapper.templateDetailsSearch(templateData); |
||||
|
List<QcFAIRecordData> faiRecordDataList = new ArrayList<>(); |
||||
|
for (QcTemplateData qcTemplateData : itemList) { |
||||
|
QcFAIRecordData faiRecordData = new QcFAIRecordData(); |
||||
|
faiRecordData.setSite(data.getSite()); // 工厂 |
||||
|
faiRecordData.setBuNo(data.getBuNo()); // BU |
||||
|
faiRecordData.setInspectionNo(data.getInspectionNo()); // 检验单号 |
||||
|
faiRecordData.setOrderNo(data.getOrderNo()); // 工单号 |
||||
|
faiRecordData.setTemplateId(firstPart.getTemplateId()); // 模板编码 |
||||
|
faiRecordData.setAql(firstPart.getAql()); // aql |
||||
|
faiRecordData.setAc(firstPart.getAc()); // ac |
||||
|
faiRecordData.setRe(firstPart.getRe()); // re |
||||
|
faiRecordData.setSamplingQty(null); |
||||
|
faiRecordData.setSamplingLevelNo(qcTemplateData.getSamplingLevelNo()); // 检验水平编码 |
||||
|
faiRecordData.setSamplingLevelDesc(qcTemplateData.getSamplingLevelDesc()); // 检验水平名称 |
||||
|
faiRecordData.setSamplingProgrammeNo(qcTemplateData.getSamplingProgrammeNo()); // 抽样方案编码 |
||||
|
faiRecordData.setSamplingProgrammeDesc(qcTemplateData.getSamplingProgrammeDesc()); // 抽样方案名称 |
||||
|
faiRecordData.setItemNo(qcTemplateData.getItemNo()); // 项目编码 |
||||
|
faiRecordData.setItemDesc(qcTemplateData.getItemDesc()); // 项目名称 |
||||
|
faiRecordData.setObjectId(qcTemplateData.getObjectID()); // 设备编码 |
||||
|
faiRecordData.setObjectDesc(qcTemplateData.getObjectDesc()); // 设备名称 |
||||
|
faiRecordData.setDefaultValue(qcTemplateData.getDefaultValue()); // 默认值 |
||||
|
faiRecordData.setMinValue(qcTemplateData.getMinValue()); // 最小值 |
||||
|
faiRecordData.setMaxValue(qcTemplateData.getMaxValue()); // 最大值 |
||||
|
faiRecordData.setValueType(qcTemplateData.getValueType()); // 检测值类型 |
||||
|
faiRecordData.setValueTypeDb(qcTemplateData.getValueTypeDb()); |
||||
|
faiRecordData.setOrderId(qcTemplateData.getOrderId()); |
||||
|
// 获取抽样数量 |
||||
|
// 如果该检验项目有维护抽样方案 |
||||
|
BigDecimal samplingQty = null; |
||||
|
if (StringUtils.isNotBlank(qcTemplateData.getSamplingProgrammeNo())) { |
||||
|
QcSamplingInspectionProgrammeData searchCriteria = new QcSamplingInspectionProgrammeData(); |
||||
|
searchCriteria.setSite(qcTemplateData.getSite()); |
||||
|
searchCriteria.setBuNo(qcTemplateData.getBuNo()); |
||||
|
searchCriteria.setSamplingProgrammeNo(qcTemplateData.getSamplingProgrammeNo()); |
||||
|
// 获取抽样方案维护的矩阵详情 |
||||
|
List<QcSamplingInspectionProgrammeData> dataList = qcMapper.searchSamplingProgrammeDetails(searchCriteria); |
||||
|
// 根据抽样方案确定抽样数 |
||||
|
for (QcSamplingInspectionProgrammeData programmeData : dataList) { |
||||
|
if (programmeData.getSamplingLevelNo().equals(qcTemplateData.getSamplingLevelNo()) && (data.getRollQty().compareTo(programmeData.getMinQty()) > 0 || data.getRollQty().compareTo(programmeData.getMinQty()) == 0) && (data.getRollQty().compareTo(programmeData.getMaxQty()) < 0 || data.getRollQty().compareTo(programmeData.getMaxQty()) == 0)) { |
||||
|
samplingQty = programmeData.getSamplingQty(); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
// 没有维护抽样方案,再根据默认抽样数来确定 |
||||
|
if (samplingQty == null && qcTemplateData.getItemSamplingQuantity() != null) { |
||||
|
samplingQty = qcTemplateData.getItemSamplingQuantity(); |
||||
|
} |
||||
|
// 也没有维护默认抽样数,最后根据默认抽样比例来确定 |
||||
|
if (samplingQty == null && qcTemplateData.getDefaultSamplingProportion() != null) { |
||||
|
samplingQty = qcTemplateData.getDefaultSamplingProportion().multiply(data.getRollQty()).divide(new BigDecimal(100), 3, BigDecimal.ROUND_HALF_UP); |
||||
|
} |
||||
|
// 最后则根据检验单抽样数量赋值 |
||||
|
if (samplingQty == null) { |
||||
|
samplingQty = data.getSamplingQty(); |
||||
|
} |
||||
|
faiRecordData.setSamplingQty(samplingQty); |
||||
|
faiRecordDataList.add(faiRecordData); |
||||
|
} |
||||
|
return faiRecordDataList; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
package com.heai.modules.pms.service; |
||||
|
|
||||
|
import com.heai.modules.pms.entity.InspectInfoToQmsDto; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
public interface SynInspectInfoToQmsService { |
||||
|
String synInspectInfoToQms(List<InspectInfoToQmsDto> inspect); |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue