Browse Source

搜索条件添加

ecss-tx
han\hanst 2 weeks ago
parent
commit
84d71f25bb
  1. 32
      src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java
  2. 6
      src/main/java/com/xujie/sys/modules/sampletracking/mapper/SampleTrackingMapper.java
  3. 17
      src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml
  4. 93
      src/main/resources/mapper/sampletracking/SampleTrackingMapper.xml

32
src/main/java/com/xujie/sys/modules/pms/service/Impl/EamProjectServiceImpl.java

@ -26,6 +26,7 @@ import com.xujie.sys.common.utils.PageUtils;
import com.xujie.sys.modules.pms.service.EamProjectService;
import com.xujie.sys.modules.pms.util.ResponseData;
import com.xujie.sys.modules.pms.mapper.EamProjectMapper;
import com.xujie.sys.modules.sampletracking.mapper.SampleTrackingMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -93,6 +94,9 @@ public class EamProjectServiceImpl implements EamProjectService {
@Autowired ProofingInformationServiceImpl proofingInformationService;
@Autowired
private SampleTrackingMapper sampleTrackingMapper;
@Override
public PageUtils eamProjectSearch(EamProjectInfoData inData){
IPage<EamProjectInfoData> eamProjectList = this.EamProjectMapper.eamProjectSearch(new Page<EamProjectInfoData>(inData.getPage(), inData.getLimit()), inData);
@ -155,6 +159,8 @@ public class EamProjectServiceImpl implements EamProjectService {
}
}
EamProjectMapper.eamProjectEdit(inData);
// 已互通时tracking.id = NPI.id把本次项目修改同步到 tracking避免两边主档漂移
//syncAlignedProjectInfoTracking(inData.getProjectId(), inData.getUpdateBy());
responseData.setMsg("修改成功!");
responseData.setSuccess(true);
responseData.setCode("0");
@ -273,6 +279,8 @@ public class EamProjectServiceImpl implements EamProjectService {
throw new RuntimeException("当前项目下已存在相同的项目料号!");
} else {
EamProjectMapper.eamProjectPartInfoEdit(inData);
// 已互通时tracking.id = NPI.id把本次物料修改同步到 tracking
//syncAlignedProjectPartTracking(inData.getProjectPartId(), inData.getUpdateBy());
}
if(Objects.equals(inData.getStatus2(), "进行中")) {
@ -312,6 +320,8 @@ public class EamProjectServiceImpl implements EamProjectService {
throw new RuntimeException("当前项目下已存在相同的项目料号!");
} else {
EamProjectMapper.eamProjectPartInfoEdit(inData);
// 取消转量产同样走物料编辑已互通时继续回写 tracking
//syncAlignedProjectPartTracking(inData.getProjectPartId(), inData.getUpdateBy());
}
// 通过存储过程查询当前part下所有转量产文档
@ -1441,4 +1451,26 @@ public class EamProjectServiceImpl implements EamProjectService {
mailRecord.setType("自动提醒");
qcMapper.saveSendMailRecord(mailRecord);
}
private void syncAlignedProjectInfoTracking(Integer projectId, String updateBy) {
if (projectId == null) {
return;
}
// 互通判定就是 tracking NPI 使用同一主键INNER JOIN 未命中时不更新未互通记录
int syncedRows = sampleTrackingMapper.updateProjectInfoTrackingFromNpi(projectId, updateBy);
if (syncedRows > 0) {
logger.info("NPI项目信息已同步到tracking: projectId={}, updateBy={}, rows={}", projectId, updateBy, syncedRows);
}
}
private void syncAlignedProjectPartTracking(Integer projectPartId, String updateBy) {
if (projectPartId == null) {
return;
}
// 物料互通同样按主键对齐未互通的 tracking 物料继续独立维护
int syncedRows = sampleTrackingMapper.updateProjectPartTrackingFromNpi(projectPartId, updateBy);
if (syncedRows > 0) {
logger.info("NPI项目物料已同步到tracking: projectPartId={}, updateBy={}, rows={}", projectPartId, updateBy, syncedRows);
}
}
}

6
src/main/java/com/xujie/sys/modules/sampletracking/mapper/SampleTrackingMapper.java

@ -56,6 +56,9 @@ public interface SampleTrackingMapper {
void updateNpiProjectFromTracking(ProjectInfoTrackingData data);
int updateProjectInfoTrackingFromNpi(@Param("projectId") Integer projectId,
@Param("updateBy") String updateBy);
Integer existsProjectInfoTrackingId(@Param("projectId") Integer projectId);
Integer selectNextProjectInfoTrackingId();
@ -80,6 +83,9 @@ public interface SampleTrackingMapper {
void updateNpiProjectPartFromTracking(ProjectPartTrackingData data);
int updateProjectPartTrackingFromNpi(@Param("projectPartId") Integer projectPartId,
@Param("updateBy") String updateBy);
Integer existsProjectPartTrackingId(@Param("projectPartId") Integer projectPartId);
Integer selectNextProjectPartTrackingId();

17
src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml

@ -109,6 +109,23 @@
<if test="query.proofingNo != null and query.proofingNo != ''">
and UPPER(t.proofing_no) like '%' + UPPER(#{query.proofingNo}) + '%'
</if>
<if test="query.cProjectRegion != null and query.cProjectRegion != ''">
and p.c_project_region = #{query.cProjectRegion}
</if>
<if test="query.engineer != null and query.engineer != ''">
and UPPER(LTRIM(RTRIM(ISNULL(t.engineer, '')))) = UPPER(LTRIM(RTRIM(#{query.engineer})))
</if>
<if test="query.projectManager != null and query.projectManager != ''">
and UPPER(LTRIM(RTRIM(ISNULL(pp.project_manager, '')))) = UPPER(LTRIM(RTRIM(#{query.projectManager})))
</if>
<if test="query.pic != null and query.pic != ''">
<!-- PIC 与列表展示一致:优先物料 PJM,缺失时回退项目 PJM。 -->
and UPPER(LTRIM(RTRIM(COALESCE(
NULLIF(LTRIM(RTRIM(pp.project_owner)), ''),
NULLIF(LTRIM(RTRIM(p.project_owner)), ''),
''
)))) = UPPER(LTRIM(RTRIM(#{query.pic})))
</if>
<if test="query.proofingStatusList != null and query.proofingStatusList.size > 0">
and t.proofing_status in
<foreach collection="query.proofingStatusList" item="status" open="(" separator="," close=")">

93
src/main/resources/mapper/sampletracking/SampleTrackingMapper.xml

@ -394,6 +394,50 @@
WHERE id = #{projectId}
</update>
<!-- 仅当 tracking.id 与 NPI.id 相同(已互通)时回写;未互通记录不受影响。 -->
<update id="updateProjectInfoTrackingFromNpi">
UPDATE t
SET t.project_no = p.project_no,
t.project_category = p.project_category,
t.project_name = p.project_name,
t.status = p.status,
t.project_source = p.project_source,
t.customer_no = p.customer_no,
t.priority = p.priority,
t.site = p.site,
t.project_desc = p.project_desc,
t.customer_remark = p.customer_remark,
t.remark = p.remark,
t.need_date = p.need_date,
t.bu_no = p.bu_no,
t.parent_project_no = p.parent_project_no,
t.final_customer_id = p.final_customer_id,
t.c_project_region = p.c_project_region,
t.project_manager = p.project_manager,
t.project_owner = p.project_owner,
t.c_project_build_date = p.c_project_build_date,
t.c_quality_engineer1 = p.c_quality_engineer1,
t.c_quality_engineer2 = p.c_quality_engineer2,
t.c_quality_engineer3 = p.c_quality_engineer3,
t.c_manufacture_engineer = p.c_manufacture_engineer,
t.project_close_date = p.project_close_date,
t.project_creation_date = p.project_creation_date,
t.engineer = p.engineer,
t.ori_project_id = p.ori_project_id,
t.doc_engineer = p.doc_engineer,
t.c_quality_engineer4 = p.c_quality_engineer4,
t.c_quality_engineer5 = p.c_quality_engineer5,
t.c_quality_engineer6 = p.c_quality_engineer6,
t.ipqc_hard_tag = p.ipqc_hard_tag,
t.c_quality_engineer7 = p.c_quality_engineer7,
t.doc_engineer2 = p.doc_engineer2,
t.update_date = GETDATE(),
t.update_by = #{updateBy}
FROM plm_project_info_tracking t
INNER JOIN plm_project_info p ON p.id = t.id
WHERE t.id = #{projectId}
</update>
<select id="existsProjectInfoTrackingId" resultType="java.lang.Integer">
SELECT TOP 1 id
FROM plm_project_info_tracking
@ -490,6 +534,55 @@
WHERE id = #{projectPartId}
</update>
<!-- 仅当 tracking.id 与 NPI.id 相同(已互通)时回写;未互通记录不受影响。 -->
<update id="updateProjectPartTrackingFromNpi">
UPDATE t
SET t.site = p.site,
t.project_id = p.project_id,
t.test_part_no = p.test_part_no,
t.part_type = p.part_type,
t.dry_wet_type = p.dry_wet_type,
t.part_desc = p.part_desc,
t.part_spec = p.part_spec,
t.material_number = p.material_number,
t.final_part_desc = p.final_part_desc,
t.part_name = p.part_name,
t.final_part_no = p.final_part_no,
t.code_no = p.code_no,
t.group_id = p.group_id,
t.product_group_id1 = p.product_group_id1,
t.product_group_id2 = p.product_group_id2,
t.base_no = p.base_no,
t.rev_no = p.rev_no,
t.project_manager = p.project_manager,
t.project_owner = p.project_owner,
t.build_date = p.build_date,
t.c_quality_engineer1 = p.c_quality_engineer1,
t.c_quality_engineer2 = p.c_quality_engineer2,
t.c_quality_engineer3 = p.c_quality_engineer3,
t.c_manufacture_engineer = p.c_manufacture_engineer,
t.close_date = p.close_date,
t.engineer = p.engineer,
t.status = p.status,
t.priority = p.priority,
t.project_category = p.project_category,
t.need_date = p.need_date,
t.doc_engineer = p.doc_engineer,
t.c_quality_engineer4 = p.c_quality_engineer4,
t.c_quality_engineer5 = p.c_quality_engineer5,
t.c_quality_engineer6 = p.c_quality_engineer6,
t.customer_no = p.customer_no,
t.ipqc_hard_tag = p.ipqc_hard_tag,
t.c_quality_engineer7 = p.c_quality_engineer7,
t.doc_engineer2 = p.doc_engineer2,
t.remark = p.remark,
t.update_date = GETDATE(),
t.update_by = #{updateBy}
FROM plm_project_part_tracking t
INNER JOIN plm_project_part p ON p.id = t.id
WHERE t.id = #{projectPartId}
</update>
<select id="existsProjectPartTrackingId" resultType="java.lang.Integer">
SELECT TOP 1 id
FROM plm_project_part_tracking

Loading…
Cancel
Save