package com.xcgl.weeklyMeeting.service.impl; import cn.com.lzt.message.send.entity.MMessageEntity; import cn.com.lzt.message.send.entity.MessageWxTemplateConfig; import cn.com.lzt.message.send.service.MMessageSendServiceI; import cn.com.lzt.tools.ServerType; import cn.com.lzt.useractiviti.data.dao.UseractivitiDataDao; import com.xcgl.projecttask.entity.ProjecttaskEntity; import com.xcgl.projecttask.service.ProjecttaskServiceI; import com.xcgl.taskresult.entity.TaskResultEntity; import com.xcgl.utils.OrderNumTools; import com.xcgl.utils.XcglConstant; import com.xcgl.weeklyMeeting.dao.WeeklyMeetingMiniDao; import com.xcgl.weeklyMeeting.entity.WeeklyMeetingEntity; import com.xcgl.weeklyMeeting.results.BaseResult; import com.xcgl.weeklyMeeting.results.ResultClass; import com.xcgl.weeklyMeeting.service.WeeklyMeetingService; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.jeecgframework.core.common.service.impl.CommonServiceImpl; import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.web.system.pojo.base.TSDepart; import org.jeecgframework.web.system.pojo.base.TSUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.*; @Service("WeeklyMeetingService") public class WeeklyMeetingServiceImpl extends CommonServiceImpl implements WeeklyMeetingService { @Autowired WeeklyMeetingMiniDao weeklyMeetingMiniDao; @Autowired ProjecttaskServiceI projecttaskService; @Autowired UseractivitiDataDao useractivitiDataDao; @Autowired private MMessageSendServiceI mMessageSendService; private static final Logger logger = Logger.getLogger(WeeklyMeetingServiceImpl.class); @Override public BaseResult addAndModify(WeeklyMeetingEntity weeklyMeetingEntity) { if("".equals(weeklyMeetingEntity.getId()) || weeklyMeetingEntity.getId() == null){ StringBuffer sql = new StringBuffer(); sql.append(" INSERT INTO p_weekly_meeting ( "); sql.append(" id, create_date, meeting_time, meeting_content,\n" + " urgent, importance, propose_id, propose_name, implementation_id,\n" + " implementation_name, expected_completion ) "); sql.append(" VALUES ( "); sql.append(" uuid(), NOW(), :meetingTime, :meetingContent, " + ":urgent, :importance, :proposeId, :proposeName, " + ":implementationId, :implementationName, :expectedCompletion ) "); Map param = new HashMap(); param.put("meetingTime", weeklyMeetingEntity.getMeetingTime()); param.put("meetingContent", weeklyMeetingEntity.getMeetingContent()); param.put("urgent", weeklyMeetingEntity.getUrgent()); param.put("importance", weeklyMeetingEntity.getImportance()); param.put("proposeId", weeklyMeetingEntity.getProposeId()); param.put("proposeName", weeklyMeetingEntity.getProposeName()); param.put("implementationId", weeklyMeetingEntity.getImplementationId()); param.put("implementationName", weeklyMeetingEntity.getImplementationName()); param.put("expectedCompletion", weeklyMeetingEntity.getExpectedCompletion()); executeSql(sql.toString(), param); }else{ StringBuffer sql = new StringBuffer(); sql.append(" UPDATE p_weekly_meeting SET "); sql.append(" meeting_time = :meetingTime, "); sql.append(" meeting_content = :meetingContent, "); sql.append(" urgent = :urgent, "); sql.append(" importance = :importance, "); sql.append(" propose_id = :proposeId, "); sql.append(" propose_name = :proposeName, "); sql.append(" implementation_id = :implementationId, "); sql.append(" implementation_name = :implementationName, "); sql.append(" expected_completion = :expectedCompletion "); sql.append(" WHERE id = :id "); Map param = new HashMap(); param.put("meetingTime", weeklyMeetingEntity.getMeetingTime()); param.put("meetingContent", weeklyMeetingEntity.getMeetingContent()); param.put("urgent", weeklyMeetingEntity.getUrgent()); param.put("importance", weeklyMeetingEntity.getImportance()); param.put("proposeId", weeklyMeetingEntity.getProposeId()); param.put("proposeName", weeklyMeetingEntity.getProposeName()); param.put("implementationId", weeklyMeetingEntity.getImplementationId()); param.put("implementationName", weeklyMeetingEntity.getImplementationName()); param.put("expectedCompletion", weeklyMeetingEntity.getExpectedCompletion()); param.put("id", weeklyMeetingEntity.getId()); executeSql(sql.toString(), param); } return ResultClass.OK; } @Override public BaseResult queryList(HttpServletRequest request) { String urgent = request.getParameter("urgent"); String importance = request.getParameter("importance"); String executionStatus = request.getParameter("executionStatus"); String startTime = request.getParameter("startTime"); String endTime = request.getParameter("endTime"); List lists = weeklyMeetingMiniDao.queryList(urgent, importance, executionStatus, startTime, endTime); return ResultClass.data(lists); } @Override public BaseResult deleteRecord(HttpServletRequest request) { String id = request.getParameter("id"); WeeklyMeetingEntity weeklyMeetingEntity = get(WeeklyMeetingEntity.class, id); if("1".equals(weeklyMeetingEntity.getIssue())){ return ResultClass.fail("已下发"); } delete(weeklyMeetingEntity); return ResultClass.OK; } @Override public BaseResult issueTask(HttpServletRequest request) { String weekNum = request.getParameter("weekNum"); String hql = "from WeeklyMeetingEntity where weekNum =? and issue='0' and execution_status <> '50'"; List list = findHql(hql,weekNum); for(WeeklyMeetingEntity meetingEntity : list){ ProjecttaskEntity newTask = new ProjecttaskEntity(); if(StringUtils.isNotEmpty(meetingEntity.getProjectTaskId())){ newTask = get(ProjecttaskEntity.class, meetingEntity.getProjectTaskId()); } String userId = meetingEntity.getImplementationId(); boolean msg = true; if(userId.equals(newTask.getOwner())){ msg = false; } TSDepart depart = useractivitiDataDao.getUserDep(userId); newTask.setProjectid(depart.getId()); newTask.setOwner(userId); newTask.setDescription(meetingEntity.getMeetingContent()); newTask.setName(meetingEntity.getMeetingContent()); newTask.setMsgtime(new Date()); newTask.setPlanstarttime(new Date()); Date planendTime = meetingEntity.getExpectedCompletion(); Calendar now = Calendar.getInstance(); now.setTime(planendTime); now.set(Calendar.HOUR_OF_DAY, 17); newTask.setPlanendtime(now.getTime()); newTask.setSourcetype("weeklymeeting"); newTask.setSourceid(meetingEntity.getId()); newTask.setTasktype("weeklymeeting"); newTask.setTaskstatus("0"); newTask.setExecuteWay(ProjecttaskEntity.ExecuteWay.both); newTask.setCheckResult(ProjecttaskEntity.CheckResult.not_check); newTask.setExecuteType(ProjecttaskEntity.ExecuteType.offline); String lastCode = OrderNumTools.generateNextBillCode(projecttaskService.getMaxLocalCode(), Globals.CODE_PREFIX_PROJECTTASK,4); newTask.setCode( lastCode); try{ projecttaskService.save(newTask); meetingEntity.setProjectTaskId(newTask.getId()); meetingEntity.setIssue("1"); save(meetingEntity); //发消息 if(msg){ projecttaskService.sendMsg(newTask); }else{ sendMsg(newTask, "gengxin"); } }catch (Exception e){ return ResultClass.fail("任务异常"); } } return ResultClass.OK; } @Override public BaseResult reexecution(HttpServletRequest request) { String taskId = request.getParameter("taskId"); //修改会议状态 WeeklyMeetingEntity weeklyMeetingEntity = weeklyMeetingMiniDao.projectTaskId(taskId); weeklyMeetingEntity.setExecutionStatus("1"); weeklyMeetingEntity.setActualCompletion(null); weeklyMeetingEntity.setRemindNum("0"); updateEntitie(weeklyMeetingEntity); //修改任务状态 ProjecttaskEntity projecttaskEntity = get(ProjecttaskEntity.class, taskId); projecttaskEntity.setTaskstatus("1"); projecttaskService.updateEntitie(projecttaskEntity); projecttaskService.sendMsg(projecttaskEntity); return ResultClass.OK; } @Override public BaseResult revokeTask(HttpServletRequest request) { String taskId = request.getParameter("taskId"); //修改会议状态 WeeklyMeetingEntity weeklyMeetingEntity = weeklyMeetingMiniDao.projectTaskId(taskId); weeklyMeetingEntity.setExecutionStatus("50"); updateEntitie(weeklyMeetingEntity); //删除任务 ProjecttaskEntity projecttaskEntity = get(ProjecttaskEntity.class, taskId); try{ delete(projecttaskEntity); List taskresultList = findByProperty(TaskResultEntity.class, "taskid", projecttaskEntity.getId()); for (TaskResultEntity taskresult : taskresultList) { delete(taskresult); } sendMsg(projecttaskEntity, "chexiao");//发送消息 } catch (Exception e) { e.printStackTrace(); ResultClass.fail("删除任务失败"); } return ResultClass.OK; } public void sendMsg(ProjecttaskEntity task, String notificationType) { String owner = task.getOwner(); TSUser ownerUser = getEntity(TSUser.class, owner); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ProjecttaskEntity.ExecuteWay executeWay = task.getExecuteWay(); Map userMsgParms = new HashMap(); String first = null; if(org.apache.commons.lang3.StringUtils.isNotBlank(task.getWxMsgTitle())){ first = task.getWxMsgTitle(); }else { if("chexiao".equals(notificationType)){ first = "你好" + ownerUser.getRealName() + ",你的任务已撤销"; }else if("gengxin".equals(notificationType)){ first = "你好" + ownerUser.getRealName() + ",你的任务内容有更新"; }else{ first = "你好" + ownerUser.getRealName() + ",你有一个新工作"; } } String k1 = null; if(org.apache.commons.lang3.StringUtils.isNotBlank(task.getWxTaskName())){ k1 = task.getWxTaskName(); }else { k1 = task.getName(); } userMsgParms.put("first", first); userMsgParms.put("keyword1", k1);//工作内容 userMsgParms.put("keyword2", format.format(new Date()));//创建时间 String url = null; String remark=task.getWxRemark(); if("chexiao".equals(notificationType)){ remark = "任务已撤销"; }else{ if(org.apache.commons.lang3.StringUtils.isBlank(remark)) { remark = "任务时间:截止到 " + format.format(task.getPlanendtime()); } remark +="\r\n "; if (executeWay == ProjecttaskEntity.ExecuteWay.both) { url = "http://www.shenqin.work"; if(ServerType.getServerType()==ServerType.test){ String serverPath = ResourceUtil.getConfigByName(Globals.SERVER_WXMSG); url=serverPath; } url += "/h5/task.html?id=" + task.getId(); remark += "点击【详情】查看工作内容"; } else { remark += "请登录慧管理系统完成工作"; } } userMsgParms.put("remark", remark); MessageWxTemplateConfig config = new MessageWxTemplateConfig(); config.setTemplateId(XcglConstant.TEMPLATE_WXMSG_TASK); config.setUserMsgParms(userMsgParms); config.setShowUrl(url!=null); mMessageSendService.sendMessage(Collections.singletonList(owner),url,null,null,config,new MMessageEntity.MessageSendWay[]{MMessageEntity.MessageSendWay.wx}); } }