退料接收

This commit is contained in:
mashuai 2024-11-15 15:13:15 +08:00
parent e3476a9dd4
commit 40b5c43c55
6 changed files with 254 additions and 46 deletions

View File

@ -0,0 +1,77 @@
package com.bonus.common.biz.domain;
import java.util.ArrayList;
import java.util.List;
/**
* 单位工程树构建
* @author ma_sh
*/
public class ProjectTreeBuild {
public List<ProjectTreeNode> nodeList = new ArrayList<>();
/**
* 构造方法
* @param nodeList 将数据集合赋值给nodeList即所有数据作为所有节点
*/
public ProjectTreeBuild(List<ProjectTreeNode> nodeList) {
this.nodeList = nodeList;
}
/**
* 获取需构建的所有根节点顶级节点 "0"
* @return 所有根节点List集合
*/
public List<ProjectTreeNode> getRootNode() {
// 保存所有根节点所有根节点的数据
List<ProjectTreeNode> rootNodeList = new ArrayList<>();
// treeNode查询出的每一条数据节点
for (ProjectTreeNode treeNode : nodeList){
// 判断当前节点是否为根节点此处注意若parentId类型是String则要采用equals()方法判断
if ("0".equals(treeNode.getParentId())) {
// 添加
rootNodeList.add(treeNode);
}
}
return rootNodeList;
}
/**
* 根据每一个顶级节点根节点进行构建树形结构
* @return 构建整棵树
*/
public List<ProjectTreeNode> buildTree(){
// treeNodes保存一个顶级节点所构建出来的完整树形
List<ProjectTreeNode> treeNodes = new ArrayList<ProjectTreeNode>();
// getRootNode()获取所有的根节点
for (ProjectTreeNode treeRootNode : getRootNode()) {
// 将顶级节点进行构建子树
treeRootNode = buildChildTree(treeRootNode);
// 完成一个顶级节点所构建的树形增加进来
treeNodes.add(treeRootNode);
}
return treeNodes;
}
/**
* 递归-----构建子树形结构
* @param pNode 根节点顶级节点
* @return 整棵树
*/
public ProjectTreeNode buildChildTree(ProjectTreeNode pNode){
List<ProjectTreeNode> childTree = new ArrayList<>();
// nodeList所有节点集合所有数据
for (ProjectTreeNode treeNode : nodeList) {
// 判断当前节点的父节点ID是否等于根节点的ID即当前节点为其下的子节点
if (treeNode.getParentId().equals(pNode.getId())) {
// 再递归进行判断当前节点的情况调用自身方法
childTree.add(buildChildTree(treeNode));
}
}
// for循环结束即节点下没有任何节点树形构建结束设置树结果
pNode.setChildren(childTree);
return pNode;
}
}

View File

@ -0,0 +1,27 @@
package com.bonus.common.biz.domain;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 单位工程节点返回实体类
* @author ma_sh
*/
@Data
public class ProjectTreeNode {
private String id;
private String name;
private String parentId;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private String level;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<ProjectTreeNode> children = new ArrayList<>();
}

View File

