Browse Source

feat(qc): 添加质检项目检验结论自动更新功能

- 在QcMapper中新增updateIPQCItemResultBySubDetail和updateFQCItemResultBySubDetail方法
- 在QcMapper.xml中添加对应的SQL更新语句
- 实现清空子明细时项目检验结论复位为合格的功能
- 添加根据子明细实测值自动推导项目检验结论的逻辑
- 支持IPQC和FQC两种质检类型的自动判定功能
- 当存在不合格值时设置结论为N,全部合格时设置为Y
master
qiankanghui 2 weeks ago
parent
commit
f153b59a8f
  1. 8
      src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java
  2. 14
      src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java
  3. 16
      src/main/resources/mapper/pms/QcMapper.xml

8
src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java

@ -288,6 +288,10 @@ public interface QcMapper {
void delIPQCSubDetailedRecord(QcSubDetailInformationData data);
void updateIPQCItemResultBySubDetail(@Param("site") String site, @Param("buNo") String buNo,
@Param("inspectionNo") String inspectionNo, @Param("itemNo") String itemNo,
@Param("itemResult") String itemResult, @Param("unqualifiedQuantity") Integer unqualifiedQuantity);
void saveIPQCSubDetailed(List<SubDetailValues> subDetailValues);
List<SubDetailValues> selectIPQCSubDetailedRecord(SubDetailValues data);
@ -397,6 +401,10 @@ public interface QcMapper {
void delFQCSubDetailedRecord(QcSubDetailInformationData data);
void updateFQCItemResultBySubDetail(@Param("site") String site, @Param("buNo") String buNo,
@Param("inspectionNo") String inspectionNo, @Param("itemNo") String itemNo,
@Param("itemResult") String itemResult, @Param("unqualifiedQuantity") Integer unqualifiedQuantity);
void saveFQCSubDetailed(List<SubDetailValues> subDetailValues);
List<SubDetailValues> selectFQCSubDetailedRecord(SubDetailValues data);

14
src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java

@ -2458,6 +2458,8 @@ public class QcServiceImpl implements QcService {
// 删除子明细的老数据
qcMapper.delFQCSubDetailedRecord(data);
if (subDetailValues.isEmpty()) {
// 清空子明细时项目检验结论复位为合格
qcMapper.updateFQCItemResultBySubDetail(data.getSite(), data.getBuNo(), data.getInspectionNo(), data.getItemNo(), "Y", 0);
return null;
}
// 统计是否有不符合上下限得值
@ -2503,6 +2505,11 @@ public class QcServiceImpl implements QcService {
qcMapper.saveFQCSubDetailed(subList);
}
// 项目检验结论由子明细实测值推导仅当该项目可自动判定数值型且维护了上下限时更新
// 有不合格值为N全部合格为Y无法自动判定的项目保持原有结论不变
if ("N".equals(data.getValueTypeDb()) && (data.getMaxValue() != null || data.getMinValue() != null)) {
qcMapper.updateFQCItemResultBySubDetail(data.getSite(), data.getBuNo(), data.getInspectionNo(), data.getItemNo(), count > 0 ? "N" : "Y", count);
}
return count;
}
@ -2836,6 +2843,8 @@ public class QcServiceImpl implements QcService {
// 删除子明细的老数据
qcMapper.delIPQCSubDetailedRecord(data);
if (subDetailValues.isEmpty()) {
// 清空子明细时项目检验结论复位为合格
qcMapper.updateIPQCItemResultBySubDetail(data.getSite(), data.getBuNo(), data.getInspectionNo(), data.getItemNo(), "Y", 0);
return null;
}
// 统计是否有不符合上下限得值
@ -2882,6 +2891,11 @@ public class QcServiceImpl implements QcService {
qcMapper.saveIPQCSubDetailed(subList);
}
// 项目检验结论由子明细实测值推导仅当该项目可自动判定数值型且维护了上下限时更新
// 有不合格值为N全部合格为Y无法自动判定的项目保持原有结论不变
if ("N".equals(data.getValueTypeDb()) && (data.getMaxValue() != null || data.getMinValue() != null)) {
qcMapper.updateIPQCItemResultBySubDetail(data.getSite(), data.getBuNo(), data.getInspectionNo(), data.getItemNo(), count > 0 ? "N" : "Y", count);
}
return count;
}

16
src/main/resources/mapper/pms/QcMapper.xml

@ -2461,6 +2461,14 @@
WHERE inspection_no = #{inspectionNo} and item_no = #{itemNo} and site = #{site} and bu_no = #{buNo}
</delete>
<!-- IPQC子明细保存后同步项目检验结论 -->
<update id="updateIPQCItemResultBySubDetail">
UPDATE qc_ipqc_detailed_record
SET item_result = #{itemResult},
unqualified_quantity = #{unqualifiedQuantity,jdbcType=DECIMAL}
WHERE inspection_no = #{inspectionNo} and item_no = #{itemNo} and site = #{site} and bu_no = #{buNo}
</update>
<!-- 新增IPQC子明细信息 -->
<insert id="saveIPQCSubDetailed">
INSERT INTO qc_ipqc_sub_detail_record
@ -3274,6 +3282,14 @@
WHERE inspection_no = #{inspectionNo} and item_no = #{itemNo} and site = #{site} and bu_no = #{buNo}
</delete>
<!-- 子明细保存后同步项目检验结论 -->
<update id="updateFQCItemResultBySubDetail">
UPDATE qc_fqc_detailed_record
SET item_result = #{itemResult},
unqualified_quantity = #{unqualifiedQuantity,jdbcType=DECIMAL}
WHERE inspection_no = #{inspectionNo} and item_no = #{itemNo} and site = #{site} and bu_no = #{buNo}
</update>
<!-- 新增子明细信息 -->
<insert id="saveFQCSubDetailed">
INSERT INTO qc_fqc_sub_detail_record

Loading…
Cancel
Save