huangjiayang
2025-05-15 918eb3afde4886ab9d87e9f2fafbde1bf9e83587
【ADD】新增将钣金子单数据存到redis中定时任务
已修改8个文件
86 ■■■■■ 文件已修改
aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPlatePlanController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlatePlanMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlatePlanService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java
@@ -3,6 +3,7 @@
import com.aps.common.core.constant.SecurityConstants;
import com.aps.common.core.constant.ServiceNameConstants;
import com.aps.common.core.domain.R;
import com.aps.common.core.web.domain.AjaxResult;
import com.aps.system.api.factory.RemoteCoreFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -42,4 +43,12 @@
    @PostMapping("/materialStorageManagement/setStorageDataToRedis")
    R<Boolean> setStorageDataToRedis(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 刷新钣金子单数据到Redis
     * @param source
     * @return
     */
    @PostMapping("/apsPlatePlan/setPlateSubPlansToRedis")
    R<AjaxResult> setPlateSubPlansToRedis(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java
@@ -1,6 +1,7 @@
package com.aps.system.api.factory;
import com.aps.common.core.domain.R;
import com.aps.common.core.web.domain.AjaxResult;
import com.aps.system.api.RemoteCoreService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,6 +41,11 @@
            {
                return R.fail("库存数据存储到Redis中失败:" + throwable.getMessage());
            }
            @Override
            public R<AjaxResult> setPlateSubPlansToRedis(String source) {
                return R.fail("钣金子单计划数据存储到Redis中失败:" + throwable.getMessage());
            }
        };
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsPlatePlanController.java
@@ -214,4 +214,19 @@
        util.exportExcel(response, planListExport, "钣金冗余工单报表数据");
    }
    /**
     * 将钣金子单数据存到redis中
     * @return
     */
    @PostMapping("/setPlateSubPlansToRedis")
    public AjaxResult setPlateSubPlansToRedis() {
        try {
            apsPlatePlanService.setSubPlansToRedis();
            return success();
        } catch (Exception e) {
            e.printStackTrace();
            return error();
        }
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlatePlanMapper.java
@@ -1,7 +1,9 @@
package com.aps.core.mapper;
import com.alibaba.fastjson2.JSONObject;
import com.aps.core.domain.ApsPlatePlan;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
@@ -97,4 +99,10 @@
     * 更新子件工单未匹配数量和版本
     * */
    int updatePlanUnMatchQtyAndVersion(ApsPlatePlan plan);
    /**
     * 查询钣金子单数据
     * @return
     */
    List<JSONObject> selectApsSubPlatePlan();
}
aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlatePlanService.java
@@ -2,7 +2,6 @@
import com.aps.core.domain.ApsPlatePlan;
import com.aps.core.domain.ApsPlatePlanTemp;
import com.aps.core.domain.ApsPlateStandardRequire;
import java.util.Hashtable;
import java.util.List;
@@ -85,4 +84,6 @@
    ApsPlatePlan selectUnMatchPlateSubPlan(String plant, String itemNumber, Hashtable<String, List<ApsPlatePlan>> subPlans);
    // ApsPlatePlan selectUnMatchPlateSubPlan(ApsPlateStandardRequire require);
    boolean setSubPlansToRedis();
}
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java
@@ -1,6 +1,7 @@
package com.aps.core.service.impl;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson2.JSONObject;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.core.utils.uuid.IdUtils;
import com.aps.common.security.utils.DictUtils;
@@ -14,12 +15,12 @@
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Hashtable;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 钣金计划管理Service业务层处理
@@ -35,8 +36,12 @@
    @Autowired
    private ApsPartPlanTempMapper apsPartPlanTempMapper;
    @Autowired
    private ApsPlatePlanTempMapper apsPlatePlanTempMapper;
    @Autowired
    public RedisTemplate redisTemplate;
    /**
     * 查询钣金计划管理
@@ -211,4 +216,28 @@
           }
       }
    }
    @Override
    public boolean setSubPlansToRedis() {
        try {
            Set<String> keys = redisTemplate.keys("PLATE_SUB_PLAN:*");
            if (keys != null && !keys.isEmpty()) {
                redisTemplate.delete(keys);
            }
            List<JSONObject> subPlans = apsPlatePlanMapper.selectApsSubPlatePlan();
//            ApsPlatePlan a = JSONObject.parseObject(String.valueOf(subPlans.get(0)), ApsPlatePlan.class);
            Map<String, List<JSONObject>> groupByItemNumber = subPlans.stream().collect(Collectors.groupingBy(obj -> obj.getString("itemNumber")));
            Map<String, Object> bulkData = new HashMap<>();
            for (Map.Entry<String, List<JSONObject>> entry : groupByItemNumber.entrySet()) {
                String key = entry.getKey();
                List<JSONObject> value = entry.getValue();
                bulkData.put("PLATE_SUB_PLAN:"+key, value);
            }
            redisTemplate.opsForValue().multiSet(bulkData);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlatePlanMapper.xml
@@ -334,4 +334,8 @@
        set unmatched_quantity=#{unmatchedQuantity},version=#{version},update_time=now()
        where id=#{id}
    </update>
    <select id="selectApsSubPlatePlan" resultType="com.alibaba.fastjson2.JSONObject">
        SELECT id,item_number as "itemNumber",document_number as "documentNumber",production_quantity as "unmatchedQuantity" FROM aps_plate_plan WHERE item_number in (SELECT item_number FROM aps_plate_plan WHERE professional_affiliation='sub'  GROUP BY item_number) order by item_number
    </select>
</mapper>
aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java
@@ -191,5 +191,11 @@
        apsMaterialManagementJobService.syncApsMaterialDataJob(pageIndex, pageSize, orgCode, itemCodeList);
    }
    /**
     * 刷新钣金子单数据到Redis
     */
    public void setPlateSubPlansToRedis(){
        remoteCoreService.setPlateSubPlansToRedis(SecurityConstants.INNER);
    }
}