ProjecttaskServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. package com.xcgl.projecttask.service.impl;
  2. import cn.com.lzt.car.alarm.CarAlarmEntity;
  3. import cn.com.lzt.maintainbill.entity.MaintainBillEntity;
  4. import cn.com.lzt.message.send.entity.MMessageEntity;
  5. import cn.com.lzt.message.send.entity.MessageWxTemplateConfig;
  6. import cn.com.lzt.message.send.service.MMessageSendServiceI;
  7. import cn.com.lzt.tools.ServerType;
  8. import cn.com.lzt.useractiviti.socialinsurance.entity.TBActivitiUserSocialInsuranceEntity;
  9. import com.xcgl.projecttask.service.ProjecttaskServiceI;
  10. import com.xcgl.taskresult.entity.TaskResultEntity;
  11. import com.xcgl.utils.XcglConstant;
  12. import cn.com.lzt.maintainbill.service.MaintainBillServiceI;
  13. import com.xcgl.weeklyMeeting.entity.WeeklyMeetingEntity;
  14. import net.sf.json.JSONArray;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.apache.http.HttpResponse;
  17. import org.apache.http.HttpStatus;
  18. import org.apache.http.client.HttpClient;
  19. import org.apache.http.client.methods.HttpPost;
  20. import org.apache.http.entity.StringEntity;
  21. import org.apache.http.impl.client.DefaultHttpClient;
  22. import org.apache.log4j.Logger;
  23. import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
  24. import com.alibaba.fastjson.JSONObject;
  25. import com.xcgl.middleware.MiddleWareInfo;
  26. import com.xcgl.projecttask.entity.ProjecttaskEntity;
  27. import org.jeecgframework.core.constant.Globals;
  28. import org.jeecgframework.core.util.*;
  29. import org.jeecgframework.web.system.pojo.base.TSUser;
  30. import org.jeecgframework.web.system.service.SystemService;
  31. import org.jeecgframework.web.system.service.UserService;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.stereotype.Service;
  34. import org.springframework.transaction.annotation.Transactional;
  35. import java.text.SimpleDateFormat;
  36. import java.util.*;
  37. import java.io.Serializable;
  38. import java.nio.charset.Charset;
  39. import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter;
  40. @Service("projecttaskService")
  41. @Transactional
  42. public class ProjecttaskServiceImpl extends CommonServiceImpl implements ProjecttaskServiceI {
  43. @Autowired
  44. private MMessageSendServiceI mMessageSendService;
  45. @Autowired
  46. private UserService userService;
  47. private static final Logger logger = Logger.getLogger(ProjecttaskServiceImpl.class);
  48. public void delete(ProjecttaskEntity entity) throws Exception{
  49. super.delete(entity);
  50. //执行删除操作增强业务
  51. this.doDelBus(entity);
  52. }
  53. public Serializable save(ProjecttaskEntity entity) throws Exception{
  54. Serializable t = super.save(entity);
  55. //执行新增操作增强业务
  56. this.doAddBus(entity);
  57. return t;
  58. }
  59. public void saveOrUpdate(ProjecttaskEntity entity) throws Exception{
  60. super.saveOrUpdate(entity);
  61. //执行更新操作增强业务
  62. this.doUpdateBus(entity);
  63. }
  64. @Override
  65. public void afterDone(ProjecttaskEntity task,TaskResultEntity taskResult) {
  66. String sourceType = task.getSourcetype();
  67. String taskType = task.getTasktype();
  68. String sourceId = task.getSourceid();
  69. if(StringUtils.equals(sourceType,"activititask") && StringUtils.equals(taskType,"user_social_insurance")){//社保公积金签报完任务成后,通知发起人
  70. TBActivitiUserSocialInsuranceEntity entity = get(TBActivitiUserSocialInsuranceEntity.class,sourceId);
  71. TSUser createUser = userService.getUserByUserName(entity.getCreateBy());
  72. String msgTitle="人事缴金专员已完成社保公积金签报任务";
  73. mMessageSendService.msg(createUser, msgTitle);
  74. }
  75. if(StringUtils.equals(sourceType,"weeklymeeting")){
  76. WeeklyMeetingEntity entity = get(WeeklyMeetingEntity.class,sourceId );
  77. entity.setActualCompletion(new Date());
  78. entity.setExecutionStatus(XcglConstant.TASKSTATUS_DONE);
  79. }
  80. /*if(StringUtils.equals(sourceType,"maintainbill")){//维保回写工作执行说明
  81. MaintainBillEntity entity = get(MaintainBillEntity.class,sourceId);
  82. entity.setDescription(taskResult.getMemo());
  83. }*/
  84. }
  85. @Override
  86. public void sendMsg(ProjecttaskEntity task) {
  87. String owner = task.getOwner();
  88. TSUser ownerUser = getEntity(TSUser.class, owner);
  89. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  90. ProjecttaskEntity.ExecuteWay executeWay = task.getExecuteWay();
  91. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  92. String first = null;
  93. if(StringUtils.isNotBlank(task.getWxMsgTitle())){
  94. first = task.getWxMsgTitle();
  95. }else {
  96. first = "你好" + ownerUser.getRealName() + ",你有一个新工作";
  97. }
  98. String k1 = null;
  99. if(StringUtils.isNotBlank(task.getWxTaskName())){
  100. k1 = task.getWxTaskName();
  101. }else {
  102. k1 = task.getName();
  103. }
  104. userMsgParms.put("first", first);
  105. userMsgParms.put("keyword1", k1);//工作内容
  106. userMsgParms.put("keyword2", format.format(new Date()));//创建时间
  107. String url = null;
  108. String remark=task.getWxRemark();
  109. if(StringUtils.isBlank(remark)) {
  110. remark = "任务时间:截止到 " + format.format(task.getPlanendtime());
  111. }
  112. remark +="\r\n ";
  113. if (executeWay == ProjecttaskEntity.ExecuteWay.both) {
  114. url = "http://www.shenqin.work";
  115. if(ServerType.getServerType()==ServerType.test){
  116. String serverPath = ResourceUtil.getConfigByName(Globals.SERVER_WXMSG);
  117. url=serverPath;
  118. }
  119. url += "/h5/task.html?id=" + task.getId();
  120. remark += "点击【详情】查看工作内容";
  121. } else {
  122. remark += "请登录慧管理系统完成工作";
  123. }
  124. userMsgParms.put("remark", remark);
  125. MessageWxTemplateConfig config = new MessageWxTemplateConfig();
  126. config.setTemplateId(XcglConstant.TEMPLATE_WXMSG_TASK);
  127. config.setUserMsgParms(userMsgParms);
  128. config.setShowUrl(url!=null);
  129. mMessageSendService.sendMessage(Collections.singletonList(owner),url,null,null,config,new MMessageEntity.MessageSendWay[]{MMessageEntity.MessageSendWay.wx});
  130. }
  131. @Override
  132. public String getMaxLocalCode(){
  133. StringBuilder sb = new StringBuilder();
  134. sb.append("SELECT code FROM p_projecttask where left(create_date,10) =? ");
  135. sb.append(" ORDER BY code DESC");
  136. List<Map<String, Object>> objMapList = findForJdbc(sb.toString(), DateUtils.date_sdf.format(new Date()));
  137. String returnCode = null;
  138. if(objMapList!=null && objMapList.size()>0){
  139. returnCode = (String)objMapList.get(0).get("code");
  140. }
  141. return returnCode;
  142. }
  143. /**
  144. * 新增操作增强业务
  145. * @param t
  146. * @return
  147. */
  148. private void doAddBus(ProjecttaskEntity t) throws Exception{
  149. //-----------------sql增强 start----------------------------
  150. //-----------------sql增强 end------------------------------
  151. //-----------------java增强 start---------------------------
  152. //-----------------java增强 end-----------------------------
  153. }
  154. /**
  155. * 更新操作增强业务
  156. * @param t
  157. * @return
  158. */
  159. private void doUpdateBus(ProjecttaskEntity t) throws Exception{
  160. //-----------------sql增强 start----------------------------
  161. //-----------------sql增强 end------------------------------
  162. //-----------------java增强 start---------------------------
  163. if(t.getTaskstatus().equals(XcglConstant.TASKSTATUS_DONE)) {
  164. if(t.getTasktype().equals("maintainbill")) {
  165. MaintainBillServiceI maintainbillService = ApplicationContextUtil.getContext().getBean(MaintainBillServiceI.class);
  166. maintainbillService.afterTaskFinish(t);
  167. }
  168. }
  169. //-----------------java增强 end-----------------------------
  170. }
  171. /**
  172. * 删除操作增强业务
  173. * @return
  174. */
  175. private void doDelBus(ProjecttaskEntity t) throws Exception{
  176. //-----------------sql增强 start----------------------------
  177. //-----------------sql增强 end------------------------------
  178. //-----------------java增强 start---------------------------
  179. //-----------------java增强 end-----------------------------
  180. }
  181. private Map<String,Object> populationMap(ProjecttaskEntity t){
  182. Map<String,Object> map = new HashMap<String,Object>();
  183. map.put("id", t.getId());
  184. map.put("create_name", t.getCreateName());
  185. map.put("create_by", t.getCreateBy());
  186. map.put("create_date", t.getCreateDate());
  187. map.put("update_name", t.getUpdateName());
  188. map.put("update_by", t.getUpdateBy());
  189. map.put("update_date", t.getUpdateDate());
  190. map.put("code", t.getCode());
  191. map.put("name", t.getName());
  192. map.put("description", t.getDescription());
  193. map.put("taskplanid", t.getTaskplanid());
  194. map.put("msgtime", t.getMsgtime());
  195. map.put("planstarttime", t.getPlanstarttime());
  196. map.put("planendtime", t.getPlanendtime());
  197. map.put("exestarttime", t.getExestarttime());
  198. map.put("exeendtime", t.getExeendtime());
  199. map.put("owner", t.getOwner());
  200. map.put("executer", t.getExecuter());
  201. map.put("projectid", t.getProjectid());
  202. map.put("taskstatus", t.getTaskstatus());
  203. map.put("tasktype", t.getTasktype());
  204. map.put("sourceid", t.getSourceid());
  205. map.put("sourcetype", t.getSourcetype());
  206. map.put("closemsg", t.getClosemsg());
  207. return map;
  208. }
  209. /**
  210. * 替换sql中的变量
  211. * @param sql
  212. * @param t
  213. * @return
  214. */
  215. public String replaceVal(String sql,ProjecttaskEntity t){
  216. sql = sql.replace("#{id}",String.valueOf(t.getId()));
  217. sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
  218. sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
  219. sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
  220. sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
  221. sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
  222. sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
  223. sql = sql.replace("#{code}",String.valueOf(t.getCode()));
  224. sql = sql.replace("#{name}",String.valueOf(t.getName()));
  225. sql = sql.replace("#{description}",String.valueOf(t.getDescription()));
  226. sql = sql.replace("#{taskplanid}",String.valueOf(t.getTaskplanid()));
  227. sql = sql.replace("#{msgtime}",String.valueOf(t.getMsgtime()));
  228. sql = sql.replace("#{planstarttime}",String.valueOf(t.getPlanstarttime()));
  229. sql = sql.replace("#{planendtime}",String.valueOf(t.getPlanendtime()));
  230. sql = sql.replace("#{exestarttime}",String.valueOf(t.getExestarttime()));
  231. sql = sql.replace("#{exeendtime}",String.valueOf(t.getExeendtime()));
  232. sql = sql.replace("#{owner}",String.valueOf(t.getOwner()));
  233. sql = sql.replace("#{executer}",String.valueOf(t.getExecuter()));
  234. sql = sql.replace("#{projectid}",String.valueOf(t.getProjectid()));
  235. sql = sql.replace("#{taskstatus}",String.valueOf(t.getTaskstatus()));
  236. sql = sql.replace("#{tasktype}",String.valueOf(t.getTasktype()));
  237. sql = sql.replace("#{sourceid}",String.valueOf(t.getSourceid()));
  238. sql = sql.replace("#{sourcetype}",String.valueOf(t.getSourcetype()));
  239. sql = sql.replace("#{closemsg}",String.valueOf(t.getClosemsg()));
  240. sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
  241. return sql;
  242. }
  243. /**
  244. * 执行JAVA增强
  245. */
  246. private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map<String,Object> data) throws Exception {
  247. if(StringUtil.isNotEmpty(cgJavaValue)){
  248. Object obj = null;
  249. try {
  250. if("class".equals(cgJavaType)){
  251. //因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断
  252. obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance();
  253. }else if("spring".equals(cgJavaType)){
  254. obj = ApplicationContextUtil.getContext().getBean(cgJavaValue);
  255. }
  256. if(obj instanceof CgformEnhanceJavaInter){
  257. CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj;
  258. javaInter.execute("p_projecttask",data);
  259. }
  260. } catch (Exception e) {
  261. e.printStackTrace();
  262. throw new Exception("执行JAVA增强出现异常!");
  263. }
  264. }
  265. }
  266. }