Browse Source

2026-11-10

FQC增加【临时放行】功能
master
fengyuan_yang 2 days ago
parent
commit
29abe10590
  1. 10
      src/main/java/com/heai/modules/pms/data/QcFAIRecordData.java
  2. 4
      src/main/java/com/heai/modules/pms/mapper/QcMapper.java
  3. 40
      src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java
  4. 2
      src/main/resources/application-dev.yml
  5. 28
      src/main/resources/mapper/pms/QcMapper.xml

10
src/main/java/com/heai/modules/pms/data/QcFAIRecordData.java

@ -158,6 +158,16 @@ public class QcFAIRecordData extends QueryPage {
private String itemResult;
// 主记录提交标识
private String submitFlag;
/** FQC临时放行标识,Y/N,对应 qc_fqc_record.release_flag */
private String releaseFlag;
/** FQC放行时间,对应 qc_fqc_record.release_time */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date releaseTime;
/** FQC放行人账号,对应 qc_fqc_record.release_by */
private String releaseBy;
/** FQC放行人姓名 */
private String releaseByName;
// 明细记录提交标识
private String isSubmit;
// 默认抽样数

4
src/main/java/com/heai/modules/pms/mapper/QcMapper.java

@ -529,6 +529,10 @@ public interface QcMapper {
void updateFQCMasterRecord(QcFAIRecordData data);
QcFAIRecordData selectFQCReleaseState(QcFAIRecordData data);
void updateFQCStateOnly(QcFAIRecordData data);
void updateFQCDetailedRecord(QcFAIRecordData data);
void updateFQCMasterSubmitFlag(QcFAIRecordData qcData);

40
src/main/java/com/heai/modules/pms/service/Impl/QcServiceImpl.java

@ -3588,6 +3588,10 @@ public class QcServiceImpl implements QcService {
if ("已完成".equals(qcData.getState())) {
throw new RuntimeException("检验单已完成,不允许删除!");
}
QcFAIRecordData current = qcMapper.selectFQCReleaseState(qcData);
if (current != null && "Y".equalsIgnoreCase(StringUtils.trimToEmpty(current.getReleaseFlag()))) {
throw new RuntimeException("检验单已临时放行,不允许删除,请先取消审核 {" + qcData.getInspectionNo() + "} !");
}
// 删除检验记录
qcMapper.deleteFQCRecord(qcData);
// 删除明细记录信息
@ -3608,9 +3612,24 @@ public class QcServiceImpl implements QcService {
@Transactional
public void saveFQCDetailedRecord(QcFAIRecordData data) {
SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
if ("1".equals(data.getType())) { // 应用
boolean tempRelease = "3".equals(data.getType());
if ("1".equals(data.getType())) { // 分批保存
data.setState("待检验");
} else { // 保存
} else if (tempRelease) { // 临时放行:保存结果并调接口,不改状态
QcFAIRecordData current = qcMapper.selectFQCReleaseState(data);
if (current == null) {
throw new RuntimeException("检验单不存在,请刷新后重试!");
}
data.setState(current.getState());
data.setReleaseFlag("Y");
data.setReleaseBy(user != null && StringUtils.isNotBlank(user.getUsername()) ? user.getUsername() : "");
} else { // 最终检验完成
QcFAIRecordData current = qcMapper.selectFQCReleaseState(data);
if (current != null && "Y".equalsIgnoreCase(StringUtils.trimToEmpty(current.getReleaseFlag()))) {
data.setState("待审核");
qcMapper.updateFQCStateOnly(data);
return;
}
data.setState("待审核");
}
qcMapper.updateFQCMasterRecord(data);
@ -3650,10 +3669,21 @@ public class QcServiceImpl implements QcService {
if (!operators.isEmpty()) {
qcMapper.saveOperator(operators);
}
if(StringUtils.isNotBlank(data.getRefInfo1()) && StringUtils.isNotBlank(data.getRefInfo2())){
inspectService.inspectForQMS(data.getSite(),data.getRefInfo1(),Integer.parseInt(data.getRefInfo2()),"submit",data.getInspectionResult(),data.getInspectionRemark(),user.getUsername());
String refInfo1 = data.getRefInfo1();
String refInfo2 = data.getRefInfo2();
if (tempRelease && (StringUtils.isBlank(refInfo1) || StringUtils.isBlank(refInfo2))) {
QcFAIRecordData stored = qcMapper.selectFQCRecordForAutoSubmit(data);
if (stored != null) {
refInfo1 = stored.getRefInfo1();
refInfo2 = stored.getRefInfo2();
}
}
if(StringUtils.isNotBlank(refInfo1) && StringUtils.isNotBlank(refInfo2)){
inspectService.inspectForQMS(data.getSite(),refInfo1,Integer.parseInt(refInfo2),"submit",data.getInspectionResult(),data.getInspectionRemark(),user.getUsername());
}
if (!tempRelease) {
tryAutoSubmitAfterFinalInspection(data, InspectionSubmitType.FQC);
}
tryAutoSubmitAfterFinalInspection(data, InspectionSubmitType.FQC);
// // 新增数据采集信息
// if (!data.getSubDetailList().isEmpty()) {
// qcMapper.saveFQCSubDetailed(data.getSubDetailList());

2
src/main/resources/application-dev.yml

@ -56,4 +56,4 @@ spring:
# PDA 登录页 / 首页标题
pda:
title: 赫艾-PDA
title:MES-PDA

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

@ -4232,10 +4232,14 @@
a.ref_info2,
a.ref_info3,
a.ref_info4,
a.ref_info5
a.ref_info5,
isnull(a.release_flag, 'N') as releaseFlag,
a.release_time as releaseTime,
isnull(ru.user_display, a.release_by) as releaseByName
FROM qc_fqc_record as a
left join part as d on a.site = d.site and a.bu_no = d.sourceBu and a.part_no = d.partNo
left join sys_user as u on a.inspector_no = u.username
left join sys_user as ru on a.release_by = ru.username
left join resource as r on a.site = r.site and a.resource_id = r.resource_id and a.work_center_no = r.work_center_no
left join UM as um on a.site = um.site and a.um_id = um.UMID
<where>
@ -4419,6 +4423,25 @@
not_pass_qty = #{notPassQty,jdbcType=DECIMAL},
batch_qualified_qty = #{batchQualifiedQty,jdbcType=DECIMAL},
submit_date = getDate()
<if test="releaseFlag != null and releaseFlag != ''">
, release_flag = #{releaseFlag}
</if>
<if test='releaseFlag != null and releaseFlag == "Y"'>
, release_time = getDate()
, release_by = #{releaseBy}
</if>
WHERE site = #{site} and inspection_no = #{inspectionNo} and bu_no = #{buNo}
</update>
<select id="selectFQCReleaseState" parameterType="com.heai.modules.pms.data.QcFAIRecordData" resultType="com.heai.modules.pms.data.QcFAIRecordData">
SELECT state, isnull(release_flag, 'N') as releaseFlag
FROM qc_fqc_record
WHERE site = #{site} and bu_no = #{buNo} and inspection_no = #{inspectionNo}
</select>
<update id="updateFQCStateOnly" parameterType="com.heai.modules.pms.data.QcFAIRecordData">
UPDATE qc_fqc_record
SET state = #{state}
WHERE site = #{site} and inspection_no = #{inspectionNo} and bu_no = #{buNo}
</update>
@ -5794,6 +5817,9 @@
UPDATE qc_fqc_record
SET submit_flag = 'N',
state = '待检验',
release_flag = 'N',
release_time = null,
release_by = null,
cancel_check_by = #{updateBy},
cancel_check_date = getDate()
WHERE inspection_no = #{inspectionNo} and site = #{site} and bu_no = #{buNo}

Loading…
Cancel
Save