sfd
2025-05-12 6e9e02396e4c660a209e326fa015be6b71a568e1
增加更新排产区域数据接口
已修改3个文件
123 ■■■■ 文件已修改
aps-modules/aps-system/src/main/java/com/aps/system/controller/SysDictDataController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-system/src/main/java/com/aps/system/service/ISysDictDataService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-system/src/main/java/com/aps/system/service/impl/SysDictDataServiceImpl.java 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-system/src/main/java/com/aps/system/controller/SysDictDataController.java
@@ -97,6 +97,18 @@
    }
    /**
     * 更新排产区域字典
     */
    @RequiresPermissions("system:apsArea:update")
    @Log(title = "更新排产区域字典", businessType = BusinessType.UPDATE)
    @PostMapping("apsArea")
    public AjaxResult updateApsArea()
    {
        dictDataService.updateApsAreaDictData();
        return toAjax(true);
    }
    /**
     * 修改保存字典类型
     */
    @RequiresPermissions("system:dict:edit")
aps-modules/aps-system/src/main/java/com/aps/system/service/ISysDictDataService.java
@@ -2,6 +2,7 @@
import java.util.List;
import com.aps.system.api.domain.SysDictData;
import org.springframework.transaction.annotation.Transactional;
/**
 * 字典 业务层
@@ -42,6 +43,9 @@
     */
    public void deleteDictDataByIds(Long[] dictCodes);
    @Transactional(rollbackFor = Exception.class)
    void updateApsAreaDictData();
    /**
     * 新增保存字典数据信息
     * 
aps-modules/aps-system/src/main/java/com/aps/system/service/impl/SysDictDataServiceImpl.java
@@ -1,12 +1,18 @@
package com.aps.system.service.impl;
import java.util.List;
import java.util.Objects;
import com.aps.common.security.utils.SecurityUtils;
import com.aps.system.api.domain.SysDictType;
import com.aps.system.mapper.SysDictTypeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.aps.common.security.utils.DictUtils;
import com.aps.system.api.domain.SysDictData;
import com.aps.system.mapper.SysDictDataMapper;
import com.aps.system.service.ISysDictDataService;
import org.springframework.transaction.annotation.Transactional;
/**
 * 字典 业务层处理
@@ -14,10 +20,12 @@
 * @author ruoyi
 */
@Service
public class SysDictDataServiceImpl implements ISysDictDataService
{
public class SysDictDataServiceImpl implements ISysDictDataService {
    @Autowired
    private SysDictDataMapper dictDataMapper;
    @Autowired
    private SysDictTypeMapper dictTypeMapper;
    /**
     * 根据条件分页查询字典数据
@@ -26,8 +34,7 @@
     * @return 字典数据集合信息
     */
    @Override
    public List<SysDictData> selectDictDataList(SysDictData dictData)
    {
    public List<SysDictData> selectDictDataList(SysDictData dictData) {
        return dictDataMapper.selectDictDataList(dictData);
    }
@@ -39,8 +46,7 @@
     * @return 字典标签
     */
    @Override
    public String selectDictLabel(String dictType, String dictValue)
    {
    public String selectDictLabel(String dictType, String dictValue) {
        return dictDataMapper.selectDictLabel(dictType, dictValue);
    }
@@ -51,8 +57,7 @@
     * @return 字典数据
     */
    @Override
    public SysDictData selectDictDataById(Long dictCode)
    {
    public SysDictData selectDictDataById(Long dictCode) {
        return dictDataMapper.selectDictDataById(dictCode);
    }
@@ -62,15 +67,81 @@
     * @param dictCodes 需要删除的字典数据ID
     */
    @Override
    public void deleteDictDataByIds(Long[] dictCodes)
    {
        for (Long dictCode : dictCodes)
        {
    public void deleteDictDataByIds(Long[] dictCodes) {
        for (Long dictCode : dictCodes) {
            SysDictData data = selectDictDataById(dictCode);
            dictDataMapper.deleteDictDataById(dictCode);
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
            DictUtils.setDictCache(data.getDictType(), dictDatas);
        }
    }
    /**
     * 排产专业
     */
    private final static String DICT_TYPE_APS_DOMAIN = "aps_domain";
    /**
     * 排产工厂
     */
    private final static String DICT_TYPE_APS_FACTORY = "aps_factory";
    /**
     * 排产区域
     */
    private final static String DICT_TYPE_APS_AREA = "aps_area";
    private void checkDictArea() {
        SysDictType type = dictTypeMapper.selectDictTypeByType(DICT_TYPE_APS_AREA);
        if (type == null) {
            type = new SysDictType();
            type.setDictType(DICT_TYPE_APS_AREA);
            type.setDictName("排产区域");
            type.setStatus("0");
            type.setCreateBy(SecurityUtils.getUsername());
            int row = dictTypeMapper.insertDictType(type);
            if (row > 0) {
                DictUtils.setDictCache(type.getDictType(), null);
            }
        }
    }
    /**
     * 笛卡尔积: 根据工厂和专业字典生成区域字典数据
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void updateApsAreaDictData() {
        checkDictArea();
        List<SysDictData> facs = dictDataMapper.selectDictDataByType(DICT_TYPE_APS_FACTORY);
        List<SysDictData> domains = dictDataMapper.selectDictDataByType(DICT_TYPE_APS_DOMAIN);
        List<SysDictData> areas = dictDataMapper.selectDictDataByType(DICT_TYPE_APS_AREA);
        facs.forEach(fac -> {
            domains.forEach(domain -> {
                String dictValue = domain.getDictValue() + "-" + fac.getDictValue();
                SysDictData area = areas.stream().filter(a -> Objects.equals(a.getDictValue(), dictValue)).findFirst().orElse(null);
                if (area == null) {
                    area = new SysDictData();
                    area.setDictValue(dictValue);
                    area.setDictType(DICT_TYPE_APS_AREA);
                    area.setCreateBy(SecurityUtils.getUsername());
                    if (fac.getDictSort() != null && domain.getDictSort() != null) {
                        area.setDictSort(domain.getDictSort() * 1000 + fac.getDictSort());
                    }
                    area.setDictLabel(domain.getDictLabel() + "-" + fac.getDictLabel());
                    area.setStatus("0");
                    area.setCssClass(domain.getCssClass());
                    insertDictData(area);
                } else {
                    area.setUpdateBy(SecurityUtils.getUsername());
                    area.setDictLabel(domain.getDictLabel() + "-" + fac.getDictLabel());
                    if (fac.getDictSort() != null && domain.getDictSort() != null) {
                        area.setDictSort(domain.getDictSort() * 1000 + fac.getDictSort());
                    }
                    updateDictData(area);
                }
            });
        });
    }
    /**
@@ -80,11 +151,9 @@
     * @return 结果
     */
    @Override
    public int insertDictData(SysDictData data)
    {
    public int insertDictData(SysDictData data) {
        int row = dictDataMapper.insertDictData(data);
        if (row > 0)
        {
        if (row > 0) {
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
            DictUtils.setDictCache(data.getDictType(), dictDatas);
        }
@@ -98,11 +167,9 @@
     * @return 结果
     */
    @Override
    public int updateDictData(SysDictData data)
    {
    public int updateDictData(SysDictData data) {
        int row = dictDataMapper.updateDictData(data);
        if (row > 0)
        {
        if (row > 0) {
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
            DictUtils.setDictCache(data.getDictType(), dictDatas);
        }