Browse Source

刀模采集修改

master
shenzhouyu 5 months ago
parent
commit
a5957c6651
  1. 1
      src/main/java/com/xujie/sys/common/utils/ModbusUtils.java
  2. 13
      src/main/java/com/xujie/sys/modules/pms/mapper/DmMapper.java
  3. 22
      src/main/java/com/xujie/sys/modules/pms/service/Impl/DmFaiServiceImpl.java
  4. 8
      src/main/java/com/xujie/sys/modules/pms/service/Impl/DmServiceImpl.java
  5. 46
      src/main/resources/mapper/pms/DmMapper.xml

1
src/main/java/com/xujie/sys/common/utils/ModbusUtils.java

@ -35,6 +35,7 @@ public class ModbusUtils {
} catch (Exception e) {
log.error("读取单个寄存器失败 - IP: {}, Port: {}, Ref: {}, Error: {}",
ip, port, ref, e.getMessage());
throw new RuntimeException("请重试,连接寄存器失败:"+e);
} finally {
try {
master.disconnect();

13
src/main/java/com/xujie/sys/modules/pms/mapper/DmMapper.java

@ -134,15 +134,20 @@ public interface DmMapper {
List<QcFAIRecordData> selectDmTemplateForRecord(QcFAIRecordData data);
/**
* 通过 site+bu+templateId 判断是否存在覆盖项目
* 通过 site+bu+templateId+attribute_no(物料/族编码) 判断是否存在 dm_attribute_template_item 覆盖项目
*/
int countDmAttributeTemplateItemForTemplate(QcFAIRecordData data);
/**
* 优先使用 dm_attribute_template_item 的标准值,组装成巡检明细所需字段
* 优先使用 dm_attribute_template_item 的标准值,组装成巡检明细所需字段(按 attribute_no 限定物料)
*/
List<DmTemplateData> selectDmTemplateDetailForRecordByTemplateItem(QcFAIRecordData data);
/**
* DM FAI:按物料(partNo) + 模板在 dm_attribute_template 取头信息
*/
List<QcFAIRecordData> selectDmAttributeTemplateForFai(QcFAIRecordData data);
/**
* 自动生成 DM FAI:根据“来源模板templateId + inspectionTypeNo(823) + attributeNo + attributeType”
* 找到对应的 FAI 模板(返回 template_id,若多条取第一条)。
@ -157,14 +162,14 @@ public interface DmMapper {
List<QcFAIRecordData> selectDmToolAttributeByOperationAndResource(@Param("site") String site, @Param("buNo") String buNo,
@Param("partNo") String partNo, @Param("attributeType1") String attributeType1,
@Param("inspectionTypeNo") String inspectionTypeNo, @Param("operationDesc") String operationDesc,
@Param("resourceId") String resourceId);
@Param("resourceId") String resourceId, @Param("templateId") String templateId);
String selectDmToolFamilyId(@Param("site") String site, @Param("partNo") String partNo);
List<QcFAIRecordData> selectDmFamilyAttributeByOperationAndResource(@Param("site") String site, @Param("buNo") String buNo,
@Param("familyId") String familyId, @Param("attributeType2") String attributeType2,
@Param("inspectionTypeNo") String inspectionTypeNo, @Param("operationDesc") String operationDesc,
@Param("resourceId") String resourceId);
@Param("resourceId") String resourceId, @Param("templateId") String templateId);
void actionDMInspection(EamObjectInData data);

22
src/main/java/com/xujie/sys/modules/pms/service/Impl/DmFaiServiceImpl.java

@ -201,24 +201,32 @@ public class DmFaiServiceImpl implements DmFaiService {
controlModel.setControlNo("10004");
List<SysSceneDynamicControlModelEntity> controlList = qcMapper.queryController(controlModel);
if (controlList != null && !controlList.isEmpty() && "控制".equals(controlList.get(0).getBaseData())) {
partAttribute = dmMapper.selectDmTemplateForRecord(data);
if (partAttribute == null || partAttribute.isEmpty()) {
throw new RuntimeException("未找到检验模板,请检查模板是否在 dm_template 中维护!");
if (StringUtils.isNotBlank(data.getPartNo()) && StringUtils.isNotBlank(data.getTemplateId())) {
partAttribute = dmMapper.selectDmAttributeTemplateForFai(data);
if (partAttribute == null || partAttribute.isEmpty()) {
throw new RuntimeException("未找到刀模属性检验模板映射,请检查 dm_attribute_template 是否维护该物料与模板(检验类型 823)!");
}
} else {
partAttribute = dmMapper.selectDmTemplateForRecord(data);
if (partAttribute == null || partAttribute.isEmpty()) {
throw new RuntimeException("未找到检验模板,请检查模板是否在 dm_template 中维护!");
}
}
applyTemplateToDmFaiRecord(partAttribute.get(0), data);
} else {
String partNo = data.getPartNo();
String operationDesc = StringUtils.defaultString(data.getOperationDesc());
String resourceId = StringUtils.defaultString(data.getResourceId());
String filterTemplateId = StringUtils.isNotBlank(data.getTemplateId()) ? data.getTemplateId() : null;
partAttribute = dmMapper.selectDmToolAttributeByOperationAndResource(
data.getSite(), data.getBuNo(), partNo, "A", "106", operationDesc, resourceId);
data.getSite(), data.getBuNo(), partNo, "A", "823", operationDesc, resourceId, filterTemplateId);
if (partAttribute != null && !partAttribute.isEmpty()) {
applyTemplateToDmFaiRecord(partAttribute.get(0), data);
} else {
String familyId = dmMapper.selectDmToolFamilyId(data.getSite(), partNo);
if (StringUtils.isNotBlank(familyId)) {
List<QcFAIRecordData> familyAttribute = dmMapper.selectDmFamilyAttributeByOperationAndResource(
data.getSite(), data.getBuNo(), familyId, "B", "106", operationDesc, resourceId);
data.getSite(), data.getBuNo(), familyId, "B", "823", operationDesc, resourceId, filterTemplateId);
if (familyAttribute != null && !familyAttribute.isEmpty()) {
applyTemplateToDmFaiRecord(familyAttribute.get(0), data);
}
@ -276,6 +284,10 @@ public class DmFaiServiceImpl implements DmFaiService {
templateKey.setSite(data.getSite());
templateKey.setBuNo(data.getBuNo());
templateKey.setTemplateId(firstPart.getTemplateId());
String attributeNoForItems = StringUtils.isNotBlank(firstPart.getAttributeNo())
? firstPart.getAttributeNo()
: (StringUtils.isNotBlank(data.getAttributeNo()) ? data.getAttributeNo() : data.getPartNo());
templateKey.setAttributeNo(attributeNoForItems);
int overrideCount = dmMapper.countDmAttributeTemplateItemForTemplate(templateKey);
if (overrideCount > 0) {
itemList = dmMapper.selectDmTemplateDetailForRecordByTemplateItem(templateKey);

8
src/main/java/com/xujie/sys/modules/pms/service/Impl/DmServiceImpl.java

@ -448,14 +448,14 @@ public class DmServiceImpl implements DmService {
String partNo = data.getPartNo();
String operationDesc = StringUtils.defaultString(data.getOperationDesc());
String resourceId = StringUtils.defaultString(data.getResourceId());
partAttribute = dmMapper.selectDmToolAttributeByOperationAndResource(data.getSite(), data.getBuNo(), partNo, "A", "822", operationDesc, resourceId);
partAttribute = dmMapper.selectDmToolAttributeByOperationAndResource(data.getSite(), data.getBuNo(), partNo, "A", "822", operationDesc, resourceId, null);
if (partAttribute != null && !partAttribute.isEmpty()) {
applyTemplateToDmIpqcRecord(partAttribute.get(0), data);
} else {
String familyId = dmMapper.selectDmToolFamilyId(data.getSite(), partNo);
if (StringUtils.isNotBlank(familyId)) {
List<QcFAIRecordData> familyAttribute = dmMapper.selectDmFamilyAttributeByOperationAndResource(
data.getSite(), data.getBuNo(), familyId, "B", "822", operationDesc, resourceId);
data.getSite(), data.getBuNo(), familyId, "B", "822", operationDesc, resourceId, null);
if (familyAttribute != null && !familyAttribute.isEmpty()) {
applyTemplateToDmIpqcRecord(familyAttribute.get(0), data);
}
@ -529,6 +529,10 @@ public class DmServiceImpl implements DmService {
templateKey.setSite(data.getSite());
templateKey.setBuNo(data.getBuNo());
templateKey.setTemplateId(firstPart.getTemplateId());
String attributeNoForItems = StringUtils.isNotBlank(firstPart.getAttributeNo())
? firstPart.getAttributeNo()
: (StringUtils.isNotBlank(data.getAttributeNo()) ? data.getAttributeNo() : data.getPartNo());
templateKey.setAttributeNo(attributeNoForItems);
int overrideCount = dmMapper.countDmAttributeTemplateItemForTemplate(templateKey);
if (overrideCount > 0) {
itemList = dmMapper.selectDmTemplateDetailForRecordByTemplateItem(templateKey);

46
src/main/resources/mapper/pms/DmMapper.xml

@ -426,6 +426,7 @@
select count(1)
from dm_attribute_template_item
where site = #{site} and bu_no = #{buNo} and template_id = #{templateId}
and attribute_no = #{attributeNo}
</select>
<select id="selectDmTemplateDetailForRecordByTemplateItem" resultType="com.xujie.sys.modules.pms.data.DmTemplateData" parameterType="com.xujie.sys.modules.pms.data.QcFAIRecordData">
@ -442,6 +443,7 @@
row_number() over (partition by a.item_no order by isnull(a.order_id, 999999), a.attribute_no) as rn
from dm_attribute_template_item a
where a.site = #{site} and a.bu_no = #{buNo} and a.template_id = #{templateId}
and a.attribute_no = #{attributeNo}
)
select
c.site,
@ -467,7 +469,7 @@
left join dm_template_detailed td
on td.site = c.site and td.bu_no = c.bu_no and td.template_id = c.template_id and td.item_no = c.item_no
left join dm_properties_item p
on p.site = td.site and p.bu_no = td.bu_no and p.ItemNo = td.item_no
on p.site = c.site and p.bu_no = c.bu_no and p.ItemNo = c.item_no
left join dm_sampling_inspection_level qsil
on qsil.site = td.site and qsil.bu_no = td.bu_no and qsil.sampling_level_no = p.sampling_level_no
left join dm_sampling_inspection_programme qsip
@ -524,14 +526,17 @@
qt.default_sampling_proportion
FROM dm_attribute_template as qat
LEFT JOIN dm_template as qt ON qat.template_id = qt.template_id and qat.site = qt.site and qat.bu_no = qt.bu_no
LEFT JOIN qc_sampling_inspection_level as qsil ON qat.sampling_level_no = qsil.sampling_level_no and qat.site = qsil.site and qat.bu_no = qsil.bu_no
LEFT JOIN qc_sampling_inspection_programme as qsip ON qat.sampling_programme_no = qsip.sampling_programme_no and qat.site = qsip.site and qat.bu_no = qsip.bu_no
LEFT JOIN dm_sampling_inspection_level as qsil ON qat.sampling_level_no = qsil.sampling_level_no and qat.site = qsil.site and qat.bu_no = qsil.bu_no
LEFT JOIN dm_sampling_inspection_programme as qsip ON qat.sampling_programme_no = qsip.sampling_programme_no and qat.site = qsip.site and qat.bu_no = qsip.bu_no
WHERE qat.site = #{site} and qat.bu_no = #{buNo}
AND qat.attribute_no = #{partNo}
AND qat.attribute_type = #{attributeType1}
AND qt.inspection_type_no = #{inspectionTypeNo}
AND isnull(qat.operation, '') = isnull(#{operationDesc}, '')
AND isnull(qat.resource_id, '') = isnull(#{resourceId}, '')
<if test="templateId != null and templateId != ''">
AND qat.template_id = #{templateId}
</if>
</select>
<select id="selectDmToolFamilyId" resultType="string">
@ -557,14 +562,45 @@
qt.default_sampling_proportion
FROM dm_attribute_template as qat
LEFT JOIN dm_template as qt ON qat.template_id = qt.template_id and qat.site = qt.site and qat.bu_no = qt.bu_no
LEFT JOIN qc_sampling_inspection_level as qsil ON qat.sampling_level_no = qsil.sampling_level_no and qat.site = qsil.site and qat.bu_no = qsil.bu_no
LEFT JOIN qc_sampling_inspection_programme as qsip ON qat.sampling_programme_no = qsip.sampling_programme_no and qat.site = qsip.site and qat.bu_no = qsip.bu_no
LEFT JOIN dm_sampling_inspection_level as qsil ON qat.sampling_level_no = qsil.sampling_level_no and qat.site = qsil.site and qat.bu_no = qsil.bu_no
LEFT JOIN dm_sampling_inspection_programme as qsip ON qat.sampling_programme_no = qsip.sampling_programme_no and qat.site = qsip.site and qat.bu_no = qsip.bu_no
WHERE qat.site = #{site} and qat.bu_no = #{buNo}
AND qat.attribute_no = #{familyId}
AND qat.attribute_type = #{attributeType2}
AND qt.inspection_type_no = #{inspectionTypeNo}
AND isnull(qat.operation, '') = isnull(#{operationDesc}, '')
AND isnull(qat.resource_id, '') = isnull(#{resourceId}, '')
<if test="templateId != null and templateId != ''">
AND qat.template_id = #{templateId}
</if>
</select>
<!-- DM FAI 保存:按物料(partNo 即 attribute_no) + 模板在 dm_attribute_template 取头信息(与 dm_template 关联) -->
<select id="selectDmAttributeTemplateForFai" resultType="com.xujie.sys.modules.pms.data.QcFAIRecordData" parameterType="com.xujie.sys.modules.pms.data.QcFAIRecordData">
SELECT
qat.site,
qat.bu_no,
qat.attribute_no,
qat.template_id,
qt.template_name,
qat.sampling_level_no,
qsil.sampling_level_desc,
qat.inspection_cycle,
qat.sampling_programme_no,
qsip.sampling_programme_desc,
qat.AQL,
qat.AC,
qat.RE,
qt.default_sampling_quantity,
qt.default_sampling_proportion
FROM dm_attribute_template as qat
LEFT JOIN dm_template as qt ON qat.template_id = qt.template_id and qat.site = qt.site and qat.bu_no = qt.bu_no
LEFT JOIN dm_sampling_inspection_level as qsil ON qat.sampling_level_no = qsil.sampling_level_no and qat.site = qsil.site and qat.bu_no = qsil.bu_no
LEFT JOIN dm_sampling_inspection_programme as qsip ON qat.sampling_programme_no = qsip.sampling_programme_no and qat.site = qsip.site and qat.bu_no = qsip.bu_no
WHERE qat.site = #{site} and qat.bu_no = #{buNo}
AND qat.attribute_no = #{partNo}
AND qat.template_id = #{templateId}
AND qt.inspection_type_no = #{inspectionTypeNo}
</select>
<update id="actionDMInspection" parameterType="com.xujie.sys.modules.pms.data.EamObjectInData">

Loading…
Cancel
Save