@ -1,5 +1,6 @@
package com.bonus.material.common.mapper;
import com.bonus.common.biz.domain.ProjectTreeNode;
import com.bonus.common.biz.domain.TreeNode;
import com.bonus.common.biz.domain.TypeTreeNode;
import com.bonus.material.back.domain.BackApplyInfo;
@ -25,7 +26,7 @@ public interface SelectMapper {
* @author cwchen
* @date 2023/12/20 14:23
*/
List<BmUnit> getUnitList(BmUnit bmUnit);
List<ProjectTreeNode> getUnitList(BmUnit bmUnit);
/**
* 工程下拉选
@ -35,7 +36,7 @@ public interface SelectMapper {
* @author cwchen
* @date 2023/12/20 15:05
*/
List<BmProject> getProjectList(BmProject bmProject);
List<ProjectTreeNode> getProjectList(BmProject bmProject);
/**
* 机具类型下拉选

View File

@ -1,10 +1,6 @@
package com.bonus.material.common.service.impl;
import com.bonus.common.biz.constant.GlobalConstants;
import com.bonus.common.biz.domain.TreeBuild;
import com.bonus.common.biz.domain.TreeNode;
import com.bonus.common.biz.domain.TypeTreeBuild;
import com.bonus.common.biz.domain.TypeTreeNode;
import com.bonus.common.biz.domain.*;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.back.domain.BackApplyInfo;
import com.bonus.material.basic.domain.BmProject;
@ -33,27 +29,50 @@ public class SelectServiceImpl implements SelectService {
@Resource(name = "SelectMapper")
private SelectMapper mapper;
/**
* 单位下拉类型树
* @param bmUnit
* @return
*/
@Override
public AjaxResult getUnitList(BmUnit bmUnit) {
List<BmUnit> list = new ArrayList<>();
List<ProjectTreeNode> groupList = new ArrayList<>();
List<ProjectTreeNode> list = new ArrayList<>();
try {
list = mapper.getUnitList(bmUnit);
if (CollectionUtils.isNotEmpty(list)) {
// 创建树形结构数据集合作为参数
ProjectTreeBuild treeBuild = new ProjectTreeBuild(list);
// 原查询结果转换树形结构
groupList = treeBuild.buildTree();
}
} catch (Exception e) {
log.error("往来单位-查询失败", e);
log.error("单位类型树-查询失败", e);
}
return AjaxResult.success(list);
return AjaxResult.success(groupList);
}
/**
* 工程类型树
* @param bmProject
* @return
*/
@Override
public AjaxResult getProjectList(BmProject bmProject) {
List<ProjectTreeNode> groupList = new ArrayList<>();
List<ProjectTreeNode> list = new ArrayList<>();
try {
List<BmProject> list = mapper.getProjectList(bmProject);
list.removeIf(item -> item == null);
return AjaxResult.success(list);
list = mapper.getProjectList(bmProject);
if (CollectionUtils.isNotEmpty(list)) {
// 创建树形结构数据集合作为参数
ProjectTreeBuild treeBuild = new ProjectTreeBuild(list);
// 原查询结果转换树形结构
groupList = treeBuild.buildTree();
}
} catch (Exception e) {
log.error("工程-查询失败", e);
log.error("工程类型树-查询失败", e);
}
return AjaxResult.success();
return AjaxResult.success(groupList);
}
@Override

View File

@ -4,42 +4,76 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.material.common.mapper.SelectMapper">
<!--往来单位-->
<select id="getUnitList" resultType="com.bonus.material.basic.domain.BmUnit">
<select id="getUnitList" resultType="com.bonus.common.biz.domain.ProjectTreeNode">
/*根据标段工程id关联协议查询往来单位*/
SELECT
*
FROM
(
SELECT
CONCAT( 'dw', sd.dept_id ) AS id,
sd.dept_name AS NAME,
0 AS parentId,
1 AS LEVEL
FROM
sys_dept sd
LEFT JOIN bm_unit bu ON sd.dept_id = bu.dept_id
LEFT JOIN bm_agreement_info bai ON bu.unit_id = bai.unit_id
AND bai.`status` = '1'
LEFT JOIN bm_project bp ON bai.project_id = bp.pro_id
AND bp.del_flag = '0'
WHERE
bu.del_flag = '0'
AND sd.del_flag = '0'
AND sd.`status` = '0'
<if test="projectId != null">
SELECT DISTINCT bu.unit_id AS unitId,
bu.unit_name AS unitName
FROM bm_project bpl
LEFT JOIN bm_agreement_info bai ON bpl.pro_id = bai.project_id AND bai.`status` = '1'
LEFT JOIN bm_unit bu ON bai.unit_id = bu.unit_id AND bu.del_flag = '0'
WHERE bpl.pro_id = #{projectId} AND bpl.del_flag = '0'
AND bp.pro_id = #{projectId}
</if>
<if test="projectId == null">
SELECT unit_id AS unitId,
unit_name AS unitName
FROM bm_unit
WHERE del_flag = '0'
UNION
SELECT DISTINCT
CONCAT( 'lx', bu.dept_id, '-', sda.dict_code ) AS id,
sda.dict_label AS NAME,
CONCAT( 'dw', bu.dept_id ) AS parentId,
2 AS LEVEL
FROM
bm_unit bu
LEFT JOIN sys_dict_data sda ON bu.type_id = sda.dict_value
AND sda.dict_type = 'bm_unit_type'
LEFT JOIN bm_agreement_info bai ON bu.unit_id = bai.unit_id
AND bai.`status` = '1'
LEFT JOIN bm_project bp ON bai.project_id = bp.pro_id
AND bp.del_flag = '0'
WHERE
bu.del_flag = '0'
AND sda.STATUS = '0'
<if test="projectId != null">
AND bp.pro_id = #{projectId}
</if>
UNION
SELECT
bu.unit_id AS id,
bu.unit_name AS NAME,
CONCAT( 'lx', bu.dept_id, '-', sda.dict_code ) AS parentId,
3 AS LEVEL
FROM
bm_unit bu
LEFT JOIN sys_dict_data sda ON bu.type_id = sda.dict_value
AND sda.dict_type = 'bm_unit_type'
LEFT JOIN bm_agreement_info bai ON bu.unit_id = bai.unit_id
AND bai.`status` = '1'
LEFT JOIN bm_project bp ON bai.project_id = bp.pro_id
AND bp.del_flag = '0'
WHERE
bu.del_flag = '0'
AND sda.STATUS = '0'
<if test="projectId != null">
AND bp.pro_id = #{projectId}
</if>
) ff
ORDER BY
LEVEL
</select>
<!--标段工程-->
<select id="getProjectList" resultType="com.bonus.material.basic.domain.BmProject">
/*根据往来单位id关联协议查询工程*/
<if test="unitId != null">
SELECT DISTINCT bp.pro_id AS proId,
bp.pro_name AS proName
FROM bm_unit bu
LEFT JOIN bm_agreement_info bai ON bu.unit_id = bai.unit_id AND bai.`status` = '1'
LEFT JOIN bm_project bp ON bai.project_id = bp.pro_id AND bp.del_flag = '0'
WHERE bu.unit_id = #{unitId} AND bu.del_flag = '0'
</if>
<if test="unitId == null">
SELECT pro_id AS proId,
pro_name AS proName
FROM bm_project
WHERE del_flag = '0'
</if>
</select>
<!--机具类型-->
<select id="getMaTypeData" resultType="com.bonus.material.common.domain.vo.SelectVo">
@ -221,4 +255,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item}
</foreach>
</select>
<select id="getProjectList" resultType="com.bonus.common.biz.domain.ProjectTreeNode">
/*根据往来单位id关联协议查询工程*/
SELECT
*
FROM
(
SELECT
bmp.pro_id AS id,
bmp.pro_name AS name,
concat( 'gs', bmp.imp_unit ) AS parentId,
2 AS level
FROM
bm_project bmp
LEFT JOIN sys_dept sd ON sd.dept_id = bmp.imp_unit
LEFT JOIN bm_agreement_info bai ON bai.project_id = bmp.pro_id
AND bai.`status` = '1'
LEFT JOIN bm_unit bu ON bu.unit_id = bai.unit_id
AND bu.del_flag = '0'
WHERE
sd.del_flag = '0'
AND sd.`status` = '0'
AND bmp.del_flag = '0'
<if test="unitId != null">
AND bu.unit_id = #{unitId}
</if>
UNION
SELECT DISTINCT
concat( 'gs', sd.dept_id ) AS id,
sd.dept_name AS proName,
'0' AS parentId,
1 AS level
FROM
sys_dept sd
LEFT JOIN bm_project bmp ON sd.dept_id = bmp.imp_unit
LEFT JOIN bm_agreement_info bai ON bai.project_id = bmp.pro_id
AND bai.`status` = '1'
LEFT JOIN bm_unit bu ON bu.unit_id = bai.unit_id
WHERE
bmp.pro_id IS NOT NULL
AND sd.del_flag = '0'
AND sd.`status` = '0'
AND bmp.del_flag = '0'
<if test="unitId != null">
AND bu.unit_id = #{unitId}
</if>
) a
ORDER BY
level
</select>
</mapper>

View File

@ -88,7 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateNum">
UPDATE purchase_check_details
SET bind_num = bind_num + COALESCE(#{num}, 0)
SET bind_num = COALESCE(bind_num, 0) + COALESCE(#{num}, 0)
WHERE task_id = #{dto.taskId}
AND type_id = #{dto.typeId}
AND #{num} IS NOT NULL