gongchunyi
17 小时以前 c4fb65a699596f46d968451b972cf6fa83a1f6da
src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.framework.util.AliDingUtils;
import com.ruoyi.production.dto.ProductMaterialDto;
import com.ruoyi.production.dto.ProductMaterialGroupDto;
import com.ruoyi.production.dto.ProductMaterialSkuDto;
import com.ruoyi.production.enums.MaterialConfigTypeEnum;
import com.ruoyi.production.mapper.ProductMaterialMapper;
import com.ruoyi.production.pojo.ProductMaterial;
@@ -82,8 +83,6 @@
        }
        try {
            JSONArray searchConditions = new JSONArray();
            JSONObject statusCondition = new JSONObject();
            statusCondition.put("key", "processInstanceStatus");
@@ -148,6 +147,9 @@
            material.setRemark(formData.getString("textareaField_l92f36f9"));
            String materialType = formData.getString("selectField_l92f36fb");
            if ("板材".equals(materialType) || "砌块".equals(materialType) || "标砖".equals(materialType)) {
                materialType = "成品";
            }
            String inventoryCat = formData.getString("selectField_la154noy");
            material.setMaterialTypeId(getOrCreateConfigId(materialType, MaterialConfigTypeEnum.MATERIAL_TYPE.name()));
            material.setInventoryCategoryId(getOrCreateConfigId(inventoryCat, MaterialConfigTypeEnum.INVENTORY_CAT.name()));
@@ -224,10 +226,11 @@
        if (list == null || list.isEmpty()) {
            return 0;
        }
        int affected = 0;
        List<ProductMaterialSku> toSave = new ArrayList<>();
        List<ProductMaterialSku> toUpdate = new ArrayList<>();
        for (ProductMaterialSku sku : list) {
            LambdaQueryWrapper<ProductMaterialSku> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(ProductMaterialSku::getProductId, sku.getProductId())
                    .eq(ProductMaterialSku::getModel, sku.getModel());
@@ -240,28 +243,35 @@
            ProductMaterialSku exist = productMaterialSkuService.getOne(wrapper);
            if (exist == null) {
                productMaterialSkuService.save(sku);
                affected++;
                log.info("新增物料规格 {}", sku.getModel());
                toSave.add(sku);
            } else {
                if (exist.getFormModifiedTime() == null || !exist.getFormModifiedTime().equals(sku.getFormModifiedTime())) {
                    sku.setId(exist.getId());
                    sku.setCreateTime(exist.getCreateTime());
                    productMaterialSkuService.updateById(sku);
                    affected++;
                    log.info("更新物料规格 {}", sku.getModel());
                    toUpdate.add(sku);
                }
            }
        }
        int affected = 0;
        if (!toSave.isEmpty()) {
            productMaterialSkuService.saveBatch(toSave);
            affected += toSave.size();
            log.info("批量新增物料规格 {} 条", toSave.size());
        }
        if (!toUpdate.isEmpty()) {
            productMaterialSkuService.updateBatchById(toUpdate);
            affected += toUpdate.size();
            log.info("批量更新物料规格 {} 条", toUpdate.size());
        }
        return affected;
    }
    @Override
    public List<ProductMaterialGroupDto> ProductMaterialList(Integer type) {
        List<ProductMaterialConfig> configList = productMaterialConfigService.list(new LambdaQueryWrapper<ProductMaterialConfig>()
                .eq(ProductMaterialConfig::getConfigType, MaterialConfigTypeEnum.MATERIAL_TYPE.name())
        );
                .eq(ProductMaterialConfig::getConfigType, MaterialConfigTypeEnum.MATERIAL_TYPE.name()));
        if (CollectionUtils.isEmpty(configList)) {
            return new ArrayList<>();
        }
@@ -273,7 +283,9 @@
                            ProductMaterial::getId,
                            ProductMaterial::getMaterialTypeId,
                            ProductMaterial::getInventoryCategoryId,
                            ProductMaterial::getProductName
                            ProductMaterial::getProductName,
                            ProductMaterial::getUnit,
                            ProductMaterial::getRemark
                    )
            );
            materialMap = materialList.stream()
@@ -348,6 +360,8 @@
        dto.setProductName(m.getProductName());
        dto.setMaterialTypeId(m.getMaterialTypeId());
        dto.setInventoryCategoryId(m.getInventoryCategoryId());
        dto.setUnit(m.getUnit());
        dto.setRemark(m.getRemark());
        return dto;
    }
@@ -399,6 +413,16 @@
        log.info("删除物料成功 ids={}", ids);
    }
    @Override
    public ProductMaterialSkuDto selectProductByModelId(Long productModelId) {
        return baseMapper.selectProductByModelId(productModelId);
    }
    @Override
    public ProductMaterialSkuDto selectProductByProductMainId(Long productOrderId) {
        return baseMapper.selectProductByProductMainId(productOrderId);
    }
    private void validateProductMaterial(ProductMaterial productMaterial, boolean requireId) {
        if (productMaterial == null) {
            throw new ServiceException("参数不能为空");