maven
2025-10-15 8c627df4abacbe7397d0c1831f1a71c62ebe15b2
yys  1.随机排产
已修改3个文件
60 ■■■■■ 文件已修改
main-business/src/main/java/com/ruoyi/business/controller/ProductionMasterController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/ProductionMasterService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main-business/src/main/java/com/ruoyi/business/controller/ProductionMasterController.java
@@ -4,7 +4,9 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.business.dto.ProductionMasterDto;
import com.ruoyi.business.service.ProductionMasterService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.model.LoginUser;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -20,7 +22,7 @@
@RestController
@AllArgsConstructor
@RequestMapping("/productionMaster")
public class ProductionMasterController {
public class ProductionMasterController extends BaseController {
    
    private ProductionMasterService productionMasterService;
@@ -42,6 +44,15 @@
    }
    /**
     * 随机排产
     */
    @GetMapping("/randomScheduling")
    public R randomScheduling() {
        LoginUser loginUser = getLoginUser();
        return R.ok(productionMasterService.randomScheduling(loginUser));
    }
    /**
     * 清空生产明细库存选择list
     */
    @DeleteMapping("/deleteProductionInventory")
main-business/src/main/java/com/ruoyi/business/service/ProductionMasterService.java
@@ -5,6 +5,7 @@
import com.ruoyi.business.dto.ProductionMasterDto;
import com.ruoyi.business.entity.ProductionMaster;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.model.LoginUser;
/**
 * <p>
@@ -23,4 +24,6 @@
    int delByIds(Long[] ids);
    int deleteProductionInventory(ProductionMasterDto productionMasterDto);
    Object randomScheduling(LoginUser loginUser);
}
main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.business.entity.*;
import com.ruoyi.business.mapper.*;
import com.ruoyi.business.service.ProductionMasterService;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
@@ -458,4 +459,47 @@
        return productionIdsToDelete.size();
    }
    @Override
    public Object randomScheduling(LoginUser loginUser) {
        List<OfficialInventory> officialInventories = officialInventoryMapper.selectList(null);
        if(CollectionUtils.isEmpty(officialInventories)){
            throw new BaseException("没有可调度的库存");
        }
        Random random = new Random();
        // 在官方库存中随机选择一个
        OfficialInventory officialInventory = officialInventories.get(random.nextInt(officialInventories.size()));
        List<ProductionInventory> productionInventories = new ArrayList<>();
        ProductionInventory productionInventory = new ProductionInventory();
        productionInventory.setOfficialId(officialInventory.getId());
        productionInventory.setCoalId(officialInventory.getCoalId());
        productionInventory.setInventoryQuantity(officialInventory.getInventoryQuantity().intValue());
        productionInventory.setUsedQuantity(random.nextInt(officialInventory.getInventoryQuantity().intValue()) + 1);
        productionInventories.add(productionInventory);
        List<Production> productions = new ArrayList<>();
        Production production = new Production();
        production.setCoalId(officialInventory.getCoalId());
        // 1-500随机生成
        production.setEnergyConsumptionCost(BigDecimal.valueOf(random.nextInt(500) + 1));
        production.setEquipmentDepreciation(BigDecimal.valueOf(random.nextInt(500) + 1));
        production.setLaborCost(BigDecimal.valueOf(random.nextInt(500) + 1));
        production.setProductionQuantity(BigDecimal.valueOf(random.nextInt(500) + 1));
        production.setPurchasePrice(BigDecimal.valueOf(random.nextInt(500) + 1));
        // 求和
        BigDecimal add = production.getEquipmentDepreciation()
                .add(production.getEnergyConsumptionCost())
                .add(production.getLaborCost())
                .add(production.getPurchasePrice())
                .add(production.getProductionQuantity());
        production.setTotalCost(add);
        production.setType(2);
        production.setProducerId(loginUser.getUserId());
        production.setProducer(loginUser.getUsername());
        productions.add(production);
        ProductionMasterDto productionMasterDto = new ProductionMasterDto();
        productionMasterDto.setProductionList(productions);
        productionMasterDto.setProductionInventoryList(productionInventories);
        return addOrEditPM(productionMasterDto);
    }
}