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