update 配方左侧树结构

master
yinq 4 days ago
parent aed2afd549
commit 02bf4e9cf6

@ -19,6 +19,7 @@ import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.mes.domain.vo.ProdRecipeInfoVo;
import org.dromara.mes.domain.vo.RecipeDetailVo;
import org.dromara.mes.domain.vo.RecipeTreeNodeVo;
import org.dromara.mes.domain.bo.ProdRecipeInfoBo;
import org.dromara.mes.domain.bo.RecipeDetailSaveBo;
import org.dromara.mes.service.IProdRecipeInfoService;
@ -48,6 +49,15 @@ public class ProdRecipeInfoController extends BaseController {
return prodRecipeInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("mes:recipeInfo:list")
@GetMapping("/tree")
public R<List<RecipeTreeNodeVo>> tree(ProdRecipeInfoBo bo) {
return R.ok(prodRecipeInfoService.queryRecipeTree(bo));
}
/**
* -
*/

@ -98,6 +98,12 @@ public class ProdRecipeWeight extends TenantEntity {
*/
private String maxRate;
/**
*
*/
@TableField(exist = false)
private String materialName;
/**
* 0 2
*/

@ -96,5 +96,9 @@ public class ProdRecipeWeightBo extends BaseEntity {
*/
private String maxRate;
/**
*
*/
private String materialName;
}

@ -107,6 +107,11 @@ public class ProdRecipeWeightVo implements Serializable {
@ExcelProperty(value = "子级编码")
private Long childCode;
/**
*
*/
private String materialName;
/**
* 使
*/

@ -0,0 +1,59 @@
package org.dromara.mes.domain.vo;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* VO
*
* @author system
*/
@Data
public class RecipeTreeNodeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
private String id;
/**
*
*/
private String label;
/**
*
*/
private String recipeCode;
/**
* ID
*/
private Long recipeId;
/**
* ID
*/
private Long materialId;
/**
*
*/
private String materialName;
/**
* 使
*/
private ProdRecipeInfoVo data;
/**
*
*/
private List<RecipeTreeNodeVo> children;
}

@ -3,6 +3,7 @@ package org.dromara.mes.service;
import org.dromara.mes.domain.ProdRecipeInfo;
import org.dromara.mes.domain.vo.ProdRecipeInfoVo;
import org.dromara.mes.domain.vo.RecipeDetailVo;
import org.dromara.mes.domain.vo.RecipeTreeNodeVo;
import org.dromara.mes.domain.bo.ProdRecipeInfoBo;
import org.dromara.mes.domain.bo.RecipeDetailSaveBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -84,4 +85,12 @@ public interface IProdRecipeInfoService {
* @return
*/
RecipeDetailVo queryDetailByRecipeId(Long recipeId);
/**
*
*
* @param bo
* @return
*/
List<RecipeTreeNodeVo> queryRecipeTree(ProdRecipeInfoBo bo);
}

@ -19,6 +19,7 @@ import org.dromara.mes.domain.vo.ProdRecipeInfoVo;
import org.dromara.mes.domain.vo.ProdRecipeWeightVo;
import org.dromara.mes.domain.vo.ProdRecipeMixingVo;
import org.dromara.mes.domain.vo.RecipeDetailVo;
import org.dromara.mes.domain.vo.RecipeTreeNodeVo;
import org.dromara.mes.domain.ProdRecipeInfo;
import org.dromara.mes.mapper.ProdRecipeInfoMapper;
import org.dromara.mes.service.IProdRecipeInfoService;
@ -29,6 +30,8 @@ import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.stream.Collectors;
/**
@ -317,4 +320,49 @@ public class ProdRecipeInfoServiceImpl implements IProdRecipeInfoService {
return detail;
}
@Override
public List<RecipeTreeNodeVo> queryRecipeTree(ProdRecipeInfoBo bo) {
bo.setRecipeState("1");
List<ProdRecipeInfoVo> recipeList = queryList(bo);
if (recipeList == null || recipeList.isEmpty()) {
return new ArrayList<>();
}
List<RecipeTreeNodeVo> treeList = new ArrayList<>();
for (ProdRecipeInfoVo recipe : recipeList) {
Long recipeId = recipe.getRecipeId();
String recipeCode = StringUtils.isNotBlank(recipe.getRecipeCode()) ? recipe.getRecipeCode() : "未命名";
// 查询该配方的称量信息
ProdRecipeWeightBo weightQuery = new ProdRecipeWeightBo();
weightQuery.setRecipeId(recipeId);
List<ProdRecipeWeightVo> weights = prodRecipeWeightService.queryList(weightQuery);
// 按称量序号顺序构建子节点仅显示物料名称queryList 已关联物料表查询物料名称)
Set<String> addedNames = new HashSet<>();
List<RecipeTreeNodeVo> children = new ArrayList<>();
for (ProdRecipeWeightVo w : weights) {
Long childCode = w.getChildCode();
if (childCode == null) continue;
String materialName = StringUtils.isNotBlank(w.getMaterialName()) ? w.getMaterialName() : "未知物料";
if (addedNames.add(materialName)) {
RecipeTreeNodeVo child = new RecipeTreeNodeVo();
child.setId("mat_" + recipeId + "_" + childCode);
child.setLabel(materialName);
child.setRecipeId(recipeId);
child.setRecipeCode(recipeCode);
child.setMaterialId(childCode);
child.setMaterialName(materialName);
children.add(child);
}
}
RecipeTreeNodeVo parent = new RecipeTreeNodeVo();
parent.setId("recipe_" + recipeId);
parent.setLabel(recipeCode);
parent.setRecipeCode(recipeCode);
parent.setRecipeId(recipeId);
parent.setData(recipe);
parent.setChildren(children.isEmpty() ? null : children);
treeList.add(parent);
}
return treeList;
}
}

@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdRecipeWeightBo;
import org.dromara.mes.domain.vo.ProdRecipeWeightVo;
import org.dromara.mes.domain.BaseMaterialInfo;
import org.dromara.mes.domain.ProdRecipeWeight;
import org.dromara.mes.mapper.ProdRecipeWeightMapper;
import org.dromara.mes.service.IProdRecipeWeightService;
@ -73,6 +74,8 @@ public class ProdRecipeWeightServiceImpl implements IProdRecipeWeightService {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdRecipeWeight> lqw = JoinWrappers.lambda(ProdRecipeWeight.class)
.selectAll(ProdRecipeWeight.class)
.select(BaseMaterialInfo::getMaterialName)
.leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, ProdRecipeWeight::getChildCode)
.eq(bo.getWeightId() != null, ProdRecipeWeight::getWeightId, bo.getWeightId())
.eq(bo.getRecipeId() != null, ProdRecipeWeight::getRecipeId, bo.getRecipeId())
.eq(bo.getWeightSeq() != null, ProdRecipeWeight::getWeightSeq, bo.getWeightSeq())

Loading…
Cancel
Save