BOM明细查询修改

This commit is contained in:
Ledo 2025-06-27 09:46:54 +08:00
parent a39a6a1c64
commit 3e0c9de015
4 changed files with 37 additions and 7 deletions

View File

@ -67,11 +67,7 @@ public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO>
List<ProcessBomDetailDO> selectStandardListByBomId(@Param("bomId") Long bomId);
@Select("SELECT p.*, IFNULL(SUM(s.storage_ok_qty), 0) AS storage_ok_qty " +
"FROM pro_process_bom_detail p " +
"LEFT JOIN v_storage_material_now s ON p.material_name = s.mat_name " +
"WHERE p.bom_id = #{bomId} and p.type = 1 AND p.deleted IN (0, 1) " +
"GROUP BY p.material_name")
@Select("SELECT p.* FROM pro_process_bom_detail p WHERE p.bom_id = #{bomId} and p.type = 1 AND p.deleted IN (0, 1) ")
//2025 0601 因为bom明细页查询到结果 group by materialcode转换为 group by id
List<ProcessBomDetailDO> selectStandardListByBomId20250609(@Param("bomId") Long bomId);
default Long getBomDetailByBluePrintNoAndBomId(String bomCode,String bluePrintNo){

View File

@ -16,6 +16,7 @@ import org.apache.poi.hpsf.Decimal;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
@ -106,7 +107,7 @@ public interface StorageLogNowMapper extends BaseMapperX<StorageLogNowDO> {
List<StorageLogNowDO> selectNowList(StorageNowAllReqVO reqVO);
List<StorageLogNowDO> selectAllByMatNames(@Param("matNames") List<String> matNames);
List<StorageLogNowDO> selectNowByMatPnId(@Param("matId")Long matId,@Param("pnId")Long pnId);
default PageResult<StorageLogNowDO> getStorageNowPricePage(StorageLogPageReqVO reqVO) {

View File

@ -33,6 +33,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.shenhe.ShenheDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper;
@ -42,6 +43,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.plantask.PlanTaskMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.shenhe.ShenheMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper;
import com.chanko.yunxi.mes.module.heli.enums.ProcessBomStatusEnum;
import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService;
import com.chanko.yunxi.mes.module.heli.service.composition.CompositionService;
@ -123,6 +125,8 @@ public class ProcessBomServiceImpl implements ProcessBomService {
private MaterialPlanMapper materialPlanMapper;
@Resource
private MaterialPlanBoomMapper materialPlanBoomMapper;
@Resource
private StorageLogNowMapper storageLogNowMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createProcessBom(ProcessBomSaveReqVO createReqVO) {
@ -808,6 +812,29 @@ public class ProcessBomServiceImpl implements ProcessBomService {
list.addAll(processBomDetailMapper.selectStandardListByBomId20250609(bomId));
// Map<Long, List<ProcessBomDetailDO>> standardGroupByMatId = processBomDetailDOS.stream().collect(Collectors.groupingBy(vo -> vo.getMaterialId() == null ? -1 : vo.getMaterialId()));
//查非标准件的
if (CollUtil.isNotEmpty(list)){
HashSet<String> materialNameSet = new HashSet<>();
for (ProcessBomDetailDO processBomDetailDO : list) {
processBomDetailDO.setStorageOkQty(BigDecimal.ZERO);
if (processBomDetailDO.getMaterialName() != null) {
materialNameSet.add(processBomDetailDO.getMaterialName());
}
}
if (CollUtil.isNotEmpty(materialNameSet)){
List<StorageLogNowDO> storageLogNowDOS = storageLogNowMapper.selectAllByMatNames(new ArrayList<>(materialNameSet));
for (ProcessBomDetailDO processBomDetailDO : list) {
for (StorageLogNowDO storageLogNowDO : storageLogNowDOS) {
if (processBomDetailDO.getMaterialName()!= null && storageLogNowDO.getMatName().equals(processBomDetailDO.getMaterialName())) {
processBomDetailDO.setStorageOkQty(storageLogNowDO.getStorageOkQty());
break;
}
}
}
}
}
List<ProcessBomDetailDO> processBomDetailNoStandardDOS = processBomDetailMapper.selectListNoStandardList(bomId);
List<ProcessBomDetailDO> noStandardList = processBomDetailNoStandardDOS.stream()

View File

@ -71,10 +71,16 @@
</where>
order by t.mat_code
</select>
<select id="selectNowByMatPnId" resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO">
select * from v_storage_material_now where id=#{matId} and pn_id=#{pnId} order by mat_code
</select>
<select id="selectAllByMatNames" resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO">
select mat_name as matName,IFNULL(SUM(storage_ok_qty), 0) AS storage_ok_qty from v_storage_material_now where mat_name in
<foreach collection="matNames" open="(" close=")" separator="," item="name">
#{name}
</foreach>
group by mat_name
</select>
<select id="selectMaterialWithNow"
parameterType="com.chanko.yunxi.mes.module.heli.controller.admin.storagelog.vo.StorageNowAllReqVO"
resultType="com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO">