材料站

This commit is contained in:
mashuai 2025-07-08 19:58:24 +08:00
parent 7901d6fc1e
commit cea9cb8390
5 changed files with 124 additions and 10 deletions

View File

@ -24,6 +24,8 @@ import com.bonus.material.basic.mapper.BmFileInfoMapper;
import com.bonus.material.clz.domain.BmTeam;
import com.bonus.material.clz.domain.vo.MaterialMaCodeVo;
import com.bonus.material.clz.mapper.MaterialMachineMapper;
import com.bonus.material.common.domain.dto.SelectDto;
import com.bonus.material.common.domain.vo.AgreementVo;
import com.bonus.material.common.mapper.SelectMapper;
import com.bonus.material.ma.domain.Type;
import com.bonus.material.ma.mapper.TypeMapper;
@ -334,9 +336,97 @@ public class MaterialLeaseInfoServiceImpl implements MaterialLeaseInfoService {
} else {
detail.setUseNum(BigDecimal.ZERO);
}
// 根据AgreementId查询机具库存
BigDecimal storageNum = materialLeaseInfoMapper.getStorageNum(info.getAgreementId(), detail.getTypeId());
detail.setStorageNum(storageNum);
SelectDto selectDto = new SelectDto();
selectDto.setProjectId(info.getProjectId().intValue());
List<AgreementVo> list = mapper.getAgreementInfoBy(selectDto);
// 先查第四层类型
List<TypeTreeNode> listL4 = new ArrayList<>();
List<TypeTreeNode> listL5 = new ArrayList<>();
List<TypeTreeNode> list7 = new ArrayList<>();
BackApplyInfo backApplyInfo = new BackApplyInfo();
if (!CollectionUtils.isEmpty(list)) {
for (AgreementVo agreementVo : list) {
backApplyInfo.setAgreementId(Long.valueOf(agreementVo.getAgreementId()));
listL4 = mapper.getUseTypeTreeL4(backApplyInfo);
if (!CollectionUtils.isEmpty(listL4)) {
listL4 = listL4.stream()
.filter(item -> StringUtils.isNotBlank(item.getMaterialName()) && StringUtils.isNotBlank(item.getTypeName()))
.collect(Collectors.toList());
// 将listL5中typeId相同的数据进行num相加
for (TypeTreeNode node : listL4) {
// 根据node中的typeId查询listL5中相同数据,如果在listL5中存在则将num相加,反之将node添加到list5中
TypeTreeNode node1 = listL5.stream()
.filter(item -> item.getTypeId() == (node.getTypeId()))
.findFirst()
.orElse(null);
if (node1 != null) {
node1.setNum(node1.getNum().add(node.getNum()));
}
if (node1 == null) {
listL5.add(node);
}
}
}
}
// 根据工程id去协议表中查询协议id
MaterialLeaseApplyInfo bean = new MaterialLeaseApplyInfo();
bean.setProId(info.getProjectId());
List<BmAgreementInfo> listAgreement = materialLeaseInfoMapper.getAgreementIdByProId(bean);
if (!CollectionUtils.isEmpty(listAgreement)) {
for (BmAgreementInfo agreementInfo : listAgreement) {
bean.setAgreementId(agreementInfo.getAgreementId());
List<TypeTreeNode> list6 = materialLeaseInfoMapper.getUseTypeTree(bean);
if (!CollectionUtils.isEmpty(list6)) {
for (TypeTreeNode node : list6) {
// 根据node中的typeId查询listL7中相同数据,如果在listL7中存在则将num相加,反之将node添加到list7中
TypeTreeNode node1 = list7.stream()
.filter(item -> item.getTypeId() == (node.getTypeId()))
.findFirst()
.orElse(null);
if (node1 != null) {
node1.setNum(node1.getNum().add(node.getNum()));
}
if (node1 == null) {
list7.add(node);
}
}
}
}
}
// 根据协议id去clz_slt_agreement_info材料站协议表中查询在用设备进行数据筛选去除
if (!CollectionUtils.isEmpty(listL5)) {
if (!CollectionUtils.isEmpty(list7)) {
// 将list5中typeId和list7中相同数据进行num相减并剔除相减后为0的数据
Map<Long, BigDecimal> typeIdToNum = list7.stream()
.collect(Collectors.toMap(
TypeTreeNode::getTypeId,
TypeTreeNode::getNum,
BigDecimal::add
));
Iterator<TypeTreeNode> iterator = listL5.iterator();
while (iterator.hasNext()) {
TypeTreeNode node = iterator.next();
Long typeId = node.getTypeId();
// 获取要减去的值默认值为BigDecimal.ZERO
BigDecimal subtractNum = typeIdToNum.getOrDefault(typeId, BigDecimal.ZERO);
// 计算新值处理num为null的情况若业务允许
BigDecimal currentNum = Optional.ofNullable(node.getNum())
.orElse(BigDecimal.ZERO);
BigDecimal newNum = currentNum.subtract(subtractNum);
if (newNum.compareTo(BigDecimal.ZERO) == 0) {
iterator.remove();
} else {
node.setNum(newNum);
}
}
}
// 根据details中的typeId去list5中获取库存
listL5.stream()
.filter(node -> detail.getTypeId().equals(node.getTypeId()))
.findFirst()
.ifPresent(node -> detail.setStorageNum(node.getNum()));
}
}
// 获取编码详情
// 移出maCodeList集合中状态不为在库的数据
List<MaterialLeaseMaCodeDto> maCodeVoList = materialLeaseInfoMapper.getCodeList(id, detail.getTypeId());

