package com.cabletech.business.assess.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.cabletech.baseinfo.business.entity.UserInfo;
import com.cabletech.business.assess.dao.AssessAppealFormDao;
import com.cabletech.business.assess.model.AssessAppealForm;
import com.cabletech.business.assess.model.AssessResultAdjusstment;
import com.cabletech.business.assess.service.AssessAppealFormService;
import com.cabletech.business.flowservice.util.ProMockPo;
import com.cabletech.business.flowservice.util.WorkFlowServiceClient;
import com.cabletech.business.workflow.common.model.CommonWorkflowResult;
import com.cabletech.common.base.BaseDao;
import com.cabletech.common.base.BaseServiceImpl;
import com.cabletech.common.util.DateUtil;
import com.cabletech.common.util.Page;
/**
* 考核管理-申诉记录
*
* @author wj 2012-08-02 创建
*
*/
@Service
@Transactional
public class AssessAppealFormServiceImpl extends BaseServiceImpl implements
AssessAppealFormService {
@Resource(name = "assessAppealFormDao")
private AssessAppealFormDao assessAppealFormDao;
// 工作流webservice服务
@Resource(name = "workFlowServiceClient")
private WorkFlowServiceClient workflowClient;
@Override
protected BaseDao getBaseDao() {
return assessAppealFormDao;
}
@Override
public void startFlow(AssessAppealForm appealForm, UserInfo userInfo) {
appealForm.setAppealTime(DateUtil.getNowDate());
appealForm.setComplainant(userInfo.getPersonId());
appealForm.setContractorId(userInfo.getOrgId());
assessAppealFormDao.save(appealForm);
ProMockPo po = new ProMockPo();
po.setProcessName(AssessAppealForm.FLOW_NAME_APPEALFORM);
po.setBzid(appealForm.getId());
po.setUserId(userInfo.getPersonId());
Map<String, Object> bzdate = new HashMap<String, Object>();
if ("00".equals(userInfo.getRegionId().substring(4))) {
bzdate.put("regiontype", AssessAppealForm.REGIONTYPE_CITY);
} else {
bzdate.put("regiontype", AssessAppealForm.REGIONTYPE_COUNTY);
}
po.setBzdate(bzdate);
po = workflowClient.startProcesssignalFirst(po);
}
@Override
public void doTask(AssessAppealForm appealForm, UserInfo userInfo) {
AssessAppealForm entity = (AssessAppealForm) assessAppealFormDao
.getSession().get(AssessAppealForm.class, appealForm.getId());
if (AssessAppealForm.APPROVE_CHECK.equals(appealForm.getStep())) {// 复核
entity.setCheckResult(appealForm.getTransition()); // 复核结果
entity.setReviewer(userInfo.getPersonId());// 复核人
entity.setCheckTime(DateUtil.getNowDate());// 复核时间
entity.setCheckOpinion(appealForm.getComment());// 复核意见
String[] causes = appealForm.getAdjusstmentCauses();
String[] scores = appealForm.getAdjusstmentScores();
double allScore = 0;
assessAppealFormDao.delAdjusstmentByAppealId(appealForm.getId());
for (int i = 0; i < causes.length; i++) {
AssessResultAdjusstment ment = new AssessResultAdjusstment();
ment.setAdjusstmentCause(causes[i]);
ment.setAdjusstmentScore(Float.valueOf(scores[i]));
ment.setAppealFormId(appealForm.getId());
allScore += ment.getAdjusstmentScore();
assessAppealFormDao.save(ment);
}
entity.setScore(allScore);
}
if (AssessAppealForm.APPROVE_CONFIRM.equals(appealForm.getStep())) {// 确认
entity.setConformResult(appealForm.getTransition());// 确认结果
entity.setOpinion(appealForm.getComment());// 确认意见
entity.setAuditingState(AssessAppealForm.FLOW_OVER_STATE);
}
ProMockPo po = new ProMockPo();
po.setUserId(userInfo.getPersonId());
po.setUserName(userInfo.getUserName());
po.setTaskId(appealForm.getTaskId());
po.setTransition(appealForm.getTransition());
po.setComment(appealForm.getComment());
po = workflowClient.doExcution(po);
assessAppealFormDao.save(entity);
}
@Override
public List<ProMockPo> queryApproveHisList(String bzId) {
List<ProMockPo> his = workflowClient.getTaskHisByBzid(bzId);
List<ProMockPo> list = new ArrayList<ProMockPo>();
for (ProMockPo po : his) {
ProMockPo temp = new ProMockPo();
if ("pass".equals(po.getTransition())) {
temp.setTransition("通过");
} else {
temp.setTransition("不通过");
}
temp.setTaskName(po.getTaskName());
temp.setUserName(po.getUserName());
temp.setEndTime(po.getEndTime());
temp.setDescription(po.getComment());
if (po.getTaskName().contains("审核")) {
list.add(temp);
}
}
return list;
}
@Override
public Page queryAppealFormList(Map<String, String> parameters, Page page) {
return assessAppealFormDao.queryAppealFormList(parameters, page);
}
@Override
public Page queryWaitHandledList(Map<String, String> parameters, Page page) {
return assessAppealFormDao.queryWaitHandledList(parameters, page);
}
@Override
public Map<String, Object> queryAppealForm(String id) {
return assessAppealFormDao.queryAppealForm(id);
}
@Override
public List<Map<String, Object>> queryAdjusstmentList(String appealFormId) {
return assessAppealFormDao.queryAdjusstmentList(appealFormId);
}
@Override
public List<Map<String, Object>> queryCanAppealResultList(
Map<String, String> parameter) {
return assessAppealFormDao.queryCanAppealResultList(parameter);
}
}