StatusServiceImpl.java

package com.mycim.server.status.service;

import com.alipay.sofa.runtime.api.annotation.SofaService;
import com.alipay.sofa.runtime.api.annotation.SofaServiceBinding;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.server.ems.manager.EquipmentInqManager;
import com.mycim.server.ems.manager.LogEventReqManager;
import com.mycim.server.status.manager.StatusManager;
import com.mycim.valueobject.consts.EventName;
import com.mycim.valueobject.ems.Entity;
import com.mycim.valueobject.ems.EntityStatus;
import com.mycim.valueobject.ems.Equipment;
import com.mycim.valueobject.ems.Event;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

@Service
@SofaService(interfaceType = StatusService.class, bindings = {@SofaServiceBinding(bindingType = "bolt")})
public class StatusServiceImpl implements StatusService {

    @Autowired
    private StatusManager statusManager;

    @Autowired
    private LogEventReqManager logEventReqManager;

    @Autowired
    private EquipmentInqManager equipmentInqManager;

    @Override
    public long updateEntityStatusByEntityId(List<EntityStatus> entityStatuss, String user, Long userRrn, Event event,
                                             String comments, String comments1, String comments2, String statusEndTime,
                                             long entityRrn) {
        HashMap<String, Object> map = new HashMap<>();
        map.put("event", event);
        map.put("user", user);
        map.put("comments", comments);
        map.put("comments1", comments1);
        map.put("comments2", comments2);
        map.put("statusEndTime", DateUtils.getNowTime());
        map.put("entityrrn", entityRrn);
        statusManager.updateParentEntityByChamberAllInSameState(entityStatuss, map,
                                                                Arrays.asList(EventName.DOWN, EventName.WAIT_ENG));
        long transRrn = statusManager
                .updateEntityStatusByEntityId(entityStatuss, user, userRrn, event, comments, comments1, comments2,
                                              statusEndTime, entityRrn);

        Equipment equipment = equipmentInqManager.getEquipment(entityRrn);
        if (equipment != null) {
            Long parentEquipmentRrn = equipment.getParentEntityRrn();
            if (parentEquipmentRrn != null) {
                logEventReqManager.synChamberEqptStatus(parentEquipmentRrn);
            }
        }

        return transRrn;
    }

    @Override
    public void updateEntityStatus(List<EntityStatus> entityStatuss, HashMap map) {
        statusManager.updateEntityStatus(entityStatuss, map);
    }

    @Override
    public void updateEntityStatusOnly(Collection entityStatuss, HashMap<String, Object> map) {
        statusManager.updateEntityStatusOnly(entityStatuss, map);
    }

    /**
     * 修改设备状态,并且联动修改关联的父子设备
     */
    @Override
    public void updatEntityStatus(List<EntityStatus> entityStatuss, String user, Event event, String comments,
                                  String comments1, String comments2, String statusEndTime, Entity entity) {
        if (checkEnableLogEvent(event.getInstanceRrn(), entity.getInstanceRrn())) {
            HashMap map = new HashMap();
            map.put("event", event);
            map.put("user", user);
            map.put("comments", comments);
            map.put("comments1", comments1);
            map.put("comments2", comments2);
            map.put("statusEndTime", statusEndTime);
            map.put("entityrrn", new Long(entity.getInstanceRrn()));
            statusManager.updateEntityStatus(entityStatuss, map);
            // update parent Entity and Child Entity status
            statusManager.updateParentOrChildEntityStatus(map, entity, event, entityStatuss);
        }
    }

    @Override
    public void updateAllEntityStatus(Collection entityStatuss, Event event, long entityRrn, long transRrn) {
        //未找到调用方,暂不修改
        statusManager.updateAllEntityStatus(entityStatuss, event, entityRrn, transRrn);
    }

    @Override
    public void logEventImpl(long entityRrn, String eventId, long eventRrn, String userId, String comments,
                             String comments1, String comments2) {
        statusManager.logEventImpl(entityRrn, eventId, eventRrn, userId, comments, comments1, comments2);
    }

    @Override
    public void changePcdStatusByLogEvent(Long facilityRrn, String user, String pcdId, String pcdType, String eventId,
                                          String comments, String targetStatus, String currentStatus,
                                          String cleanEqptId) {
        statusManager.changePcdStatusByLogEvent(facilityRrn, user, pcdId, pcdType, eventId, comments, targetStatus,
                                                currentStatus, cleanEqptId);
    }


    @Override
    public boolean checkEnableLogEvent(long eventRrn, long entityRrn) {
        return statusManager.checkEnableLogEvent(eventRrn, entityRrn);
    }

    @Override
    public void updatePcdStatus(Long carrierRrn, Long podRrn, Long doorRrn, String status, Long transRrn,
                                String comments) {
        statusManager.updatePcdStatus(carrierRrn, podRrn, doorRrn, status, transRrn, comments);
    }

    @Override
    public void logEventImpl(long entityRrn, String eventId, long eventRrn, String userId, Map maph) {
        statusManager.logEventImpl(entityRrn, eventId, eventRrn, userId, maph);
    }

}