From 47f675f9b6fd4f0ab241e937d5c516b8c73fafac Mon Sep 17 00:00:00 2001 From: "shunyi.kuang" <846002312@qq.com> Date: Fri, 9 Jan 2026 15:57:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E9=81=93=E6=B0=94=E9=87=87=E8=B4=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ContractPurPngController.java | 73 +++++++++++++++---- 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/contract/controller/ContractPurPngController.java b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/contract/controller/ContractPurPngController.java index d45dce6..bd39f76 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/contract/controller/ContractPurPngController.java +++ b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/contract/controller/ContractPurPngController.java @@ -1,6 +1,10 @@ package com.xjrsoft.module.contract.controller; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.stream.Collector; +import java.util.stream.Collectors; import javax.validation.Valid; @@ -26,8 +30,12 @@ import com.xjrsoft.common.model.result.R; import com.xjrsoft.module.contract.dto.LngContractPageDto; import com.xjrsoft.module.contract.dto.UpdateLngContractPurDto; import com.xjrsoft.module.contract.dto.UpdateLngContractPurPngPointDto; +import com.xjrsoft.module.contract.dto.UpdateLngContractPurPngPointSalesDto; import com.xjrsoft.module.contract.dto.UpdateLngContractSalesPngPointDto; import com.xjrsoft.module.contract.service.IContractPurPngService; +import com.xjrsoft.module.contract.vo.LngContractPurPngPointSalesVo; +import com.xjrsoft.module.contract.vo.LngContractPurPngPointVo; +import com.xjrsoft.module.contract.vo.LngContractPurVo; import com.xjrsoft.module.datalog.service.DatalogService; import com.xjrsoft.module.datalog.vo.DataChangeLogVo; @@ -105,22 +113,61 @@ public class ContractPurPngController { boolean res = dataService.updateById(dto, new DataOperationListener() { @Override public UpdateLngContractPurDto before(DataOperationContent content) { - List list = dto.getLngContractPurPngPointList(); + LngContractPurVo old = contractPurPngService.getInfoById(dto.getId()); + List oldPpList = old.getLngContractPurPngPointList(); + List oldPpIdList = Lists.newArrayList(); + List oldSalesIdList = Lists.newArrayList(); + for(LngContractPurPngPointVo pp:oldPpList) { + oldPpIdList.add(pp.getId()); + if(pp.getLngContractPurPngPointSalesList() != null) { + for(LngContractPurPngPointSalesVo sales:pp.getLngContractPurPngPointSalesList()) { + oldSalesIdList.add(sales.getId()); + } + } + } + List list = dto.getLngContractPurPngPointList(); + List newPpIdList = Lists.newArrayList(); + List newSalesIdList = Lists.newArrayList(); for (UpdateLngContractPurPngPointDto dto : list) { - if (dto.getHasDel()) { - String sql = StringUtils.format("{? = call pc_{0}.f before_delete_point(?)}", - "pc_lng_contract_pur_png"); - List params = Lists.newArrayList(); - JdbcParam outParam = JdbcParam.ofString(null).setOut(true); - params.add(outParam); - params.add(JdbcParam.ofLong(dto.getId())); - JdbcTools.call(sql,params); - String error = outParam.getStringValue(); - if (StringUtils.isNotEmpty(error)) { - throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DB_FUNCTION_DELETE_EXEC_ERROR, error)); - } + if(dto.getId() != null) { + newPpIdList.add(dto.getId()); } + if(dto.getLngContractPurPngPointSalesList() != null) { + for(UpdateLngContractPurPngPointSalesDto sales:dto.getLngContractPurPngPointSalesList()) { + newSalesIdList.add(sales.getId()); + } + } } + for(Long sid:oldPpIdList) { + if(!newPpIdList.contains(sid)) { + String sql = StringUtils.format("{? = call pc_{0}.f_before_delete_point(?)}", + "lng_contract_pur_png"); + List params = Lists.newArrayList(); + JdbcParam outParam = JdbcParam.ofString(null).setOut(true); + params.add(outParam); + params.add(JdbcParam.ofLong(dto.getId())); + JdbcTools.call(sql,params); + String error = outParam.getStringValue(); + if (StringUtils.isNotEmpty(error)) { + throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DB_FUNCTION_DELETE_EXEC_ERROR, error)); + } + } + } + for(Long sid:oldSalesIdList) { + if(!newSalesIdList.contains(sid)) { + String sql = StringUtils.format("{? = call pc_{0}.f_before_delete_point_sales(?)}", + "lng_contract_pur_png"); + List params = Lists.newArrayList(); + JdbcParam outParam = JdbcParam.ofString(null).setOut(true); + params.add(outParam); + params.add(JdbcParam.ofLong(dto.getId())); + JdbcTools.call(sql,params); + String error = outParam.getStringValue(); + if (StringUtils.isNotEmpty(error)) { + throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DB_FUNCTION_DELETE_EXEC_ERROR, error)); + } + } + } return content.getObj(); }