package com.cabletech.business.wplan.plan.service.impl;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.cabletech.baseinfo.business.entity.UserInfo;
import com.cabletech.business.base.condition.QueryParameter;
import com.cabletech.business.base.model.SmParameter;
import com.cabletech.business.base.service.UserInfoService;
import com.cabletech.business.flowservice.util.ProMockPo;
import com.cabletech.business.resource.dao.ResourceInfoDao;
import com.cabletech.business.wplan.plan.dao.PatrolinfoDao;
import com.cabletech.business.wplan.plan.model.PatrolApprove;
import com.cabletech.business.wplan.plan.model.PatrolResource;
import com.cabletech.business.wplan.plan.model.PatrolTemplate;
import com.cabletech.business.wplan.plan.model.Patrolinfo;
import com.cabletech.business.wplan.plan.service.PatrolApproveService;
import com.cabletech.business.wplan.plan.service.PatrolResourceService;
import com.cabletech.business.wplan.plan.service.PatrolTemplateService;
import com.cabletech.business.wplan.plan.service.PatrolWorkflowService;
import com.cabletech.business.wplan.plan.service.PatrolinfoService;
import com.cabletech.common.base.BaseDao;
import com.cabletech.common.base.BaseServiceImpl;
import com.cabletech.common.base.SysConstant;
import com.cabletech.common.util.Page;
/**
* 巡检计划服务
* @author zhaobi
* @author 杨隽 2012-07-25 在save()方法中添加维护资源数量的保存
*/
@Service
@Transactional
public class PatrolinfoServiceImpl extends BaseServiceImpl<Patrolinfo, String>
implements PatrolinfoService {
/**
* 资源Dao
*/
@Resource(name="resourceInfoDao")
private ResourceInfoDao resourceDao;
/**
* 巡检计划信息DAO
*/
@Resource(name = "patrolinfoDao")
private PatrolinfoDao patrolinfoDao;
/**
* 计划资源服务
*/
@Resource(name = "patrolResourceServiceImpl")
private PatrolResourceService patrolResourceService;
/**
* 计划模板服务
*/
@Resource(name = "patrolTemplateServiceImpl")
private PatrolTemplateService patrolTemplateService;
/**
* 计划审批服务
*/
@Resource(name = "patrolApproveServiceImpl")
private PatrolApproveService patrolApproveService;
/**
* 巡检工作流服务
*/
@Resource(name = "patrolWorkflowService")
private PatrolWorkflowService patrolWorkflowService;
// 用户信息业务处理
@Resource(name = "userInfoServiceImpl")
private UserInfoService userInfoService;
@Override
@Transactional
public void delete(String planid) {
// TODO Auto-generated method stub
patrolinfoDao.delete(planid);
patrolResourceService.deleteResource(planid);
patrolTemplateService.deleteTemplate(planid);
patrolApproveService.deleteApprove(planid);
}
@Override
@Transactional(readOnly=true)
public Map<String,Object> view(String id) {
// TODO Auto-generated method stub
return patrolinfoDao.queryPatrolinfoByID(id);
}
/**
* 保存
* @param patrolinfo
*/
@Transactional
public void save(Patrolinfo patrolinfo){
patrolinfo.setMaintainResourcesNum(resourceDao
.getResourceNum(patrolinfo.getPatrolgroupid(),patrolinfo.getBusinesstype()));
if (SysConstant.FORM_IS_SUBMITED.equals(patrolinfo.getIssubmited())) {
patrolinfo.setPlanstate(SysConstant.WAIT_AUDITING_STATE);
patrolinfoDao.save(patrolinfo);
SmParameter parameter = getSmParameter(patrolinfo);
doWorkflow(patrolinfo,parameter);
} else {
patrolinfo.setPlanstate(SysConstant.WAIT_SUBMIT_STATE);
patrolinfoDao.save(patrolinfo);
}
//保存计划模板关系
savetemplate(patrolinfo);
//保存计划资源关系
saveresource(patrolinfo);
//保存计划审批人关系
saveapprove(patrolinfo);
}
@Override
protected BaseDao<Patrolinfo, String> getBaseDao() {
// TODO Auto-generated method stub
return patrolinfoDao;
}
/* (non-Javadoc)
* @see com.cabletech.business.wplan.plan.service.PatrolinfoService#savetemplate(com.cabletech.business.wplan.plan.model.Patrolinfo)
*/
@Override
@Transactional
public void savetemplate(Patrolinfo patrolinfo) {
PatrolTemplate patrolTemplate=new PatrolTemplate();
patrolTemplate.setPlanid(patrolinfo.getId());
patrolTemplate.setTemplateid(patrolinfo.getPlantemplate());
patrolTemplateService.save(patrolTemplate);
}
/* (non-Javadoc)
* @see com.cabletech.business.wplan.plan.service.PatrolinfoService#saveresource(com.cabletech.business.wplan.plan.model.Patrolinfo)
*/
@Override
@Transactional
public void saveresource(Patrolinfo patrolinfo) {
//删除计划巡检资源
patrolResourceService.deleteResource(patrolinfo.getId());
if (StringUtils.isNotBlank(patrolinfo.getResourceids())
&& StringUtils.isNotBlank(patrolinfo.getResourcetypes())) {
String[] rsIds = patrolinfo.getResourceids().split(",");
String[] rsTypes = patrolinfo.getResourcetypes().split(",");
for (int i = 0; i < rsIds.length; i++) {
PatrolResource patrolresource=new PatrolResource();
patrolresource.setPlanid(patrolinfo.getId());
patrolresource.setResourceid(rsIds[i]);
patrolresource.setResourcetype(rsTypes[i]);
patrolResourceService.save(patrolresource);
}
}
}
/* (non-Javadoc)
* @see com.cabletech.business.wplan.plan.service.PatrolinfoService#saveapprove(com.cabletech.business.wplan.plan.model.Patrolinfo)
*/
@Override
public void saveapprove(Patrolinfo patrolinfo) {
//删除巡检审批人信息
patrolApproveService.deleteApprove(patrolinfo.getId());
PatrolApprove patrolapprove=new PatrolApprove();
patrolapprove.setApprover(patrolinfo.getApprover());
patrolapprove.setPlanid(patrolinfo.getId());
patrolapprove.setResult(patrolinfo.getApprovername());
patrolApproveService.save(patrolapprove);
}
/**
* 获取发送短信的传递参数
* @param patrolinfo
*/
private SmParameter getSmParameter(Patrolinfo patrolinfo) {
// TODO Auto-generated method stub
String simId = getUserPhone(patrolinfo.getApprover());
String[] contentParameters = new String[] {patrolinfo.getPlanname() };
SmParameter parameter = SmParameter.getInstance("wplan",
"submit_wplan", simId, contentParameters);
return parameter;
}
/**
* 根据用户编号获取用户联系电话
*
* @param userId
* @return
*/
private String getUserPhone(String userId) {
// TODO Auto-generated method stub
String phone = "";
UserInfo user = userInfoService.getUserInfoByPersonId(userId);
if (user != null) {
phone = user.getPhone();
}
return phone;
}
/**
* 执行计划工作流
* @param smParameter SmParameter 短信发送参数
* @param patrolinfo Patrolinfo 巡检计划信息
*/
@Transactional
private void doWorkflow(Patrolinfo patrolinfo, SmParameter smParameter) {
ProMockPo taskPi = new ProMockPo();
taskPi.setBzid(patrolinfo.getId());
taskPi.setUserId(patrolinfo.getCreater());
taskPi.setUserName(patrolinfo.getCreatername());
taskPi.setDealUsers(patrolinfo.getApprover());
taskPi.setDealUsersName(patrolinfo.getApprovername());
patrolWorkflowService.sendTaskTwoSteps(taskPi,smParameter);
}
@SuppressWarnings("rawtypes")
@Override
@Transactional(readOnly=true)
public Page listByPage(Patrolinfo patrolinfo,Page page) {
return patrolinfoDao.queryPatrolinfo(patrolinfo, page);
}
/**
* 查询待办工作列表
* @param patrolinfo
* @param page
* @param user
*/
@SuppressWarnings("rawtypes")
@Transactional(readOnly=true)
public Page queryWaithHandledList(Patrolinfo patrolinfo,Page page,UserInfo user){
QueryParameter parameter=new QueryParameter();
parameter.setAlias("jbpm");
parameter.setUser(user);
return patrolinfoDao.queryWaithHandledList(patrolinfo,page,parameter);
}
}