package com.ycsoft.sysmanager.component.config; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import com.ycsoft.beans.core.bill.BTaskInfo; import com.ycsoft.beans.core.bill.BTaskSchedule; import com.ycsoft.beans.core.bill.BTaskScheduleContent; import com.ycsoft.beans.core.bill.BTaskScheduleContentDto; import com.ycsoft.beans.core.bill.BTaskScheduleList; import com.ycsoft.beans.core.bill.BTaskScheduleListDto; import com.ycsoft.beans.system.SCounty; import com.ycsoft.beans.system.SDept; import com.ycsoft.beans.system.SItemvalue; import com.ycsoft.beans.task.WLog; import com.ycsoft.beans.task.WRevisitInfo; import com.ycsoft.beans.task.WWork; import com.ycsoft.business.commons.pojo.BusiParameter; import com.ycsoft.business.dao.core.bill.BTaskInfoDao; import com.ycsoft.business.dao.core.bill.BTaskScheduleContentDao; import com.ycsoft.business.dao.core.bill.BTaskScheduleDao; import com.ycsoft.business.dao.core.bill.BTaskScheduleListDao; import com.ycsoft.business.dao.system.SCountyDao; import com.ycsoft.business.dao.system.SDeptDao; import com.ycsoft.business.dao.task.WRevisitInfoDao; import com.ycsoft.business.dao.task.WTaskServDao; import com.ycsoft.business.dao.task.WWorkDao; import com.ycsoft.business.dto.config.TaskQueryConditionDto; import com.ycsoft.business.dto.config.TaskQueryWorkDto; import com.ycsoft.business.service.externalImpl.ITaskServiceExternal; import com.ycsoft.commons.abstracts.BaseComponent; import com.ycsoft.commons.constants.DataRight; import com.ycsoft.commons.constants.StatusConstants; import com.ycsoft.commons.constants.SystemConstants; import com.ycsoft.commons.exception.ComponentException; import com.ycsoft.commons.helper.CollectionHelper; import com.ycsoft.commons.helper.StringHelper; import com.ycsoft.daos.core.Pager; import com.ycsoft.sysmanager.web.commons.interceptor.WebOptr; @Component public class TaskComponent extends BaseComponent { private BTaskScheduleDao bTaskScheduleDao; private BTaskScheduleContentDao bTaskScheduleContentDao; private BTaskScheduleListDao bTaskScheduleListDao; private BTaskInfoDao bTaskInfoDao; private WTaskServDao wTaskServDao; private SCountyDao sCountyDao; private WWorkDao wWorkDao; private WRevisitInfoDao wRevisitInfoDao; private ITaskServiceExternal taskService; private SDeptDao sDeptDao; public void deleteThreeTask(String taskCode,String countyId) throws Exception { bTaskScheduleDao.deleteTaskSchedule(taskCode, countyId); bTaskScheduleListDao.deleteTaskScheduleList(taskCode, countyId); } public void deleteStopTask(String taskCode,String servType,String countyId) throws Exception { bTaskScheduleDao.deleteTaskSchedule(taskCode, countyId); bTaskScheduleContentDao.deleteTaskContent(taskCode, countyId, servType); } /** * 修改 催缴、巡检、退订 状态 * @param status * @param taskCode * @param countyId * @throws Exception */ public void updateThreeTaskStatus(String status, String taskCode, String isBase, String countyId) throws Exception { bTaskScheduleListDao.updateThreeTaskStatus(status, taskCode, isBase, countyId); } /** * 修改 停机 状态 * @param status * @param taskCode * @param servType * @param countyId * @throws Exception */ public void updateStopTaskStatus(String status, String taskCode, String servType, String countyId) throws Exception { bTaskScheduleContentDao.updateStopTaskStatus(status, taskCode, servType, countyId); } /** * 保存 催缴、巡检、退订 * @param status * @param taskCode * @param countyId * @throws Exception */ public void saveThreeTask(List<BTaskScheduleListDto> list,String optrId) throws Exception { //查看list 内容 Map<String, List<BTaskScheduleListDto>> map = CollectionHelper.converToMap(list, new String[] { "task_code", "county_id" }); BTaskScheduleListDto bstDto = list.get(0); //退订不添加执行计划数据 if( !bstDto.getTask_code().equals(SystemConstants.TASK_TD) ){ for(String key : map.keySet()){ List<BTaskScheduleListDto> tsList = map.get(key); BTaskScheduleListDto tsc = tsList.get(0); BTaskSchedule ts = new BTaskSchedule(); BeanUtils.copyProperties(tsc, ts); ts.setOptr_id(optrId); bTaskScheduleDao.saveTaskSchedule(ts); //查看 tsList for(BTaskScheduleListDto dto : tsList){ if(StringHelper.isNotEmpty(dto.getTask_info())){ BTaskInfo taskInfo = new BTaskInfo(); BeanUtils.copyProperties(dto, taskInfo); bTaskInfoDao.saveOrUpdateTaskInfo(taskInfo); } } } } for(BTaskScheduleListDto dto : list){ BTaskScheduleList bsl = new BTaskScheduleList(); BeanUtils.copyProperties(dto, bsl); bTaskScheduleListDao.saveTaskScheduleList(bsl); } } /** * 停机配置 * @param list * @param optr * @throws Exception */ public void saveStopTask(List<BTaskScheduleContentDto> list,String optrId) throws Exception { Map<String, List<BTaskScheduleContentDto>> map = CollectionHelper.converToMap(list, new String[] { "task_code", "county_id" }); //查看list for(String key : map.keySet()){ List<BTaskScheduleContentDto> tscList = map.get(key); BTaskScheduleContentDto tsc = tscList.get(0); BTaskSchedule ts = new BTaskSchedule(); BeanUtils.copyProperties(tsc, ts); ts.setOptr_id(optrId); bTaskScheduleDao.saveTaskSchedule(ts); } Map<String, List<BTaskScheduleContentDto>> servMap = CollectionHelper.converToMap(list, new String[] { "task_code", "county_id", "serv_type" }); //查看servMap for(String key : servMap.keySet()){ bTaskScheduleContentDao.deleteTaskContent(SystemConstants.TASK_TJ, key.substring(key.indexOf("_")+1, key.lastIndexOf("_")), key.substring(key.lastIndexOf("_")+1, key.length())); } for(BTaskScheduleContentDto dto : list){ BTaskScheduleContent content = new BTaskScheduleContent(); BeanUtils.copyProperties(dto, content); bTaskScheduleContentDao.saveTaskScheduleContent(content); } } /** * 催缴、退订、巡检 * @param countyId * @return * @throws Exception */ public Map queryTaskSachedule(String countyId) throws Exception { List<BTaskInfo> taskInfoList = bTaskInfoDao.queryTaskInfoByCountyId(countyId); List<BTaskScheduleListDto> tasklist = bTaskScheduleDao.queryTaskSchedule(countyId); Map<String,List<BTaskScheduleListDto>> map = new HashMap<String,List<BTaskScheduleListDto>>(); if(tasklist.size() > 0){ map = CollectionHelper.converToMap(tasklist, "task_code"); List<BTaskScheduleListDto> cjList = map.get(SystemConstants.TASK_CJ);//催缴集合 for(BTaskScheduleListDto tslDto : cjList){ for(BTaskInfo taskInfo : taskInfoList){ if(tslDto.getCounty_id().equals(taskInfo.getCounty_id())){ tslDto.setTask_info(taskInfo.getTask_info()); tslDto.setMail_title(taskInfo.getMail_title()); } } } } return map; } /** * 停机 * @param countyId * @return * @throws Exception */ public List<BTaskScheduleContentDto> queryTjTaskSchedule(String countyId) throws Exception { return bTaskScheduleDao.queryTjTaskSchedule(countyId); } public List<SCounty> queryCounty(String countyId) throws Exception { List<SCounty> list = new ArrayList<SCounty>(); if(countyId.equals(SystemConstants.COUNTY_ALL)){ list = sCountyDao.findAll(); }else{ list.add(sCountyDao.getCountyById(countyId).get(0)); } for(SCounty county : list){ if(county.getCounty_id().equals(SystemConstants.COUNTY_ALL)){ list.remove(county); break; } } return list; } /** * 多功能查询工单 * @param cond * @return * @throws Exception */ public Pager<TaskQueryWorkDto> queryWaitAcceptTask(TaskQueryConditionDto cond) throws Exception { String dataRight = this.queryDataRightCon(); return wWorkDao.queryTasks(cond,dataRight, WebOptr.getOptr().getCounty_id()); } /** * 查询施工部门 * @return * @throws Exception */ public List<?> queryInstallerDept() throws Exception{ return wWorkDao.queryInstallerDept(); } /** * 查询安装人员 * @return * @throws Exception */ public List<SItemvalue> queryInstaller(String team)throws Exception{ return wWorkDao.queryInstaller(team); } /** * 查询打印内容,并修改工单状态为施工中 * @param task_types * @param cust_ids * @param task_ids * @return * @throws Exception */ public List<Map<String, Object>> queryPrintContent(String[] task_types, String[] cust_ids, String[] task_ids) throws Exception{ BusiParameter p = new BusiParameter(); p.setOptr(WebOptr.getOptr()); List<Map<String,Object>> list = taskService.queryPrintContent(p, task_types, cust_ids, task_ids); return list; } /** * 修改预约时间 * @param task_id * @param newPlanTime * @return * @throws Exception */ public void modifyBooksTime(String task_id, String newPlanTime) throws Exception{ WWork work = wWorkDao.findByKey(task_id); work.setBooks_time(newPlanTime); wWorkDao.update(work); //记录操作 String info = "预约时间:"+work.getBooks_time()+"->"+newPlanTime; //saveWorkLog(SystemConstants.WORK_CHANGE_TIME,task_id.split(","),WebOptr.getOptr(),info); } /** * 更新派单内容 * @param task_ids * @param installerTeam * @throws Exception */ public void assignTask(String[] task_ids, String installerTeam)throws Exception { Map<String, WWork> map = CollectionHelper.converToMapSingle(wWorkDao.queryWork(task_ids), "work_id"); List<WLog> logList = new ArrayList<WLog>(); List<WWork> wList = new ArrayList<WWork>(); Integer sDoneCode = getLogDonecode(); SDept dept = sDeptDao.findByKey(installerTeam); if(dept == null){ throw new ComponentException("安装部门不存在"); } for(String dto:task_ids){ WWork work = map.get(dto); if(work!=null){ //新建派单记录 WLog log = new WLog(); log.setDone_type(SystemConstants.WORK_ASSIGN); log.setArea_id(WebOptr.getOptr().getArea_id()); log.setCounty_id(WebOptr.getOptr().getCounty_id()); log.setDept_id(WebOptr.getOptr().getDept_id()); log.setOptr_id(WebOptr.getOptr().getOptr_id()); log.setWork_id(dto); log.setDone_code(sDoneCode); String info = "安装部门:"+work.getAssign_dept_text()+"->"+dept.getDept_name(); log.setInfo(info); logList.add(log); if(work.getTask_status().equals(StatusConstants.TASK_CREATE)){ work.setTask_status(StatusConstants.TASK_INIT); } work.setAssign_dept(installerTeam); work.setAssign_time(new Date()); wList.add(work); } } //记录操作 wLogDao.save(logList.toArray(new WLog[logList.size()])); //更新工单 wWorkDao.update(wList.toArray(new WWork[wList.size()])); } /** * 记录回单,并更新工单状态为完成 * @param revisit * @param custId * @throws Exception */ public void responseTask(WRevisitInfo revisit, String custId) throws Exception { //变更工单状态 String workId = revisit.getWork_id(); WWork work = wWorkDao.findByKey(workId); work.setTask_status(StatusConstants.TASK_END); wWorkDao.update(work); //记录回单信息 revisit.setRevisit_optr(WebOptr.getOptr().getOptr_id()); wRevisitInfoDao.save(revisit); //记录操作 //saveWorkLog(SystemConstants.WORK_REVISIT,workId.split(","),WebOptr.getOptr(),null); } /** * 作废工单 * @param task_ids * @throws Exception */ public void cancelTask(String[] task_ids,String cancel_remak)throws Exception { //变更工单状态 wWorkDao.updateStatus(task_ids, StatusConstants.TASK_CANCEL); //记录操作 //saveWorkLog(SystemConstants.WORK_CANCEL,task_ids,WebOptr.getOptr(),cancel_remak); } /** * 根据工单编号,查询工单详细信息 * @param workId * @return * @throws Exception */ public TaskQueryWorkDto queryTaskByTaskId(String workId) throws Exception { TaskQueryWorkDto workInfo = new TaskQueryWorkDto(); workInfo = wWorkDao.queryaskByTaskId(workId); //查询服务类型 workInfo.setTaskServList(wTaskServDao.queryTaskServByTaskId(workId)); return workInfo; } /** * 工单变更安装人员 * @param taskId * @param newRevisitInstallerIds * @throws Exception */ public void modifyPlanOptr(String taskId, String newRevisitInstallerIds) throws Exception { WRevisitInfo winfo = wRevisitInfoDao.findByKey(taskId); winfo.setInstaller_optr(newRevisitInstallerIds); wRevisitInfoDao.update(winfo); //记录操作 String info = "安装人员:"+winfo.getInstaller_optr_text(); //saveWorkLog(SystemConstants.WORK_CHANGE_OPTR,taskId.split(","),WebOptr.getOptr(),info); } // /** // * 记录工单操作 // * @param doneCode // * @param doneType // * @param workId // * @param info // * @throws Exception // */ // public void saveWorkLog(String doneType,String[] workIds,String info ) throws Exception { // Integer sDoneCode = getLogDonecode(); // List<WLog> logList = new ArrayList<WLog>(); // for(String dto : workIds){ // WLog log = new WLog(); // log.setDone_type(doneType); // log.setArea_id(WebOptr.getOptr().getArea_id()); // log.setCounty_id(WebOptr.getOptr().getCounty_id()); // log.setDept_id(WebOptr.getOptr().getDept_id()); // log.setOptr_id(WebOptr.getOptr().getOptr_id()); // log.setWork_id(dto); // log.setDone_code(sDoneCode); // log.setInfo(info); // logList.add(log); // } // wLogDao.save(logList.toArray(new WLog[logList.size()])); // } private String queryDataRightCon() { String dataRight = ""; try { dataRight = this.queryDataRightCon(WebOptr.getOptr(),DataRight.QUERY_CUST.toString()); } catch (Exception e) { dataRight=SystemConstants.DEFAULT_DATA_RIGHT; } if(!SystemConstants.DEFAULT_DATA_RIGHT.equals(dataRight)){ dataRight = "t."+dataRight.trim(); } return dataRight; } public void setBTaskScheduleDao(BTaskScheduleDao taskScheduleDao) { bTaskScheduleDao = taskScheduleDao; } public void setBTaskInfoDao(BTaskInfoDao taskInfoDao) { bTaskInfoDao = taskInfoDao; } public void setSCountyDao(SCountyDao countyDao) { sCountyDao = countyDao; } public void setBTaskScheduleContentDao( BTaskScheduleContentDao taskScheduleContentDao) { bTaskScheduleContentDao = taskScheduleContentDao; } public void setBTaskScheduleListDao(BTaskScheduleListDao taskScheduleListDao) { bTaskScheduleListDao = taskScheduleListDao; } public void setWWorkDao(WWorkDao workDao) { wWorkDao = workDao; } public void setTaskService(ITaskServiceExternal taskService) { this.taskService = taskService; } public void setWRevisitInfoDao(WRevisitInfoDao revisitInfoDao) { wRevisitInfoDao = revisitInfoDao; } public void setSDeptDao(SDeptDao deptDao) { sDeptDao = deptDao; } public void setWTaskServDao(WTaskServDao taskServDao) { wTaskServDao = taskServDao; } }