WeeklyMeetingServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. package com.xcgl.weeklyMeeting.service.impl;
  2. import cn.com.lzt.message.send.entity.MMessageEntity;
  3. import cn.com.lzt.message.send.entity.MessageWxTemplateConfig;
  4. import cn.com.lzt.message.send.service.MMessageSendServiceI;
  5. import cn.com.lzt.tools.ServerType;
  6. import cn.com.lzt.useractiviti.data.dao.UseractivitiDataDao;
  7. import com.xcgl.projecttask.entity.ProjecttaskEntity;
  8. import com.xcgl.projecttask.service.ProjecttaskServiceI;
  9. import com.xcgl.taskresult.entity.TaskResultEntity;
  10. import com.xcgl.utils.OrderNumTools;
  11. import com.xcgl.utils.XcglConstant;
  12. import com.xcgl.weeklyMeeting.dao.WeeklyMeetingMiniDao;
  13. import com.xcgl.weeklyMeeting.entity.WeeklyMeetingEntity;
  14. import com.xcgl.weeklyMeeting.results.BaseResult;
  15. import com.xcgl.weeklyMeeting.results.ResultClass;
  16. import com.xcgl.weeklyMeeting.service.WeeklyMeetingService;
  17. import org.apache.commons.lang.StringUtils;
  18. import org.apache.log4j.Logger;
  19. import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
  20. import org.jeecgframework.core.constant.Globals;
  21. import org.jeecgframework.core.util.ResourceUtil;
  22. import org.jeecgframework.web.system.pojo.base.TSDepart;
  23. import org.jeecgframework.web.system.pojo.base.TSUser;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import javax.servlet.http.HttpServletRequest;
  27. import java.text.SimpleDateFormat;
  28. import java.util.*;
  29. @Service("WeeklyMeetingService")
  30. public class WeeklyMeetingServiceImpl extends CommonServiceImpl implements WeeklyMeetingService {
  31. @Autowired
  32. WeeklyMeetingMiniDao weeklyMeetingMiniDao;
  33. @Autowired
  34. ProjecttaskServiceI projecttaskService;
  35. @Autowired
  36. UseractivitiDataDao useractivitiDataDao;
  37. @Autowired
  38. private MMessageSendServiceI mMessageSendService;
  39. private static final Logger logger = Logger.getLogger(WeeklyMeetingServiceImpl.class);
  40. @Override
  41. public BaseResult addAndModify(WeeklyMeetingEntity weeklyMeetingEntity) {
  42. if("".equals(weeklyMeetingEntity.getId()) || weeklyMeetingEntity.getId() == null){
  43. StringBuffer sql = new StringBuffer();
  44. sql.append(" INSERT INTO p_weekly_meeting ( ");
  45. sql.append(" id, create_date, meeting_time, meeting_content,\n" +
  46. " urgent, importance, propose_id, propose_name, implementation_id,\n" +
  47. " implementation_name, expected_completion ) ");
  48. sql.append(" VALUES ( ");
  49. sql.append(" uuid(), NOW(), :meetingTime, :meetingContent, " +
  50. ":urgent, :importance, :proposeId, :proposeName, " +
  51. ":implementationId, :implementationName, :expectedCompletion ) ");
  52. Map<String, Object> param = new HashMap<String, Object>();
  53. param.put("meetingTime", weeklyMeetingEntity.getMeetingTime());
  54. param.put("meetingContent", weeklyMeetingEntity.getMeetingContent());
  55. param.put("urgent", weeklyMeetingEntity.getUrgent());
  56. param.put("importance", weeklyMeetingEntity.getImportance());
  57. param.put("proposeId", weeklyMeetingEntity.getProposeId());
  58. param.put("proposeName", weeklyMeetingEntity.getProposeName());
  59. param.put("implementationId", weeklyMeetingEntity.getImplementationId());
  60. param.put("implementationName", weeklyMeetingEntity.getImplementationName());
  61. param.put("expectedCompletion", weeklyMeetingEntity.getExpectedCompletion());
  62. executeSql(sql.toString(), param);
  63. }else{
  64. StringBuffer sql = new StringBuffer();
  65. sql.append(" UPDATE p_weekly_meeting SET ");
  66. sql.append(" meeting_time = :meetingTime, ");
  67. sql.append(" meeting_content = :meetingContent, ");
  68. sql.append(" urgent = :urgent, ");
  69. sql.append(" importance = :importance, ");
  70. sql.append(" propose_id = :proposeId, ");
  71. sql.append(" propose_name = :proposeName, ");
  72. sql.append(" implementation_id = :implementationId, ");
  73. sql.append(" implementation_name = :implementationName, ");
  74. sql.append(" expected_completion = :expectedCompletion ");
  75. sql.append(" WHERE id = :id ");
  76. Map<String, Object> param = new HashMap<String, Object>();
  77. param.put("meetingTime", weeklyMeetingEntity.getMeetingTime());
  78. param.put("meetingContent", weeklyMeetingEntity.getMeetingContent());
  79. param.put("urgent", weeklyMeetingEntity.getUrgent());
  80. param.put("importance", weeklyMeetingEntity.getImportance());
  81. param.put("proposeId", weeklyMeetingEntity.getProposeId());
  82. param.put("proposeName", weeklyMeetingEntity.getProposeName());
  83. param.put("implementationId", weeklyMeetingEntity.getImplementationId());
  84. param.put("implementationName", weeklyMeetingEntity.getImplementationName());
  85. param.put("expectedCompletion", weeklyMeetingEntity.getExpectedCompletion());
  86. param.put("id", weeklyMeetingEntity.getId());
  87. executeSql(sql.toString(), param);
  88. }
  89. return ResultClass.OK;
  90. }
  91. @Override
  92. public BaseResult queryList(HttpServletRequest request) {
  93. String urgent = request.getParameter("urgent");
  94. String importance = request.getParameter("importance");
  95. String executionStatus = request.getParameter("executionStatus");
  96. String startTime = request.getParameter("startTime");
  97. String endTime = request.getParameter("endTime");
  98. List<WeeklyMeetingEntity> lists = weeklyMeetingMiniDao.queryList(urgent, importance, executionStatus, startTime, endTime);
  99. return ResultClass.data(lists);
  100. }
  101. @Override
  102. public BaseResult deleteRecord(HttpServletRequest request) {
  103. String id = request.getParameter("id");
  104. WeeklyMeetingEntity weeklyMeetingEntity = get(WeeklyMeetingEntity.class, id);
  105. if("1".equals(weeklyMeetingEntity.getIssue())){
  106. return ResultClass.fail("已下发");
  107. }
  108. delete(weeklyMeetingEntity);
  109. return ResultClass.OK;
  110. }
  111. @Override
  112. public BaseResult issueTask(HttpServletRequest request) {
  113. String weekNum = request.getParameter("weekNum");
  114. String hql = "from WeeklyMeetingEntity where weekNum =? and issue='0' and execution_status <> '50'";
  115. List<WeeklyMeetingEntity> list = findHql(hql,weekNum);
  116. for(WeeklyMeetingEntity meetingEntity : list){
  117. ProjecttaskEntity newTask = new ProjecttaskEntity();
  118. if(StringUtils.isNotEmpty(meetingEntity.getProjectTaskId())){
  119. newTask = get(ProjecttaskEntity.class, meetingEntity.getProjectTaskId());
  120. }
  121. String userId = meetingEntity.getImplementationId();
  122. boolean msg = true;
  123. if(userId.equals(newTask.getOwner())){
  124. msg = false;
  125. }
  126. TSDepart depart = useractivitiDataDao.getUserDep(userId);
  127. newTask.setProjectid(depart.getId());
  128. newTask.setOwner(userId);
  129. newTask.setDescription(meetingEntity.getMeetingContent());
  130. newTask.setName(meetingEntity.getMeetingContent());
  131. newTask.setMsgtime(new Date());
  132. newTask.setPlanstarttime(new Date());
  133. Date planendTime = meetingEntity.getExpectedCompletion();
  134. Calendar now = Calendar.getInstance();
  135. now.setTime(planendTime);
  136. now.set(Calendar.HOUR_OF_DAY, 17);
  137. newTask.setPlanendtime(now.getTime());
  138. newTask.setSourcetype("weeklymeeting");
  139. newTask.setSourceid(meetingEntity.getId());
  140. newTask.setTasktype("weeklymeeting");
  141. newTask.setTaskstatus("0");
  142. newTask.setExecuteWay(ProjecttaskEntity.ExecuteWay.both);
  143. newTask.setCheckResult(ProjecttaskEntity.CheckResult.not_check);
  144. newTask.setExecuteType(ProjecttaskEntity.ExecuteType.offline);
  145. String lastCode = OrderNumTools.generateNextBillCode(projecttaskService.getMaxLocalCode(), Globals.CODE_PREFIX_PROJECTTASK,4);
  146. newTask.setCode( lastCode);
  147. try{
  148. projecttaskService.save(newTask);
  149. meetingEntity.setProjectTaskId(newTask.getId());
  150. meetingEntity.setIssue("1");
  151. save(meetingEntity);
  152. //发消息
  153. if(msg){
  154. projecttaskService.sendMsg(newTask);
  155. }else{
  156. sendMsg(newTask, "gengxin");
  157. }
  158. }catch (Exception e){
  159. return ResultClass.fail("任务异常");
  160. }
  161. }
  162. return ResultClass.OK;
  163. }
  164. @Override
  165. public BaseResult reexecution(HttpServletRequest request) {
  166. String taskId = request.getParameter("taskId");
  167. //修改会议状态
  168. WeeklyMeetingEntity weeklyMeetingEntity = weeklyMeetingMiniDao.projectTaskId(taskId);
  169. weeklyMeetingEntity.setExecutionStatus("1");
  170. weeklyMeetingEntity.setActualCompletion(null);
  171. weeklyMeetingEntity.setRemindNum("0");
  172. updateEntitie(weeklyMeetingEntity);
  173. //修改任务状态
  174. ProjecttaskEntity projecttaskEntity = get(ProjecttaskEntity.class, taskId);
  175. projecttaskEntity.setTaskstatus("1");
  176. projecttaskService.updateEntitie(projecttaskEntity);
  177. projecttaskService.sendMsg(projecttaskEntity);
  178. return ResultClass.OK;
  179. }
  180. @Override
  181. public BaseResult revokeTask(HttpServletRequest request) {
  182. String taskId = request.getParameter("taskId");
  183. //修改会议状态
  184. WeeklyMeetingEntity weeklyMeetingEntity = weeklyMeetingMiniDao.projectTaskId(taskId);
  185. weeklyMeetingEntity.setExecutionStatus("50");
  186. updateEntitie(weeklyMeetingEntity);
  187. //删除任务
  188. ProjecttaskEntity projecttaskEntity = get(ProjecttaskEntity.class, taskId);
  189. try{
  190. delete(projecttaskEntity);
  191. List<TaskResultEntity> taskresultList = findByProperty(TaskResultEntity.class, "taskid", projecttaskEntity.getId());
  192. for (TaskResultEntity taskresult : taskresultList) {
  193. delete(taskresult);
  194. }
  195. sendMsg(projecttaskEntity, "chexiao");//发送消息
  196. } catch (Exception e) {
  197. e.printStackTrace();
  198. ResultClass.fail("删除任务失败");
  199. }
  200. return ResultClass.OK;
  201. }
  202. public void sendMsg(ProjecttaskEntity task, String notificationType) {
  203. String owner = task.getOwner();
  204. TSUser ownerUser = getEntity(TSUser.class, owner);
  205. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  206. ProjecttaskEntity.ExecuteWay executeWay = task.getExecuteWay();
  207. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  208. String first = null;
  209. if(org.apache.commons.lang3.StringUtils.isNotBlank(task.getWxMsgTitle())){
  210. first = task.getWxMsgTitle();
  211. }else {
  212. if("chexiao".equals(notificationType)){
  213. first = "你好" + ownerUser.getRealName() + ",你的任务已撤销";
  214. }else if("gengxin".equals(notificationType)){
  215. first = "你好" + ownerUser.getRealName() + ",你的任务内容有更新";
  216. }else{
  217. first = "你好" + ownerUser.getRealName() + ",你有一个新工作";
  218. }
  219. }
  220. String k1 = null;
  221. if(org.apache.commons.lang3.StringUtils.isNotBlank(task.getWxTaskName())){
  222. k1 = task.getWxTaskName();
  223. }else {
  224. k1 = task.getName();
  225. }
  226. userMsgParms.put("first", first);
  227. userMsgParms.put("keyword1", k1);//工作内容
  228. userMsgParms.put("keyword2", format.format(new Date()));//创建时间
  229. String url = null;
  230. String remark=task.getWxRemark();
  231. if("chexiao".equals(notificationType)){
  232. remark = "任务已撤销";
  233. }else{
  234. if(org.apache.commons.lang3.StringUtils.isBlank(remark)) {
  235. remark = "任务时间:截止到 " + format.format(task.getPlanendtime());
  236. }
  237. remark +="\r\n ";
  238. if (executeWay == ProjecttaskEntity.ExecuteWay.both) {
  239. url = "http://www.shenqin.work";
  240. if(ServerType.getServerType()==ServerType.test){
  241. String serverPath = ResourceUtil.getConfigByName(Globals.SERVER_WXMSG);
  242. url=serverPath;
  243. }
  244. url += "/h5/task.html?id=" + task.getId();
  245. remark += "点击【详情】查看工作内容";
  246. } else {
  247. remark += "请登录慧管理系统完成工作";
  248. }
  249. }
  250. userMsgParms.put("remark", remark);
  251. MessageWxTemplateConfig config = new MessageWxTemplateConfig();
  252. config.setTemplateId(XcglConstant.TEMPLATE_WXMSG_TASK);
  253. config.setUserMsgParms(userMsgParms);
  254. config.setShowUrl(url!=null);
  255. mMessageSendService.sendMessage(Collections.singletonList(owner),url,null,null,config,new MMessageEntity.MessageSendWay[]{MMessageEntity.MessageSendWay.wx});
  256. }
  257. }