From b256455867237c285fd00aacdbfc4848589175ee Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Thu, 23 Apr 2026 10:36:29 +0800 Subject: [PATCH] =?UTF-8?q?2026-04-23=201=E3=80=81=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E6=97=B6=E6=8A=80=E6=9C=AF=E5=8F=82=E6=95=B0=E5=8D=A1=E5=8D=87?= =?UTF-8?q?=E7=89=88=E4=BC=98=E5=8C=96=202=E3=80=81=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C=E8=B0=83=E6=95=B4=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E5=88=A0=E9=99=A4=E6=AD=A3=E5=BC=8F=E7=89=A9=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ChangeManagementServiceImpl.java | 63 +++++++--- .../part/mapper/PartInformationMapper.java | 26 ++++ .../impl/PartInformationServiceImpl.java | 116 +++++++++++------- .../mapper/part/PartInformationMapper.xml | 8 +- .../resources/mapper/quote/QuoteMapper.xml | 25 ++-- 5 files changed, 161 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java b/src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java index e3bd7c85..e6827910 100644 --- a/src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java +++ b/src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java @@ -1503,6 +1503,8 @@ public class ChangeManagementServiceImpl extends ServiceImpl codelist = changeManagementMapper.requestDetailSearch(changeRequestEntity); + DeleteUserRequestInfoParam deleteUserRequestInfoParam2 = new DeleteUserRequestInfoParam(); + deleteUserRequestInfoParam2.setSyscode("PLM"); for (ChangeRequestDetailEntity detail : codelist) { List params = new ArrayList<>(); List> resultList; @@ -1635,7 +1635,7 @@ public class ChangeManagementServiceImpl extends ServiceImpl codelist = changeManagementMapper.requestDetailSearch(changeRequestEntity); + DeleteUserRequestInfoParam deleteUserRequestInfoParam2 = new DeleteUserRequestInfoParam(); + deleteUserRequestInfoParam2.setSyscode("PLM"); for (ChangeRequestDetailEntity detail : codelist) { List params = new ArrayList<>(); List> resultList; @@ -1819,7 +1829,7 @@ public class ChangeManagementServiceImpl extends ServiceImpl { + + @Select("SELECT COUNT(*) FROM plm_quotation_information WHERE site = #{site} AND test_part_no = #{partNo}") + int checkQuotationInformation(@Param("site") String site, @Param("partNo") String partNo); + + @Select("SELECT COUNT(*) FROM plm_quote_group_detail WHERE site = #{site} AND part_no = #{partNo}") + int checkQuoteGroupDetail(@Param("site") String site, @Param("partNo") String partNo); + + @Select("SELECT COUNT(*) FROM plm_test_information WHERE site = #{site} AND test_part_no = #{partNo}") + int checkTestInformation(@Param("site") String site, @Param("partNo") String partNo); + + @Select("SELECT COUNT(*) FROM plm_proofing_information WHERE site = #{site} AND test_part_no = #{partNo}") + int checkProofingInformation(@Param("site") String site, @Param("partNo") String partNo); + + @Select("SELECT COUNT(*) FROM plm_project_tool_applyDetail WHERE site = #{site} AND orderRef2 = #{partNo}") + int checkProjectToolApplyDetail(@Param("site") String site, @Param("partNo") String partNo); + + @Select("SELECT COUNT(*) FROM plm_technical_specification_sheet WHERE site = #{site} AND test_part_no = #{partNo}") + int checkTechnicalSpecificationSheet(@Param("site") String site, @Param("partNo") String partNo); + + @Select("SELECT COUNT(*) FROM plm_change_request_detail WHERE site = #{site} AND part_no = #{partNo}") + int checkChangeRequestDetail(@Param("site") String site, @Param("partNo") String partNo); + + @Select("SELECT COUNT(*) FROM plm_bom_component WHERE site = #{site} AND component_part = #{componentPart}") + int checkBomComponent(@Param("site") String site, @Param("componentPart") String componentPart); + IPage partInformationSearch(Page partInformationVoPage, @Param("query") PartInformationVo data); List checkValueHeaderData(PartSubPropertiesValueData data); diff --git a/src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java b/src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java index 46422b05..1c6eb300 100644 --- a/src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java +++ b/src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java @@ -1318,49 +1318,83 @@ public class PartInformationServiceImpl extends ServiceImpl map1 = new HashMap<>(); HashMap map2 = new HashMap<>(); - for (PartInformationEntity entity : data.getInformationList()) { - // 校验是否为正式物料 - PartInformationEntity partEntity = partInformationMapper.selectOne(new QueryWrapper().eq("site", entity.getSite()).eq("part_no", entity.getPartNo())); - if ("Y".equals(partEntity.getStatus())) { - throw new RuntimeException("物料为正式物料,不允许删除!"); - } - // 校验BOM 和 Routing是否存在 - List bomList = bomManagementMapper.selectList(new QueryWrapper().eq("site", entity.getSite()).eq("part_no", entity.getPartNo())); - if (!bomList.isEmpty()) { - throw new RuntimeException("存在物料的BOM信息,不允许删除!"); - } - List routingList = routingManagementMapper.selectList(new QueryWrapper().eq("site", entity.getSite()).eq("part_no", entity.getPartNo())); - if (!routingList.isEmpty()) { - throw new RuntimeException("存在物料的Routing信息,不允许删除!"); - } + + // 校验BOM 和 Routing是否存在 + List bomList = bomManagementMapper.selectList(new QueryWrapper().eq("site", data.getSite()).eq("part_no", data.getPartNo())); + if (!bomList.isEmpty()) { + throw new RuntimeException("存在物料的BOM信息,不允许删除!"); + } + if (partInformationMapper.checkBomComponent(data.getSite(), data.getPartNo()) > 0) { + throw new RuntimeException("物料作为子件被别的BOM引用,不允许删除!"); + } + List routingList = routingManagementMapper.selectList(new QueryWrapper().eq("site", data.getSite()).eq("part_no", data.getPartNo())); + if (!routingList.isEmpty()) { + throw new RuntimeException("存在物料的Routing信息,不允许删除!"); + } - // 条件 - map1.put("site", entity.getSite()); - map1.put("part_no", entity.getPartNo()); - map2.put("order_ref1", entity.getSite()); - map2.put("order_ref2", entity.getPartNo()); - // 删除材料信息数据 - partInformationMapper.deleteByMap(map1); - // 删除材料相关文件 - sysOssDao.deleteByMap(map2); - // 删除代理商 - partInformationMapper.deleteAgentByPartNo(data); - // 删除制造商 - partInformationMapper.deleteManufacturerByPartNo(data); - // 删除库位 - partInformationMapper.deleteLocationByPartNo(data); - // 删除物料版本 - partInformationMapper.deletePartRevisionByPartNo(data); - // 删除物料的属性和属性值 - PartSubPropertiesValueData partData = new PartSubPropertiesValueData(); - partData.setSite(entity.getSite()); - partData.setPartNo(entity.getPartNo()); - partData.setRecordType("IP"); - partInformationMapper.deletePartSubPropertiesValueHeader(partData); - partInformationMapper.deletePartSubPropertiesValue(partData); - // 判断有无项目物料,有则删除 - partInformationMapper.delProjectPartByPartNo(entity.getSite(), entity.getPartNo()); + // 校验其他单据是否引用 + if (partInformationMapper.checkQuotationInformation(data.getSite(), data.getPlmPartNo()) > 0) { + throw new RuntimeException("物料被询价单引用,不允许删除!"); + } + if (partInformationMapper.checkQuoteGroupDetail(data.getSite(), data.getPartNo()) > 0) { + throw new RuntimeException("物料被报价单引用,不允许删除!"); + } + if (partInformationMapper.checkTestInformation(data.getSite(), data.getPlmPartNo()) > 0) { + throw new RuntimeException("物料被测试单引用,不允许删除!"); + } + if (partInformationMapper.checkProofingInformation(data.getSite(), data.getPlmPartNo()) > 0) { + throw new RuntimeException("物料被打样单引用,不允许删除!"); } + if (partInformationMapper.checkProjectToolApplyDetail(data.getSite(), data.getPartNo()) > 0) { + throw new RuntimeException("物料被刀具申请单引用,不允许删除!"); + } + if (partInformationMapper.checkTechnicalSpecificationSheet(data.getSite(), data.getPlmPartNo()) > 0) { + throw new RuntimeException("物料被技术参数卡引用,不允许删除!"); + } + if (partInformationMapper.checkChangeRequestDetail(data.getSite(), data.getPartNo()) > 0) { + throw new RuntimeException("物料被工程变更单引用,不允许删除!"); + } + + PartInformationEntity partEntity = partInformationMapper.selectOne(new QueryWrapper().eq("site", data.getSite()).eq("part_no", data.getPartNo())); + // 如果是正式物料,调用IFS系统的物料删除接口 + if ("Y".equals(partEntity.getStatus())) { + String username = com.spring.common.utils.ShiroUtils.getUserEntity().getUsername(); + Server srv = getIfsServer(username); + PartIfsInventory partIfsInventory = new PartIfsInventory(); + partIfsInventory.setContract(data.getSite()); + partIfsInventory.setPartNo(data.getPartNo()); + Map deleteInventoryPartResponse = inventoryServiceBean.removeInventoryPart(srv, partIfsInventory); + if (!"200".equals(deleteInventoryPartResponse.get("resultCode"))) { + throw new RuntimeException("IFS物料删除异常:" + deleteInventoryPartResponse.get("resultMsg")); + } + } + + // 条件 + map1.put("site", data.getSite()); + map1.put("part_no", data.getPartNo()); + map2.put("order_ref1", data.getSite()); + map2.put("order_ref2", data.getPartNo()); + // 删除材料信息数据 + partInformationMapper.deleteByMap(map1); + // 删除材料相关文件 + sysOssDao.deleteByMap(map2); + // 删除代理商 + partInformationMapper.deleteAgentByPartNo(data); + // 删除制造商 + partInformationMapper.deleteManufacturerByPartNo(data); + // 删除库位 + partInformationMapper.deleteLocationByPartNo(data); + // 删除物料版本 + partInformationMapper.deletePartRevisionByPartNo(data); + // 删除物料的属性和属性值 + PartSubPropertiesValueData partData = new PartSubPropertiesValueData(); + partData.setSite(data.getSite()); + partData.setPartNo(data.getPartNo()); + partData.setRecordType("IP"); + partInformationMapper.deletePartSubPropertiesValueHeader(partData); + partInformationMapper.deletePartSubPropertiesValue(partData); + // 判断有无项目物料,有则删除 + partInformationMapper.delProjectPartByPartNo(data.getSite(), data.getPartNo()); } /** diff --git a/src/main/resources/mapper/part/PartInformationMapper.xml b/src/main/resources/mapper/part/PartInformationMapper.xml index 8977ba31..c6e8f412 100644 --- a/src/main/resources/mapper/part/PartInformationMapper.xml +++ b/src/main/resources/mapper/part/PartInformationMapper.xml @@ -261,7 +261,7 @@ - SELECT site, agent_id, @@ -297,7 +297,7 @@ - SELECT a.site, a.agent_id, @@ -313,7 +313,7 @@ - SELECT a.site, a.agent_id, @@ -350,7 +350,7 @@ - SELECT a.site, a.agent_id, diff --git a/src/main/resources/mapper/quote/QuoteMapper.xml b/src/main/resources/mapper/quote/QuoteMapper.xml index 76c3afb9..ca3cc309 100644 --- a/src/main/resources/mapper/quote/QuoteMapper.xml +++ b/src/main/resources/mapper/quote/QuoteMapper.xml @@ -288,26 +288,25 @@ gd.part_desc as partDesc, qq.create_by as inquiryCreateBy from plm_quote q - left join plm_customer_information c on q.customer_no = c.customer_no - left join plm_project_info p on q.project_no = p.project_id and q.site = p.site - left join sys_user su_purchase on q.purchase = su_purchase.username - left join sys_user su_quoter on q.quoter = su_quoter.username - left join sys_dict_data sdd_currency on sdd_currency.dict_type = 'plm_customer_information_customer_customer_currency' + left join plm_customer_information c on q.customer_no = c.customer_no + left join plm_project_info p on q.project_no = p.project_id and q.site = p.site + left join sys_user su_purchase on q.purchase = su_purchase.username + left join sys_user su_quoter on q.quoter = su_quoter.username + left join sys_dict_data sdd_currency on sdd_currency.dict_type = 'plm_customer_information_customer_customer_currency' and sdd_currency.dict_value = q.currency and sdd_currency.site = q.site - left join sys_dict_data sdd_final on sdd_final.dict_type = 'finalCustomer' + left join sys_dict_data sdd_final on sdd_final.dict_type = 'finalCustomer' and sdd_final.dict_value = p.final_customer_id and sdd_final.site = q.site - left join plm_request_header prh on q.site = prh.site and prh.menu_id = '5011' - left join plm_quotation_information qq on q.site = qq.site and q.inside_inquiry_no = qq.quotation_no - left join plm_request_node prn on q.site = prn.site and prh.classification_no = prn.classification_no + left join plm_request_header prh on q.site = prh.site and prh.menu_id = '5011' + left join plm_quotation_information qq on q.site = qq.site and q.inside_inquiry_no = qq.quotation_no + left join plm_request_node prn on q.site = prn.site and prh.classification_no = prn.classification_no and prh.workflow_id = prn.workflow_id and q.step_id = prn.step_id - outer apply ( + outer apply ( select top 1 pp.plm_part_no, pp.ifs_part_no, pp.part_desc,qd.part_no from plm_quote_group_detail qd - left join part pp on qd.part_no = pp.part_no and qd.site = pp.site + left join part pp on qd.part_no = pp.part_no and qd.site = pp.site where qd.quote_id = q.id ) gd - left join plm_project_part ppp on ppp.site = q.site and ppp.project_id = p.project_id - and ppp.test_part_no = gd.part_no + left join plm_project_part ppp on ppp.site = q.site and ppp.project_id = p.project_id and ppp.test_part_no = gd.part_no