Browse Source

2025-08-06

检验单保存改批量 并加行锁
master
fengyuan_yang 5 months ago
parent
commit
b375d48ce2
  1. 6
      src/main/java/com/xujie/sys/modules/pms/mapper/QcMapper.java
  2. 21
      src/main/java/com/xujie/sys/modules/pms/service/Impl/QcServiceImpl.java
  3. 122
      src/main/resources/mapper/pms/QcMapper.xml

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

@ -630,4 +630,10 @@ public interface QcMapper {
void batchSavePartAttribute(List<QcPartAttributeData> newAttrs);
void batchSavePartAttributeDetails(List<QcTemplateData> newDetails);
void updateIQCDetailedRecordBatch(List<QcFAIRecordData> itemList);
void updateIPQCDetailedRecordBatch(List<QcFAIRecordData> itemList);
void updateFQASDetailedRecordBatch(List<QcFAIRecordData> itemList);
}

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

@ -3388,8 +3388,11 @@ public class QcServiceImpl implements QcService {
data.setState("待审核");
qcMapper.updateIPQCMasterRecord(data);
// 修改明细记录信息
for (int i = 0; i < data.getItemList().size(); i++) {
qcMapper.updateIPQCDetailedRecord(data.getItemList().get(i));
// for (int i = 0; i < data.getItemList().size(); i++) {
// qcMapper.updateIPQCDetailedRecord(data.getItemList().get(i));
// }
if (!data.getItemList().isEmpty()) {
qcMapper.updateIPQCDetailedRecordBatch(data.getItemList());
}
// 删除之前的人员数据
qcMapper.delOperator(data);
@ -3771,8 +3774,11 @@ public class QcServiceImpl implements QcService {
data.setState("待审核");
qcMapper.updateIQCMasterRecord(data);
// 修改明细记录信息
for (int i = 0; i < data.getItemList().size(); i++) {
qcMapper.updateIQCDetailedRecord(data.getItemList().get(i));
// for (int i = 0; i < data.getItemList().size(); i++) {
// qcMapper.updateIQCDetailedRecord(data.getItemList().get(i));
// }
if (!data.getItemList().isEmpty()) {
qcMapper.updateIQCDetailedRecordBatch(data.getItemList());
}
// 删除之前的人员数据
qcMapper.delOperator(data);
@ -5141,8 +5147,11 @@ public class QcServiceImpl implements QcService {
data.setState("待审核");
qcMapper.updateFQASMasterRecord(data);
// 修改明细记录信息
for (int i = 0; i < data.getItemList().size(); i++) {
qcMapper.updateFQASDetailedRecord(data.getItemList().get(i));
// for (int i = 0; i < data.getItemList().size(); i++) {
// qcMapper.updateFQASDetailedRecord(data.getItemList().get(i));
// }
if (!data.getItemList().isEmpty()) {
qcMapper.updateFQASDetailedRecordBatch(data.getItemList());
}
// 删除之前的人员数据
qcMapper.delOperator(data);

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

@ -2219,6 +2219,46 @@
WHERE inspection_no = #{inspectionNo} and item_no = #{itemNo} and site = #{site} and bu_no = #{buNo}
</update>
<update id="updateIPQCDetailedRecordBatch" parameterType="java.util.List">
UPDATE qc_ipqc_detailed_record with (rowlock)
SET
item_result = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.itemResult}
</foreach>
ELSE item_result
END,
unqualified_quantity = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.unqualifiedQuantity,jdbcType=DECIMAL}
</foreach>
ELSE unqualified_quantity
END,
sampling_qty = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.samplingQty,jdbcType=DECIMAL}
</foreach>
ELSE sampling_qty
END,
text_value = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.textValue}
</foreach>
ELSE text_value
END,
number_value = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.numberValue,jdbcType=DECIMAL}
</foreach>
ELSE number_value
END
WHERE item_no IN
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item.itemNo}
</foreach>
AND site = #{list[0].site} and bu_no = #{list[0].buNo} and inspection_no = #{list[0].inspectionNo}
</update>
<!-- 修改IPQC主记录标识为已提交 -->
<update id="updateIPQCMasterSubmitFlag" parameterType="QcFAIRecordData">
UPDATE qc_ipqc_record
@ -2607,7 +2647,7 @@
<!-- 修改IQC明细记录信息 -->
<update id="updateIQCDetailedRecord" parameterType="QcFAIRecordData">
UPDATE qc_iqc_detailed_record
UPDATE qc_iqc_detailed_record with (rowlock)
SET item_result = #{itemResult},
unqualified_quantity = #{unqualifiedQuantity,jdbcType=DECIMAL},
sampling_qty = #{samplingQty,jdbcType=DECIMAL},
@ -2616,6 +2656,46 @@
WHERE inspection_no = #{inspectionNo} and item_no = #{itemNo} and site = #{site} and bu_no = #{buNo}
</update>
<update id="updateIQCDetailedRecordBatch" parameterType="java.util.List">
UPDATE qc_iqc_detailed_record with (rowlock)
SET
item_result = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.itemResult}
</foreach>
ELSE item_result
END,
unqualified_quantity = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.unqualifiedQuantity,jdbcType=DECIMAL}
</foreach>
ELSE unqualified_quantity
END,
sampling_qty = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.samplingQty,jdbcType=DECIMAL}
</foreach>
ELSE sampling_qty
END,
text_value = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.textValue}
</foreach>
ELSE text_value
END,
number_value = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.numberValue,jdbcType=DECIMAL}
</foreach>
ELSE number_value
END
WHERE item_no IN
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item.itemNo}
</foreach>
AND site = #{list[0].site} and bu_no = #{list[0].buNo} and inspection_no = #{list[0].inspectionNo}
</update>
<!-- 查询该记录明细是否已存在 -->
<select id="checkIQCDetail" parameterType="QcFAIRecordData" resultType="QcFAIRecordData">
SELECT inspection_no,
@ -4144,6 +4224,46 @@
WHERE inspection_no = #{inspectionNo} and item_no = #{itemNo} and site = #{site} and bu_no = #{buNo}
</update>
<update id="updateFQASDetailedRecordBatch" parameterType="java.util.List">
UPDATE qc_stock_detailed_record with (rowlock)
SET
item_result = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.itemResult}
</foreach>
ELSE item_result
END,
unqualified_quantity = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.unqualifiedQuantity,jdbcType=DECIMAL}
</foreach>
ELSE unqualified_quantity
END,
sampling_qty = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.samplingQty,jdbcType=DECIMAL}
</foreach>
ELSE sampling_qty
END,
text_value = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.textValue}
</foreach>
ELSE text_value
END,
number_value = CASE
<foreach item="item" index="index" collection="list" open="" close="" separator=" ">
WHEN item_no = #{item.itemNo} THEN #{item.numberValue,jdbcType=DECIMAL}
</foreach>
ELSE number_value
END
WHERE item_no IN
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item.itemNo}
</foreach>
AND site = #{list[0].site} and bu_no = #{list[0].buNo} and inspection_no = #{list[0].inspectionNo}
</update>
<!-- 修改FQAS主记录标识为已提交 -->
<update id="updateFQASMasterSubmitFlag" parameterType="QcFAIRecordData">
UPDATE qc_stock_record

Loading…
Cancel
Save