yangys
2024-11-21 fe82f1f9a9be911d1420fe3b018ea85dd5fff1a3
collect/src/main/java/com/qianwen/mdc/collect/cache/WorkstationCache.java
@@ -8,6 +8,7 @@
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,6 +29,7 @@
@Component
public class WorkstationCache {
   public static final String COLLECT_WORKSTATION = "collect:workstation";
    private static final String WORKSTATION_ID = "workstation:id:";
    private static final String CALENDAR_DATE = ":calendar:date:";
    private static final String WORKSTATION_ALL = "workstation:all";
@@ -45,8 +47,8 @@
    private EmployeeOnOffWorkMapper employeeOnOffWorkMapper;
    
    
    public Map<Long, WorkstationDTO> getWorkstations() {
        String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ALL);
    public Map<String, WorkstationDTO> getWorkstations() {
        String redisKey = COLLECT_WORKSTATION.concat("::").concat(WORKSTATION_ALL);
        /*Map<String, WorkstationDTO> map = bladeRedis.hGetAll(redisKey);
       
        
@@ -55,7 +57,7 @@
        }
        return map;
        */
        Map<Long, WorkstationDTO> map = convertMap(redisUtil.hmget(redisKey));
        Map<String, WorkstationDTO> map = convertMap(redisUtil.hmget(redisKey));
       
        if (ObjectUtil.isEmpty(map)) {
            map = setWorkstations();
@@ -65,28 +67,37 @@
        
    }
    
    private Map<Long, WorkstationDTO> setWorkstations() {
    private Map<String, WorkstationDTO> setWorkstations() {
        List<Workstation> list = workstationService.list();
        String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ALL);
        String redisKey = COLLECT_WORKSTATION.concat("::").concat(WORKSTATION_ALL);
        /*
        list.forEach(ws -> {
           /*
            WorkStationDTO workStationDTO = WorkstationConvert.INSTANCE.convertDTO(workStation);
            bladeRedis.hSet(redisKey, workStation.getId(), workStationDTO);
            */
            //WorkStationDTO workStationDTO = WorkstationConvert.INSTANCE.convertDTO(workStation);
            //bladeRedis.hSet(redisKey, workStation.getId(), workStationDTO);
           WorkstationDTO dto = new WorkstationDTO();
           dto.setCalendarCode(ws.getCalendarCode());
           dto.setCode(ws.getCode());
           dto.setId(ws.getId());
           dto.setName(ws.getName());
            redisUtil.hset(redisKey, ws.getId(), dto);
        });
        //bladeRedis.expire(redisKey, 259200L);
        redisUtil.expire(redisKey, 259200L);
        //return bladeRedis.hGetAll(redisKey);
        });*/
        //Map<String, String> map = str.collect(Collectors.toMap(p -> p[0], p -> p[1]));
        Map<String,WorkstationDTO> mp = list.stream().collect(Collectors.toMap(ws -> String.valueOf(ws.getId()), ws->{
           WorkstationDTO dto = new WorkstationDTO();
           dto.setCalendarCode(ws.getCalendarCode());
           dto.setCode(ws.getCode());
           dto.setId(ws.getId());
           dto.setName(ws.getName());
           return dto;
        }));
        redisUtil.hmset(redisKey, mp);
        
        return convertMap(redisUtil.hmget(redisKey));
        redisUtil.expire(redisKey, 259200L);
        return (Map<String, WorkstationDTO>)redisUtil.hmget(redisKey);
    }
    
    static <K,V> Map<K,V> convertMap(Map<?,?> map){
@@ -96,12 +107,7 @@
       }
       return result;
    }
    /*
    public static Boolean clearWorkStationCache() {
        String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ALL);
        return bladeRedis.del(redisKey);
    }
    */
    /**
     * 获取指定日期的日历代码
     * @param workstationId
@@ -109,7 +115,7 @@
     * @return
     */
    public String getWorkstationCalendarCodeForDate(Long workstationId, String date) {
        String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ID).concat(workstationId.toString().concat(CALENDAR_DATE)).concat(date);
        String redisKey = COLLECT_WORKSTATION.concat("::").concat(WORKSTATION_ID).concat(workstationId.toString().concat(CALENDAR_DATE)).concat(date);
        //String calendarCode = (String) bladeRedis.get(redisKey);
        String calendarCode = (String) redisUtil.get(redisKey);
        if (ObjectUtil.isEmpty(calendarCode)) {
@@ -124,15 +130,15 @@
        return calendarCode;
    }
   
    public GlobalWcsOfRps getWorkstationWcsSetting(Long workstationId, String code) {
        String redisKey = "posting:workstation".concat("::").concat(WORKSTATION_ID).concat(workstationId.toString()
    public GlobalWcsOfRps getWorkstationWcsSetting(Long workstationId, String deviceStatusCode) {
        String redisKey = COLLECT_WORKSTATION.concat("::").concat(WORKSTATION_ID).concat(workstationId.toString()
            .concat(WCS_SETTING));
        
        //GlobalWcsOfRps wcsSetting = (GlobalWcsOfRps)redisUtil.hGet(redisKey, code);
        GlobalWcsOfRps wcsSetting = (GlobalWcsOfRps)redisUtil.hget(redisKey, code);
        GlobalWcsOfRps wcsSetting = (GlobalWcsOfRps)redisUtil.hget(redisKey, deviceStatusCode);
        if (wcsSetting == null) {
          wcsSetting = globalWcsOfRpsMapper.selectOne(Wrappers.<GlobalWcsOfRps>lambdaQuery()
              .eq(GlobalWcsOfRps::getCode, code)
              .eq(GlobalWcsOfRps::getCode, deviceStatusCode)
              .isNull(GlobalWcsOfRps::getPrecondition));
          if(wcsSetting == null) {
             wcsSetting = new GlobalWcsOfRps();
@@ -142,7 +148,7 @@
          //wcsSetting = Func.isNotEmpty(wcsSetting) ? wcsSetting : GlobalWcsOfRps.builder().rps(0).isPlan(0).build();
          //bladeRedis.hSet(redisKey, code, wcsSetting);
          //bladeRedis.expire(redisKey, Duration.ofDays(1L));
          redisUtil.hset(redisKey, code, wcsSetting, Duration.ofDays(1L).getSeconds());
          redisUtil.hset(redisKey, deviceStatusCode, wcsSetting, Duration.ofDays(1L).getSeconds());
        } 
        return wcsSetting;
      }
@@ -155,7 +161,7 @@
     */
   public Long getBelongToEmployeeForWorkstation(Long workstationId, Date timePoint) {
      Long employeeId = null;
      String redisKey = "posting:workstation".concat("::").concat("workstation:id:")
      String redisKey = COLLECT_WORKSTATION.concat("::").concat("workstation:id:")
            .concat(workstationId.toString().concat(EMPLOYEE));
      // Set<EmployeeOnOffWork> employeeOnOffWorks = bladeRedis.sMembers(redisKey);