diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTransPlanRuleController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTransPlanRuleController.java index 6007fb7b6..8631471d1 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTransPlanRuleController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTransPlanRuleController.java @@ -1,13 +1,10 @@ package com.xdadan.erp.web.emis; import java.util.List; -import java.util.Map; import com.xdadan.erp.common.annotation.filter.jackson.JacksonFilter; import com.xdadan.erp.common.core.domain.AjaxResult; import com.xdadan.erp.common.core.page.TableDataInfo; -import com.xdadan.erp.emis.domain.EmisSupplier; -import com.xdadan.erp.emis.domain.EmisWaybill; import com.xdadan.erp.emis.domain.exception.EmisBizError; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -47,7 +44,7 @@ public class EmisTransPlanRuleController extends EmisBaseController { /** * 查询供应商线路规划列表 */ - // @PreAuthorize("@ss.hasPermi('emis:rule:list')") + @PreAuthorize("@ss.hasPermi('emis:emisTransPlanRule:list')") @GetMapping("/list") public TableDataInfo list(EmisTransPlanRule emisTransPlanRule) { startPage(); @@ -58,7 +55,7 @@ public class EmisTransPlanRuleController extends EmisBaseController { /** * 获取供应商线路规划详细信息 */ - // @PreAuthorize("@ss.hasPermi('emis:rule:query')") + @PreAuthorize("@ss.hasPermi('emis:emisTransPlanRule:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(emisTransPlanRuleService.selectEmisTransPlanRuleById(id)); @@ -67,7 +64,7 @@ public class EmisTransPlanRuleController extends EmisBaseController { /** * 新增供应商线路规划 */ - // @PreAuthorize("@ss.hasPermi('emis:rule:add')") + @PreAuthorize("@ss.hasPermi('emis:emisTransPlanRule:add')") @PostMapping public AjaxResult add(@RequestBody EmisTransPlanRule emisTransPlanRule) throws EmisBizError { return toAjax(emisTransPlanRuleService.insertEmisTransPlanRule(emisTransPlanRule)); @@ -76,7 +73,7 @@ public class EmisTransPlanRuleController extends EmisBaseController { /** * 修改供应商线路规划 */ - // @PreAuthorize("@ss.hasPermi('emis:rule:edit')") + @PreAuthorize("@ss.hasPermi('emis:emisTransPlanRule:edit')") @PutMapping public AjaxResult edit(@RequestBody EmisTransPlanRule emisTransPlanRule) throws EmisBizError { return toAjax(emisTransPlanRuleService.updateEmisTransPlanRule(emisTransPlanRule)); @@ -85,7 +82,7 @@ public class EmisTransPlanRuleController extends EmisBaseController { /** * 删除供应商线路规划 */ - // @PreAuthorize("@ss.hasPermi('emis:rule:remove')") + @PreAuthorize("@ss.hasPermi('emis:emisTransPlanRule:remove')") @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) throws EmisBizError { return toAjax(emisTransPlanRuleService.deleteEmisTransPlanRuleByIds(ids)); @@ -94,8 +91,9 @@ public class EmisTransPlanRuleController extends EmisBaseController { /** * 查询供应商线路规划树结构 */ + @PreAuthorize("@ss.hasPermi('emis:emisTransPlanRule:tree')") @GetMapping("/tree") - public TableDataInfo tree(String lineName) { - return getDataTable(emisTransPlanRuleService.selectEmisTransPlanRuleTree(lineName)); + public TableDataInfo tree(String lineCode) { + return getDataTable(emisTransPlanRuleService.selectEmisTransPlanRuleTree(lineCode)); } } \ No newline at end of file diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTransPlanRule.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTransPlanRule.java index d93b65739..bde7724e4 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTransPlanRule.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTransPlanRule.java @@ -24,7 +24,10 @@ public class EmisTransPlanRule extends BaseEntity { /** 祖先节点 */ private String ancestors; - /** 线路名称 */ + /** 线路编码 */ + private String lineCode; + + /** 线路名称 (仅用于查询结果) */ private String lineName; /** 运输方式 */ diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTransPlanRuleMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTransPlanRuleMapper.java index 90ebbaffa..e39ed48ea 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTransPlanRuleMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTransPlanRuleMapper.java @@ -21,13 +21,21 @@ public interface EmisTransPlanRuleMapper { public EmisTransPlanRule selectEmisTransPlanRuleById(Long id); /** - * 查询供应商线路规划列表 + * 查询供应商线路规划列表,过滤根节点 * * @param emisTransPlanRule 供应商线路规划 * @return 供应商线路规划集合 */ public List selectEmisTransPlanRuleList(EmisTransPlanRule emisTransPlanRule); + /** + * 查询供应商线路规划列表,查询包括根节点 + * + * @param emisTransPlanRule 供应商线路规划 + * @return 供应商线路规划集合 + */ + public List getEmisTransPlanRuleList(EmisTransPlanRule emisTransPlanRule); + /** * 查询子节点列表 * @@ -60,14 +68,6 @@ public interface EmisTransPlanRuleMapper { */ public int updateEmisTransPlanRule(EmisTransPlanRule emisTransPlanRule); - /** - * 修改子元素关系 - * - * @param children 子元素 - * @return 结果 - */ - public int updateEmisTransPlanRuleChildren(List children); - /** * 删除供应商线路规划 * @@ -100,13 +100,19 @@ public interface EmisTransPlanRuleMapper { */ public String selectProductTypeNamesByCodes(@Param("productType") String productType); - List selectEmisTransPlanRuleTree(EmisTransPlanRule emisTransPlanRule); + /** + * 查询每个供应商编码对应的名称 + * + * @param supplierCodes + * @return map + */ + List> selectSupplierInfoByCodes(List supplierCodes); /** - * 根据条件查询供应商信息 + * 查询每个产品编码对应的名称 * - * @param emisTransPlanRule 查询条件 - * @return 供应商信息列表 + * @param productTypes + * @return map */ - List selectSupplierInfoByConditions(EmisTransPlanRule emisTransPlanRule); + List> selectProductTypeInfoByCodes(List productTypes); } \ No newline at end of file diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTransPlanRuleService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTransPlanRuleService.java index 32a20d85a..02474d0a1 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTransPlanRuleService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTransPlanRuleService.java @@ -62,10 +62,10 @@ public interface IEmisTransPlanRuleService { /** * 查询供应商线路规划树结构 * - * @param lineName 线路名称 + * @param lineCode 线路编码 * @return 供应商线路规划树结构 */ - public List selectEmisTransPlanRuleTree(String lineName); + public List selectEmisTransPlanRuleTree(String lineCode); /** * 根据条件查询供应商信息 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransPlanRuleServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransPlanRuleServiceImpl.java index 6926fb027..b42f5b17c 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransPlanRuleServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransPlanRuleServiceImpl.java @@ -6,18 +6,22 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.Arrays; import com.beust.jcommander.internal.Lists; import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType; import com.xdadan.erp.emis.domain.exception.EmisBizError; import jodd.util.StringUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import com.xdadan.erp.emis.domain.EmisTransPlanRule; +import com.xdadan.erp.emis.domain.EmisTransLine; import com.xdadan.erp.emis.mapper.EmisTransPlanRuleMapper; +import com.xdadan.erp.emis.mapper.EmisTransLineMapper; import com.xdadan.erp.emis.service.IEmisTransPlanRuleService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,12 +33,15 @@ import org.slf4j.LoggerFactory; * @date 2024-04-22 */ @Service +@Slf4j public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { - private static final Logger log = LoggerFactory.getLogger(EmisTransPlanRuleServiceImpl.class); @Autowired private EmisTransPlanRuleMapper emisTransPlanRuleMapper; + @Autowired + private EmisTransLineMapper emisTransLineMapper; + /** * 查询供应商线路规划 * @@ -43,26 +50,50 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { */ @Override public EmisTransPlanRule selectEmisTransPlanRuleById(Long id) { + log.info("Start querying supplier route plan, ID={}", id); EmisTransPlanRule rule = emisTransPlanRuleMapper.selectEmisTransPlanRuleById(id); if (rule != null) { - setSupplierNames(Collections.singletonList(rule)); - setProductTypeNames(Collections.singletonList(rule)); + log.info("Found supplier route plan, ID={}", id); + setName(Collections.singletonList(rule)); + } else { + log.warn("Supplier route plan not found, ID={}", id); } return rule; } /** - * 查询供应商线路规划列表 - * + * 查询供应商线路规划列表,过滤根节点 + * * @param emisTransPlanRule 供应商线路规划 * @return 供应商线路规划 */ @Override public List selectEmisTransPlanRuleList(EmisTransPlanRule emisTransPlanRule) { + log.info("Start querying supplier route plan list, query={}", emisTransPlanRule); List list = emisTransPlanRuleMapper.selectEmisTransPlanRuleList(emisTransPlanRule); + log.info("Found supplier route plan list, count={}", list != null ? list.size() : 0); + setName(list); + return list; + } + + /** + * 查询供应商线路规划列表,查询包括根节点 + * + * @param emisTransPlanRule 供应商线路规划 + * @return 供应商线路规划 + */ + public List getEmisTransPlanRuleList(EmisTransPlanRule emisTransPlanRule) { + log.info("Start getting supplier route plan list, query={}", emisTransPlanRule); + List list = emisTransPlanRuleMapper.getEmisTransPlanRuleList(emisTransPlanRule); + log.info("Got supplier route plan list, count={}", list != null ? list.size() : 0); + setName(list); + return list; + } + + private void setName(List list) { setSupplierNames(list); setProductTypeNames(list); - return list; + setLineName(list); } /** @@ -70,15 +101,47 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { */ private void setSupplierNames(List rules) { if (rules == null || rules.isEmpty()) { + log.info("Setting supplier names: rules list is empty"); return; } - for (EmisTransPlanRule rule : rules) { - if (StringUtils.hasText(rule.getSupplierCode())) { - String supplierNames = emisTransPlanRuleMapper.selectSupplierNamesByCodes(rule.getSupplierCode()); - if(StringUtil.isEmpty(supplierNames)){ - return; - } - rule.setSupplierName(supplierNames); + // 收集所有需要查询的供应商编码 + List supplierCodes = rules.stream() + .map(EmisTransPlanRule::getSupplierCode) + .filter(StringUtils::hasText) + .flatMap(code -> Arrays.stream(code.split(","))) + .distinct() + .collect(Collectors.toList()); + + log.info("Setting supplier names: code count={}, codes={}", supplierCodes.size(), supplierCodes); + + if (!supplierCodes.isEmpty()) { + // 批量查询供应商信息 + List> supplierInfos = emisTransPlanRuleMapper.selectSupplierInfoByCodes(supplierCodes); + log.info("Setting supplier names: found supplier info count={}", + supplierInfos != null ? supplierInfos.size() : 0); + + if (supplierInfos != null && !supplierInfos.isEmpty()) { + // 创建供应商编码到名称的映射 + Map supplierCodeToNameMap = supplierInfos.stream() + .collect(Collectors.toMap( + info -> info.get("code"), + info -> info.get("name"), + (existing, replacement) -> existing)); + + log.info("Setting supplier names: code to name mapping count={}", supplierCodeToNameMap.size()); + + // 设置供应商名称 + rules.forEach(rule -> { + if (StringUtils.hasText(rule.getSupplierCode())) { + String names = Arrays.stream(rule.getSupplierCode().split(",")) + .map(code -> supplierCodeToNameMap.getOrDefault(code, "")) + .filter(StringUtils::hasText) + .collect(Collectors.joining(",")); + rule.setSupplierName(names); + log.debug("Setting supplier name: id={}, supplierCode={}, supplierName={}", + rule.getId(), rule.getSupplierCode(), names); + } + }); } } } @@ -88,15 +151,99 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { */ private void setProductTypeNames(List rules) { if (rules == null || rules.isEmpty()) { + log.info("Setting product type names: rules list is empty"); return; } - for (EmisTransPlanRule rule : rules) { - if (StringUtils.hasText(rule.getProductType())) { - String productTypeNames = emisTransPlanRuleMapper.selectProductTypeNamesByCodes(rule.getProductType()); - if(StringUtil.isEmpty(productTypeNames)){ - return; - } - rule.setProductTypeName(productTypeNames); + // 收集所有需要查询的产品类型编码 + List productTypes = rules.stream() + .map(EmisTransPlanRule::getProductType) + .filter(StringUtils::hasText) + .flatMap(type -> Arrays.stream(type.split(","))) + .distinct() + .collect(Collectors.toList()); + + log.info("Setting product type names: code count={}, codes={}", productTypes.size(), productTypes); + + if (!productTypes.isEmpty()) { + // 批量查询产品类型信息 + List> productTypeInfos = emisTransPlanRuleMapper + .selectProductTypeInfoByCodes(productTypes); + log.info("Setting product type names: found product type info count={}", + productTypeInfos != null ? productTypeInfos.size() : 0); + + if (productTypeInfos != null && !productTypeInfos.isEmpty()) { + // 创建产品类型编码到名称的映射 + Map productTypeToNameMap = productTypeInfos.stream() + .collect(Collectors.toMap( + info -> info.get("code"), + info -> info.get("name"), + (existing, replacement) -> existing)); + + log.info("Setting product type names: code to name mapping count={}", productTypeToNameMap.size()); + + // 设置产品类型名称 + rules.forEach(rule -> { + if (StringUtils.hasText(rule.getProductType())) { + String names = Arrays.stream(rule.getProductType().split(",")) + .map(code -> productTypeToNameMap.getOrDefault(code, "")) + .filter(StringUtils::hasText) + .collect(Collectors.joining(",")); + rule.setProductTypeName(names); + log.debug("Setting product type name: id={}, productType={}, productTypeName={}", + rule.getId(), rule.getProductType(), names); + } + }); + } + } + } + + /** + * 设置线路名称 + */ + private void setLineName(List rules) { + if (rules == null || rules.isEmpty()) { + log.info("Setting line names: rules list is empty"); + return; + } + // 收集所有需要查询的线路编码 + List lineCodes = rules.stream() + .map(EmisTransPlanRule::getLineCode) + .filter(StringUtils::hasText) + .distinct() + .collect(Collectors.toList()); + + log.info("Setting line names: code count={}, codes={}", lineCodes.size(), lineCodes); + + if (!lineCodes.isEmpty()) { + // 批量查询线路信息 + List lines = emisTransLineMapper.selectEmisTransLineList( + new EmisTransLine() { + { + setLineCode(String.join(",", lineCodes)); + } + }); + + log.info("Setting line names: found line info count={}", lines != null ? lines.size() : 0); + + if (lines != null && !lines.isEmpty()) { + // 创建线路编码到线路名称的映射 + Map lineCodeToNameMap = lines.stream() + .collect(Collectors.toMap( + EmisTransLine::getLineCode, + EmisTransLine::getLineName, + (existing, replacement) -> existing)); + + log.info("Setting line names: code to name mapping count={}", lineCodeToNameMap.size()); + + // 设置线路名称 + rules.forEach(rule -> { + if (StringUtils.hasText(rule.getLineCode())) { + String name = lineCodeToNameMap.get(rule.getLineCode()); + rule.setLineName(name); + log.debug("Setting line name: id={}, lineCode={}, lineName={}", + rule.getId(), rule.getLineCode(), name); + } + }); } } } @@ -110,26 +257,31 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { @Override @Transactional public int insertEmisTransPlanRule(EmisTransPlanRule emisTransPlanRule) throws EmisBizError { + log.info("Start inserting supplier route plan, emisTransPlanRule={}", emisTransPlanRule); // 处理父节点 if (emisTransPlanRule.getParentId() != null) { EmisTransPlanRule parent = emisTransPlanRuleMapper .selectEmisTransPlanRuleById(emisTransPlanRule.getParentId()); if (parent == null) { - throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "父节点不存在"); + throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "Parent node does not exist"); } // 设置祖先节点 String ancestors = parent.getAncestors() == null ? "" : parent.getAncestors(); emisTransPlanRule.setAncestors(ancestors + "," + parent.getId()); + log.debug("Setting ancestors, parentId={}, ancestors={}", parent.getId(), emisTransPlanRule.getAncestors()); } else { emisTransPlanRule.setParentId(0L); emisTransPlanRule.setAncestors("0"); + log.debug("Setting root node, parentId=0, ancestors=0"); } // 插入当前节点 int rows = emisTransPlanRuleMapper.insertEmisTransPlanRule(emisTransPlanRule); + log.info("Inserted supplier route plan, affected rows={}, ID={}", rows, emisTransPlanRule.getId()); // 如果有子节点,递归处理 if (emisTransPlanRule.getChildren() != null && !emisTransPlanRule.getChildren().isEmpty()) { + log.info("Start processing child nodes, count={}", emisTransPlanRule.getChildren().size()); for (EmisTransPlanRule child : emisTransPlanRule.getChildren()) { child.setParentId(emisTransPlanRule.getId()); insertEmisTransPlanRule(child); @@ -148,27 +300,33 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { @Override @Transactional public int updateEmisTransPlanRule(EmisTransPlanRule emisTransPlanRule) throws EmisBizError { + log.info("Start updating supplier route plan, ID={}, emisTransPlanRule={}", emisTransPlanRule.getId(), + emisTransPlanRule); if (emisTransPlanRule.getParentId() == null) { - return emisTransPlanRuleMapper.updateEmisTransPlanRule(emisTransPlanRule); + int rows = emisTransPlanRuleMapper.updateEmisTransPlanRule(emisTransPlanRule); + log.info("Updated supplier route plan, affected rows={}", rows); + return rows; } // 检查父节点是否存在 EmisTransPlanRule parent = emisTransPlanRuleMapper .selectEmisTransPlanRuleById(emisTransPlanRule.getParentId()); if (parent == null) { - throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "父节点不存在"); + throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "Parent node does not exist"); } // 检查是否形成循环引用 if (parent.getAncestors() != null && parent.getAncestors().contains(emisTransPlanRule.getId().toString())) { - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "不能将节点移动到其子节点下"); + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "Cannot move node under its child node"); } // 更新祖先节点 String ancestors = parent.getAncestors() == null ? "" : parent.getAncestors(); emisTransPlanRule.setAncestors(ancestors + "," + parent.getId()); + log.debug("Updating ancestors, parentId={}, ancestors={}", parent.getId(), emisTransPlanRule.getAncestors()); // 更新当前节点 int rows = emisTransPlanRuleMapper.updateEmisTransPlanRule(emisTransPlanRule); + log.info("Updated supplier route plan, affected rows={}", rows); // 更新子节点的祖先节点 updateChildrenAncestors(emisTransPlanRule); @@ -185,13 +343,15 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { @Override @Transactional public int deleteEmisTransPlanRuleByIds(Long[] ids) throws EmisBizError { + log.info("Start batch deleting supplier route plans, IDs={}", Arrays.toString(ids)); for (Long id : ids) { // 检查是否有子节点 if (emisTransPlanRuleMapper.hasChildByEmisTransPlanRuleId(id) > 0) { - throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "存在子节点,不允许删除"); + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "Cannot delete node with child nodes"); } deleteEmisTransPlanRuleById(id); } + log.info("Batch deleted supplier route plans, count={}", ids.length); return ids.length; } @@ -203,35 +363,34 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { */ @Override public int deleteEmisTransPlanRuleById(Long id) { - return emisTransPlanRuleMapper.deleteEmisTransPlanRuleById(id); + log.info("Start deleting supplier route plan, ID={}", id); + int rows = emisTransPlanRuleMapper.deleteEmisTransPlanRuleById(id); + log.info("Deleted supplier route plan, affected rows={}", rows); + return rows; } /** * 查询供应商线路规划树结构 - * - * @param lineName 线路名称 + * + * @param lineCode 线路编码 * @return 供应商线路规划树结构 */ @Override - public List selectEmisTransPlanRuleTree(String lineName) { - List allRules = null; - if (StringUtil.isEmpty(lineName)) { - allRules = this.selectEmisTransPlanRuleList(new EmisTransPlanRule()); - return buildTree(allRules); - } - + public List selectEmisTransPlanRuleTree(String lineCode) { + log.info("Start querying supplier route plan tree, lineCode={}", lineCode); EmisTransPlanRule query = new EmisTransPlanRule(); - query.setLineName(lineName); - allRules = emisTransPlanRuleMapper.selectEmisTransPlanRuleTree(query); - setSupplierNames(allRules); - setProductTypeNames(allRules); - return buildTree(allRules); + query.setLineCode(lineCode); + List allRules = this.getEmisTransPlanRuleList(query); + List tree = buildTree(allRules); + log.info("Queried supplier route plan tree, node count={}", tree != null ? tree.size() : 0); + return tree; } /** * 构建树形结构 */ private List buildTree(List allRules) { + log.debug("Start building tree structure, node count={}", allRules != null ? allRules.size() : 0); if (allRules == null || allRules.isEmpty()) { return new ArrayList<>(); } @@ -249,12 +408,15 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { parent.setChildren(new ArrayList<>()); } parent.getChildren().add(rule); + log.debug("Adding child node, parentId={}, childId={}", parent.getId(), rule.getId()); } // 否则,如果 parentId 为 0 或者父节点不在当前查询结果中,则认为是根节点 else if (rule.getParentId() == null || rule.getParentId() == 0L || !map.containsKey(rule.getParentId())) { tree.add(rule); + log.debug("Adding root node, ID={}", rule.getId()); } } + log.debug("Built tree structure, root node count={}", tree.size()); return tree; } @@ -263,10 +425,12 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { */ @Transactional public void updateChildrenAncestors(EmisTransPlanRule parent) { + log.info("Start updating children's ancestors, parentId={}", parent.getId()); // 查询直接子节点 EmisTransPlanRule childQuery = new EmisTransPlanRule(); childQuery.setParentId(parent.getId()); - List children = emisTransPlanRuleMapper.selectEmisTransPlanRuleList(childQuery); + List children = emisTransPlanRuleMapper.getEmisTransPlanRuleList(childQuery); + log.info("Found child nodes, count={}", children != null ? children.size() : 0); if (children != null && !children.isEmpty()) { String newAncestors = parent.getAncestors() + "," + parent.getId(); @@ -274,6 +438,7 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { child.setAncestors(newAncestors); // 更新子节点,包括其祖先信息 emisTransPlanRuleMapper.updateEmisTransPlanRule(child); + log.debug("Updating child node's ancestors, childId={}, ancestors={}", child.getId(), newAncestors); // 递归更新子节点 updateChildrenAncestors(child); } @@ -282,10 +447,10 @@ public class EmisTransPlanRuleServiceImpl implements IEmisTransPlanRuleService { @Override public List selectSupplierInfoByConditions(EmisTransPlanRule emisTransPlanRule) { - log.info("开始根据条件查询供应商信息,查询条件:{}", emisTransPlanRule); + log.info("Start querying supplier info by conditions, query={}", emisTransPlanRule); emisTransPlanRule.setStatus("1"); - List result = this.selectEmisTransPlanRuleList(emisTransPlanRule); - log.info("查询完成,共获取{}条记录", result.size()); + List result = this.getEmisTransPlanRuleList(emisTransPlanRule); + log.info("Queried supplier info, count={}", result != null ? result.size() : 0); return result; } } \ No newline at end of file diff --git a/emis-biz/src/main/resources/mapper/EmisTransPlanRuleMapper.xml b/emis-biz/src/main/resources/mapper/EmisTransPlanRuleMapper.xml index 157ae2ed2..fb8e759f6 100644 --- a/emis-biz/src/main/resources/mapper/EmisTransPlanRuleMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTransPlanRuleMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -20,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select r.id, r.parent_id, r.ancestors, r.line_name, r.trans_type, r.product_type, r.start_site_code, + select r.id, r.parent_id, r.ancestors, r.line_code, r.trans_type, r.product_type, r.start_site_code, s1.site_name as start_site_name, r.next_site_code, s2.site_name as next_site_name, r.supplier_code, r.status, r.remark, r.del_flag, r.create_by, r.create_time, r.update_by, r.update_time, r.create_site, r.update_site from emis_trans_plan_rule r @@ -33,7 +34,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and r.parent_id = #{parentId} and r.ancestors like concat(#{ancestors}, '%') - and r.line_name like concat('%', #{lineName}, '%') + and r.line_code = #{lineCode} + and ( FIND_IN_SET(#{transType},r.trans_type) ) + and ( FIND_IN_SET(#{productType},r.product_type) ) + and r.start_site_code = #{startSiteCode} + and r.next_site_code = #{nextSiteCode} + and ( FIND_IN_SET(#{supplierCode},r.supplier_code) ) + and r.status = #{status} + and r.del_flag = '0' + and LENGTH(r.ancestors) - LENGTH(REPLACE(r.ancestors, ',', '')) > 1 + + order by id desc + + + - - - SELECT DISTINCT r.id, r.parent_id, r.ancestors, r.line_name, r.trans_type, r.product_type, - r.start_site_code, s1.site_name as start_site_name, r.next_site_code, s2.site_name as next_site_name, - r.supplier_code, GROUP_CONCAT(s.name) as supplier_name, r.status, r.remark, r.del_flag, - r.create_by, r.create_time, r.update_by, r.update_time, r.create_site, r.update_site - FROM emis_trans_plan_rule r - LEFT JOIN emis_site s1 ON r.start_site_code = s1.site_code AND s1.del_flag = 0 - LEFT JOIN emis_site s2 ON r.next_site_code = s2.site_code AND s2.del_flag = 0 - LEFT JOIN emis_supplier s ON FIND_IN_SET(s.code, r.supplier_code) AND s.del_flag = 0 - WHERE r.del_flag = 0 - - AND FIND_IN_SET(#{transType}, r.trans_type) - - - AND r.start_site_code = #{startSiteCode} - - - AND r.next_site_code = #{nextSiteCode} - - AND r.status = '1' + + + + \ No newline at end of file