package com.sobey.cmop.mvc.service.resource;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.sobey.cmop.mvc.comm.BaseSevcie;
import com.sobey.cmop.mvc.constant.IpPoolConstant;
import com.sobey.cmop.mvc.dao.ChangeHistoryDao;
import com.sobey.cmop.mvc.dao.ChangeItemHistoryDao;
import com.sobey.cmop.mvc.entity.Audit;
import com.sobey.cmop.mvc.entity.Change;
import com.sobey.cmop.mvc.entity.ChangeHistory;
import com.sobey.cmop.mvc.entity.ChangeItem;
import com.sobey.cmop.mvc.entity.ChangeItemHistory;
import com.sobey.cmop.mvc.entity.Resources;
/**
* 服务变更历史 ChangeHistory 和 变更历史明细 ChangeItemHistory 相关的管理类.
*
* @author liukai
*/
@Service
@Transactional
public class ChangeHistoryService extends BaseSevcie {
private static Logger logger = LoggerFactory.getLogger(ChangeHistoryService.class);
@Resource
private ChangeHistoryDao changeHistoryDao;
@Resource
private ChangeItemHistoryDao changeItemHistoryDao;
// === 服务变更历史 ChangeHistory ===//
/**
* 新增,修改服务变更历史 ChangeHistory
*
* @param changeHistory
* @return
*/
public ChangeHistory saveOrUpdate(ChangeHistory changeHistory) {
return changeHistoryDao.save(changeHistory);
}
/**
* 根据审批记录获得该记录下的变更历史.
*
* @param auditId
* @return
*/
@Transactional(readOnly = true)
public List<ChangeHistory> getChangeHistoryListByAudit(Audit audit) {
return changeHistoryDao.findByAudit(audit);
}
// === 变更历史明细 ChangeItemHistory ===//
/**
* 新增,修改变更历史明细 ChangeItemHistory
*
* @param changeItemHistory
* @return
*/
public ChangeItemHistory saveOrUpdate(ChangeItemHistory changeItemHistory) {
return changeItemHistoryDao.save(changeItemHistory);
}
/**
* 拷贝变更详情记录.(用于在变更审批页面显示.)
*
* @param resourcesList
* 变更资源列表
* @param audit
* 审批记录
*/
public void copyHistory(List<Resources> resourcesList, Audit audit) {
for (Resources resources : resourcesList) {
List<Change> changes = comm.changeServcie.getChangeListByResourcesId(resources.getId());
String resourcesInfo = resources.getServiceIdentifier();
// 只有当ip不为0.0.0.0时才插入IP(即资源本身有IP时,像DNS,ES3这些没有IP的资源将不显示ip)
if (!IpPoolConstant.DEFAULT_IPADDRESS.equals(resources.getIpAddress())) {
resourcesInfo += "(" + resources.getIpAddress() + ")";
}
for (Change change : changes) {
ChangeHistory changeHistory = new ChangeHistory();
changeHistory.setAudit(audit);
changeHistory.setChangeTime(new Date());
changeHistory.setDescription(change.getDescription());
changeHistory.setSubResourcesId(change.getSubResourcesId());
changeHistory.setResourcesInfo(resourcesInfo);
comm.changeHistoryService.saveOrUpdate(changeHistory);
List<ChangeItem> changeItems = comm.changeServcie.getChangeItemListByChangeId(change.getId());
for (ChangeItem changeItem : changeItems) {
ChangeItemHistory changeItemHistory = new ChangeItemHistory();
changeItemHistory.setChangeHistory(changeHistory);
changeItemHistory.setFieldName(changeItem.getFieldName());
changeItemHistory.setOldValue(changeItem.getOldValue());
changeItemHistory.setOldString(changeItem.getOldString());
changeItemHistory.setNewValue(changeItem.getNewValue());
changeItemHistory.setNewString(changeItem.getNewString());
comm.changeHistoryService.saveOrUpdate(changeItemHistory);
}
}
}
}
}