View File

@ -234,4 +234,6 @@ public interface SelectMapper {
* @return
*/
List<String> getUserNameList(MaterialLeaseApplyInfo i8ProjectInfo);
List<BmProject> getProjectListByClz(BmProject bmProject);
}

View File

@ -88,13 +88,15 @@ public class SelectServiceImpl implements SelectService {
*/
@Override
public AjaxResult getProjectList(BmProject bmProject) {
List<BmProject> bmProjects = new ArrayList<>();
if (bmProject.getIsApp() != null && bmProject.getIsApp()) {
if (bmProject.getTeamId() != null) {
bmProject.setUnitId(bmProject.getTeamId());
bmProjects = mapper.getProjectListByClz(bmProject);
} else {
bmProjects = mapper.getProjectListApp(bmProject);
}
List<BmProject> list = mapper.getProjectListApp(bmProject);
list.removeIf(Objects::isNull);
return AjaxResult.success(list);
bmProjects.removeIf(Objects::isNull);
return AjaxResult.success(bmProjects);
}
// 获取登陆用户的组织ID

View File

@ -82,17 +82,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
tta.agreement_id,
bp.external_id,
bp.imp_unit,
bt.bzz_idcard
bt.bzz_idcard,
bai.unit_id,
bai.project_id
from
clz_lease_apply_info lai
left join tm_task tt on lai.task_id = tt.task_id
left join tm_task_agreement tta ON tt.task_id = tta.task_id
left join bm_agreement_info bai ON tta.agreement_id = bai.agreement_id
left join clz_lease_apply_details lad on lai.id = lad.parent_id
left join bm_project bp on bp.pro_id = lai.project_id
left join bm_unit bt on bt.unit_id = lai.team_id
left join sys_dept sd on sd.dept_id = bp.imp_unit
left join sys_dict_data sda on tt.task_status = sda.dict_value
and sda.dict_type = 'lease_task_status'
and sda.dict_type = 'clz_lease_apply_task_status'
left join ma_type mt on lad.type_id = mt.type_id and mt.del_flag = '0'
left join ma_type mt1 on mt.parent_id = mt1.type_id and mt1.del_flag = '0'
</sql>

View File

@ -190,7 +190,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT agreement_id AS agreementId,
agreement_code AS agreementCode,
is_slt AS isSlt
FROM bm_agreement_info
FROM clz_bm_agreement_info
WHERE unit_id = #{unitId} AND project_id = #{projectId} AND status = '1'
</select>
@ -538,4 +538,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE post_id = '3de0eb390f3611efa1940242ac130004'
AND depart_id = #{departId}
</select>
<select id="getProjectListByClz" resultType="com.bonus.material.basic.domain.BmProject">
/*根据往来单位id关联协议查询工程*/
<if test="teamId != null">
SELECT DISTINCT bp.pro_id AS proId,
bp.pro_name AS proName
FROM bm_unit bu
LEFT JOIN clz_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 = #{teamId} AND bu.del_flag = '0'
</if>
<if test="teamId == null">
SELECT pro_id AS proId,
pro_name AS proName
FROM bm_project
WHERE del_flag = '0'
</if>
</select>
</mapper>