WeeklyScheduleServiceImpl.java 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801
  1. package com.xcgl.weeklyschedule.service.impl;
  2. import java.io.Serializable;
  3. import java.text.SimpleDateFormat;
  4. import java.util.ArrayList;
  5. import java.util.Calendar;
  6. import java.util.Collections;
  7. import java.util.Date;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.Map.Entry;
  12. import java.util.UUID;
  13. import org.apache.log4j.Logger;
  14. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  15. import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
  16. import org.jeecgframework.core.constant.Globals;
  17. import org.jeecgframework.core.util.ApplicationContextUtil;
  18. import org.jeecgframework.core.util.DateUtils;
  19. import org.jeecgframework.core.util.MyClassLoader;
  20. import org.jeecgframework.core.util.ResourceUtil;
  21. import org.jeecgframework.core.util.StringUtil;
  22. import org.jeecgframework.p3.core.utils.common.StringUtils;
  23. import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import com.xcgl.projecttask.entity.ProjecttaskEntity;
  27. import com.xcgl.projecttask.service.ProjecttaskServiceI;
  28. import com.xcgl.utils.OrderNumTools;
  29. import com.xcgl.utils.XcglConstant;
  30. import com.xcgl.utils.XcglDateUtils;
  31. import com.xcgl.weeklyschedule.dao.WeeklyScheduleMiniDao;
  32. import com.xcgl.weeklyschedule.entity.WeeklyScheduleDayDto;
  33. import com.xcgl.weeklyschedule.entity.WeeklySchedulePartiEntity;
  34. import com.xcgl.weeklyschedule.entity.WeeklyScheduleUtils;
  35. import com.xcgl.weeklyschedule.entity.WeeklyscheduleEntity;
  36. import com.xcgl.weeklyschedule.service.WeeklyScheduleServiceI;
  37. import com.xcgl.weixin.dao.WXDao;
  38. import com.xcgl.weixin.service.WXServiceI;
  39. import cn.com.lzt.message.send.util.MessageSendUtil;
  40. import net.sf.json.JSONObject;
  41. @Service("WeeklyScheduleService")
  42. public class WeeklyScheduleServiceImpl extends CommonServiceImpl implements WeeklyScheduleServiceI {
  43. @Autowired
  44. WXServiceI wxservice ;
  45. @Autowired
  46. WXDao wxdao;
  47. @Autowired
  48. ProjecttaskServiceI workService;
  49. @Autowired
  50. WeeklyScheduleMiniDao weeklyminidao;
  51. private static final Logger logger = Logger.getLogger(WeeklyScheduleServiceImpl.class);
  52. public void sendWXMsgForWeeklySchedule() {
  53. Calendar cal = Calendar.getInstance();
  54. cal.setTime(new Date());
  55. // int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
  56. // //如果不是周五,则返回
  57. // if(dayWeek != 6)
  58. // return;
  59. List<Map<String,Object>> users = wxdao.getUsersByRoleCode(XcglConstant.ROLE_ZHOUBAO);
  60. if( users.size() == 0)
  61. return;
  62. List<Map<String,Object>> listParams = new ArrayList<Map<String,Object>>();
  63. List<String> weekday = XcglDateUtils.getWeekMonAndSun(XcglDateUtils.addDateDay(
  64. DateUtils.formatDate(new Date(),"yyyy-MM-dd"),7, new SimpleDateFormat("yyyy-MM-dd")));
  65. int hour = cal.get(Calendar.HOUR_OF_DAY);
  66. if(hour <= 12) {
  67. //上午提醒所有人
  68. for(Map<String,Object> user :users) {
  69. if(user.get("openid")==null || StringUtils.isEmpty(user.get("openid").toString()))
  70. continue;
  71. Map<String, Object> oneMsg = new HashMap<String, Object>();
  72. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  73. userMsgParms.put("first", "你好,您有一条新的工作需要关注");
  74. userMsgParms.put("keyword1","截止本周五24点前");
  75. userMsgParms.put("keyword2", "请在今日提交下周("+ weekday.get(0)+"至"+weekday.get(1)+")工作计划");
  76. userMsgParms.put("remark", "请登录美都环卫慧管理系统填写周工作计划,如已填报完成,请忽略此条通知");
  77. if(ResourceUtil.getConfigByName(Globals.SERVER_TYPE).equals(Globals.SERVER_TYPE_LINE)) {
  78. oneMsg.put("openid", user.get("openid"));//"oQ2vj04CDPxjrvp9WlyJkXEfg4S8"
  79. }else {
  80. oneMsg.put("openid", ResourceUtil.getConfigByName(Globals.SERVER_TEST_OPENID));
  81. }
  82. // oneMsg.put("openid", user.get("openid"));
  83. oneMsg.put("userid", user.get("id"));
  84. oneMsg.put("tplParams", userMsgParms);
  85. // oneMsg.put("url", "http://test.shenqin.work:8080/hgl/dsdemoController.do?showNoOrderWarehouse"+"&openid="+user.get("openid")+"&schedule="+weekday.get(0)+","+weekday.get(1));
  86. listParams.add(oneMsg);
  87. }
  88. }else {
  89. //下午提醒未提交人员
  90. HashMap<String,String> tipUserMap = new HashMap<String,String>();
  91. HashMap<String,String> tipUserNameMap = new HashMap<String,String>();
  92. for(Map<String,Object> user :users) {
  93. tipUserNameMap.put(user.get("id").toString(), user.get("realname").toString());
  94. if(user.get("openid")==null || StringUtils.isEmpty(user.get("openid").toString()))
  95. continue;
  96. tipUserMap.put(user.get("id").toString(), user.get("openid").toString());
  97. }
  98. List<WeeklyscheduleEntity> weeklys = findHql(" from WeeklyscheduleEntity where mondate = ?", weekday.get(0));
  99. if(weeklys != null) {
  100. for(WeeklyscheduleEntity we : weeklys) {
  101. //有提交内容的,则认为有已完成,不提醒
  102. if(StringUtils.isNotEmpty(WeeklyScheduleUtils.getPersonalWhat(we))) {
  103. tipUserMap.remove(we.getUserid());
  104. tipUserNameMap.remove(we.getUserid());
  105. }
  106. }
  107. }
  108. if(tipUserMap.size() > 0) {
  109. for(Entry<String, String> entry: tipUserMap.entrySet()) {
  110. //openid空,则不发消息
  111. if(StringUtils.isEmpty(entry.getValue()))
  112. continue;
  113. Map<String, Object> oneMsg = new HashMap<String, Object>();
  114. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  115. userMsgParms.put("first", "你好,下周工作计划尚未提交,请尽快填写");
  116. userMsgParms.put("keyword1","截止本周五24点前");
  117. userMsgParms.put("keyword2", "请在今日提交下周("+ weekday.get(0)+"至"+weekday.get(1)+")工作计划");
  118. userMsgParms.put("remark", "请登录美都环卫慧管理系统填写周工作计划");
  119. if(ResourceUtil.getConfigByName(Globals.SERVER_TYPE).equals(Globals.SERVER_TYPE_LINE)) {
  120. oneMsg.put("openid", entry.getValue());//"oQ2vj04CDPxjrvp9WlyJkXEfg4S8"
  121. }else {
  122. oneMsg.put("openid", ResourceUtil.getConfigByName(Globals.SERVER_TEST_OPENID));
  123. }
  124. // oneMsg.put("openid", entry.getValue());
  125. oneMsg.put("userid", entry.getKey());
  126. oneMsg.put("tplParams", userMsgParms);
  127. // oneMsg.put("url", "http://test.shenqin.work:8080/hgl/dsdemoController.do?showNoOrderWarehouse"+"&openid="+user.get("openid")+"&schedule="+weekday.get(0)+","+weekday.get(1));
  128. listParams.add(oneMsg);
  129. }
  130. }
  131. cal.setTime(new Date());
  132. //下午4点给总经办主任发送未提交周报人员明细
  133. if(cal.get(Calendar.HOUR_OF_DAY) >= 16) {
  134. List<Map<String,Object>> zjb = wxdao.getUsersByRoleCode(XcglConstant.ROLE_ZONGJINGBAN);
  135. if( users.size() == 0)
  136. return;
  137. StringBuffer tipMsgNamesBuf = new StringBuffer();
  138. if(tipUserNameMap.size() > 0) {
  139. for( String name :tipUserNameMap.values()) {
  140. tipMsgNamesBuf.append(name).append("\r\n");
  141. }
  142. }
  143. // for(Map<String,Object> user :users) {
  144. // if(tipUserMap.containsKey(user.get("id").toString())) {
  145. // tipMsgNamesBuf.append(user.get("realname").toString()).append("\r\n");
  146. // }
  147. // }
  148. if(tipMsgNamesBuf.toString().length() > 0) {
  149. Map<String, Object> oneMsg = new HashMap<String, Object>();
  150. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  151. userMsgParms.put("first", "你好,请提醒相关人员提交下周工作计划");
  152. userMsgParms.put("keyword1","周计划截止本周五24点前");
  153. userMsgParms.put("keyword2", "未提交周计划人员列表:\r\n"+tipMsgNamesBuf.toString());
  154. userMsgParms.put("remark", "可以登录美都环卫慧管理系统查看周计划详情");
  155. if(ResourceUtil.getConfigByName(Globals.SERVER_TYPE).equals(Globals.SERVER_TYPE_LINE)) {
  156. oneMsg.put("openid", zjb.get(0).get("openid"));//"oQ2vj04CDPxjrvp9WlyJkXEfg4S8"
  157. }else {
  158. oneMsg.put("openid", ResourceUtil.getConfigByName(Globals.SERVER_TEST_OPENID));
  159. }
  160. // oneMsg.put("openid", zjb.get(0).get("openid"));
  161. oneMsg.put("userid", zjb.get(0).get("id"));
  162. oneMsg.put("tplParams", userMsgParms);
  163. // oneMsg.put("url", "http://test.shenqin.work:8080/hgl/dsdemoController.do?showNoOrderWarehouse"+"&openid="+user.get("openid")+"&schedule="+weekday.get(0)+","+weekday.get(1));
  164. listParams.add(oneMsg);
  165. }
  166. }
  167. }
  168. try {
  169. wxservice.sendMsgToWXForTodayWork(listParams);
  170. }catch (Exception e) {
  171. logger.error(e.getMessage());
  172. }
  173. }
  174. public void sendWXMsgForWeeklySchedule4ZJL() {
  175. List<Map<String, Object>> user = findForJdbc("select openid,id from t_s_user where id in (select id from t_s_base_user where username = '0001') and openid is not null");
  176. if (user.size() == 0)
  177. return;
  178. List<Map<String,Object>> listParams = new ArrayList<Map<String,Object>>();
  179. Map<String, Object> oneMsg = new HashMap<String, Object>();
  180. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  181. JSONObject keyword1 = new JSONObject();
  182. String dayStr = XcglDateUtils.addDateDay(
  183. DateUtils.formatDate(new Date(),"yyyy-MM-dd"),-1, DateUtils.date_sdf);
  184. keyword1.put("value",dayStr);
  185. keyword1.put("color","#cc1010");
  186. userMsgParms.put("first", "("+XcglDateUtils.getWeekOfDate(dayStr)+")昨日工作完成情况");
  187. userMsgParms.put("keyword1", keyword1);
  188. userMsgParms.put("keyword2", "请点击本消息查看详情");
  189. userMsgParms.put("remark", "美都环卫物业:勤思、勤学、勤劳、勤勉");
  190. if(ResourceUtil.getConfigByName(Globals.SERVER_TYPE).equals(Globals.SERVER_TYPE_LINE)) {
  191. oneMsg.put("openid", user.get(0).get("openid"));//"oQ2vj04CDPxjrvp9WlyJkXEfg4S8"
  192. }else {
  193. oneMsg.put("openid", ResourceUtil.getConfigByName(Globals.SERVER_TEST_OPENID));
  194. }
  195. // oneMsg.put("openid", user.get(0).get("openid"));
  196. oneMsg.put("userid", user.get(0).get("id"));
  197. oneMsg.put("tplParams", userMsgParms);
  198. oneMsg.put("url", ResourceUtil.getConfigByName(Globals.SERVER_WXMSG)+"/weeklyscheduleController.do?yesterdayWorkList&date="+DateUtils.date_sdf.format(new Date()));
  199. listParams.add(oneMsg);
  200. Map<String, Object> oneMsg2 = new HashMap<String, Object>();
  201. Map<String, Object> userMsgParms2 = new HashMap<String, Object>();
  202. userMsgParms2.put("first", "("+XcglDateUtils.getWeekOfDate(DateUtils.date_sdf.format(new Date()))+")今日工作安排");
  203. JSONObject keyword1_2 = new JSONObject();
  204. keyword1_2.put("value",DateUtils.date_sdf.format(new Date()));
  205. keyword1_2.put("color","#cc1010");
  206. userMsgParms2.put("keyword1", keyword1_2);
  207. userMsgParms2.put("keyword2", "请点击本消息查看详情");
  208. userMsgParms2.put("remark", "美都环卫物业:勤思、勤学、勤劳、勤勉");
  209. if(ResourceUtil.getConfigByName(Globals.SERVER_TYPE).equals(Globals.SERVER_TYPE_LINE)) {
  210. oneMsg2.put("openid", user.get(0).get("openid"));//"oQ2vj04CDPxjrvp9WlyJkXEfg4S8"
  211. }else {
  212. oneMsg2.put("openid", ResourceUtil.getConfigByName(Globals.SERVER_TEST_OPENID));
  213. }
  214. oneMsg2.put("userid", user.get(0).get("id"));
  215. oneMsg2.put("tplParams", userMsgParms2);
  216. oneMsg2.put("url", ResourceUtil.getConfigByName(Globals.SERVER_WXMSG)+"/weeklyscheduleController.do?todayScheduledList&date="+DateUtils.date_sdf.format(new Date()));
  217. listParams.add(oneMsg2);
  218. try {
  219. wxservice.sendMsgToWXForTodayWork(listParams);
  220. }catch (Exception e) {
  221. logger.error(e.getMessage());
  222. }
  223. }
  224. /***
  225. * 根据周计划,生成任务到任务平台
  226. * modify by dgq ,每天晚上生成下一天的任务
  227. * */
  228. @Override
  229. public void genWorkFromWeeklySchedule() {
  230. //取下周所有日期从周一到周日
  231. // List<String> weekday = XcglDateUtils.getWeekdays(XcglDateUtils.addDateDay(
  232. // DateUtils.formatDate(new Date(),"yyyy-MM-dd"),7, new SimpleDateFormat("yyyy-MM-dd")));
  233. List<ProjecttaskEntity> taskList = weeklyminidao.getTaskListFromSchedule(XcglDateUtils.addDateDay(
  234. DateUtils.formatDate(new Date(),"yyyy-MM-dd"),1, new SimpleDateFormat("yyyy-MM-dd")));
  235. String lastCode = getMaxLocalCode();
  236. for(ProjecttaskEntity newTask: taskList) {
  237. lastCode = OrderNumTools.generateNextBillCode(lastCode, "WK", 4);
  238. newTask.setCode(lastCode);
  239. }
  240. if(taskList.size() > 0) {
  241. workService.batchSave(taskList);
  242. }
  243. }
  244. private String getMaxLocalCode(){
  245. StringBuilder sb = new StringBuilder();
  246. sb.append("SELECT code FROM p_projecttask where left(create_date,10) = ?");
  247. sb.append(" ORDER BY code DESC");
  248. List<Map<String, Object>> objMapList = workService.findForJdbc(sb.toString(), DateUtils.date_sdf.format(new Date()));
  249. String returnCode = null;
  250. if(objMapList!=null && objMapList.size()>0){
  251. returnCode = (String)objMapList.get(0).get("code");
  252. }
  253. return returnCode;
  254. }
  255. public void delete(WeeklyscheduleEntity entity) throws Exception{
  256. super.delete(entity);
  257. //执行删除操作增强业务
  258. this.doDelBus(entity);
  259. }
  260. public Serializable save(WeeklyscheduleEntity entity) throws Exception{
  261. //参与人员信息列表
  262. List<WeeklySchedulePartiEntity> partiList = entity.getPartiList();
  263. Serializable t = super.save(entity);
  264. for(WeeklySchedulePartiEntity partiEntity : partiList) {
  265. partiEntity.setScheduleid(entity.getId());
  266. }
  267. //保存参与人员信息列表
  268. super.batchSave(partiList);
  269. //执行新增操作增强业务
  270. this.doAddBus(entity);
  271. return t;
  272. }
  273. public void saveOrUpdate(WeeklyscheduleEntity entity) throws Exception{
  274. super.saveOrUpdate(entity);
  275. //执行更新操作增强业务
  276. this.doUpdateBus(entity);
  277. }
  278. /**
  279. * 新增操作增强业务
  280. * @param t
  281. * @return
  282. */
  283. private void doAddBus(WeeklyscheduleEntity t) throws Exception{
  284. //-----------------sql增强 start----------------------------
  285. //-----------------sql增强 end------------------------------
  286. //-----------------java增强 start---------------------------
  287. //-----------------java增强 end-----------------------------
  288. }
  289. /**
  290. * 更新操作增强业务
  291. * @param t
  292. * @return
  293. */
  294. private void doUpdateBus(WeeklyscheduleEntity t) throws Exception{
  295. //-----------------sql增强 start----------------------------
  296. //-----------------sql增强 end------------------------------
  297. //-----------------java增强 start---------------------------
  298. //-----------------java增强 end-----------------------------
  299. }
  300. /**
  301. * 删除操作增强业务
  302. * @param id
  303. * @return
  304. */
  305. private void doDelBus(WeeklyscheduleEntity t) throws Exception{
  306. //-----------------sql增强 start----------------------------
  307. //-----------------sql增强 end------------------------------
  308. //-----------------java增强 start---------------------------
  309. //-----------------java增强 end-----------------------------
  310. }
  311. private Map<String,Object> populationMap(WeeklyscheduleEntity t){
  312. Map<String,Object> map = new HashMap<String,Object>();
  313. map.put("id", t.getId());
  314. map.put("create_name", t.getCreateName());
  315. map.put("create_by", t.getCreateBy());
  316. map.put("create_date", t.getCreateDate());
  317. map.put("update_name", t.getUpdateName());
  318. map.put("update_by", t.getUpdateBy());
  319. map.put("update_date", t.getUpdateDate());
  320. map.put("userid", t.getUserid());
  321. map.put("mondate", t.getMondate());
  322. map.put("whatmonam", t.getWhatmonam());
  323. map.put("wheremonam", t.getWheremonam());
  324. map.put("whomonam", t.getWhomonams());
  325. map.put("remarkmonam", t.getRemarkmonam());
  326. map.put("whatmonpm", t.getWhatmonpm());
  327. map.put("wheremonpm", t.getWheremonpm());
  328. map.put("whomonpm", t.getWhomonpms());
  329. map.put("remarkmonpm", t.getRemarkmonpm());
  330. map.put("tuesdate", t.getTuesdate());
  331. map.put("whattuesam", t.getWhattuesam());
  332. map.put("wheretuesam", t.getWheretuesam());
  333. map.put("whotuesam", t.getWhotuesams());
  334. map.put("remarktuesam", t.getRemarktuesam());
  335. map.put("whattuespm", t.getWhattuespm());
  336. map.put("wheretuespm", t.getWheretuespm());
  337. map.put("whotuespm", t.getWhotuespms());
  338. map.put("remarktuespm", t.getRemarktuespm());
  339. map.put("weddate", t.getWeddate());
  340. map.put("whatwedam", t.getWhatwedam());
  341. map.put("wherewedam", t.getWherewedam());
  342. map.put("whowedam", t.getWhowedams());
  343. map.put("remarkwedam", t.getRemarkwedam());
  344. map.put("whatwedpm", t.getWhatwedpm());
  345. map.put("wherewedpm", t.getWherewedpm());
  346. map.put("whowedpm", t.getWhowedpms());
  347. map.put("remarkwedpm", t.getRemarkwedpm());
  348. map.put("thurdate", t.getThurdate());
  349. map.put("whatthuram", t.getWhatthuram());
  350. map.put("wherethuram", t.getWherethuram());
  351. map.put("whothuram", t.getWhothurams());
  352. map.put("remarkthuram", t.getRemarkthuram());
  353. map.put("whatthurpm", t.getWhatthurpm());
  354. map.put("wherethurpm", t.getWherethurpm());
  355. map.put("whothurpm", t.getWhothurpms());
  356. map.put("remarkthurpm", t.getRemarkthurpm());
  357. map.put("fridate", t.getFridate());
  358. map.put("whatfriam", t.getWhatfriam());
  359. map.put("wherefriam", t.getWherefriam());
  360. map.put("whofriam", t.getWhofriams());
  361. map.put("remarkfriam", t.getRemarkfriam());
  362. map.put("whatfripm", t.getWhatfripm());
  363. map.put("wherefripm", t.getWherefripm());
  364. map.put("whofripm", t.getWhofripms());
  365. map.put("remarkfripm", t.getRemarkfripm());
  366. map.put("satdate", t.getSatdate());
  367. map.put("whatsatam", t.getWhatsatam());
  368. map.put("wheresatam", t.getWheresatam());
  369. map.put("whosatam", t.getWhosatams());
  370. map.put("remarksatam", t.getRemarksatam());
  371. map.put("whatsatpm", t.getWhatsatpm());
  372. map.put("wheresatpm", t.getWheresatpm());
  373. map.put("whosatpm", t.getWhosatpms());
  374. map.put("remarksatpm", t.getRemarksatpm());
  375. map.put("sundate", t.getSundate());
  376. map.put("whatsunam", t.getWhatsunam());
  377. map.put("wheresunam", t.getWheresunam());
  378. map.put("whosunam", t.getWhosunams());
  379. map.put("remarksunam", t.getRemarksunam());
  380. map.put("whatsunpm", t.getWhatsunpm());
  381. map.put("wheresunpm", t.getWheresunpm());
  382. map.put("whosunpm", t.getWhosunpms());
  383. map.put("remarksunpm", t.getRemarksunpm());
  384. return map;
  385. }
  386. /**
  387. * 替换sql中的变量
  388. * @param sql
  389. * @param t
  390. * @return
  391. */
  392. public String replaceVal(String sql,WeeklyscheduleEntity t){
  393. sql = sql.replace("#{id}",String.valueOf(t.getId()));
  394. sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
  395. sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
  396. sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
  397. sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
  398. sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
  399. sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
  400. sql = sql.replace("#{userid}",String.valueOf(t.getUserid()));
  401. sql = sql.replace("#{mondate}",String.valueOf(t.getMondate()));
  402. sql = sql.replace("#{whatmonam}",String.valueOf(t.getWhatmonam()));
  403. sql = sql.replace("#{wheremonam}",String.valueOf(t.getWheremonam()));
  404. sql = sql.replace("#{whomonam}",String.valueOf(t.getWhomonams()));
  405. sql = sql.replace("#{remarkmonam}",String.valueOf(t.getRemarkmonam()));
  406. sql = sql.replace("#{whatmonpm}",String.valueOf(t.getWhatmonpm()));
  407. sql = sql.replace("#{wheremonpm}",String.valueOf(t.getWheremonpm()));
  408. sql = sql.replace("#{whomonpm}",String.valueOf(t.getWhomonpms()));
  409. sql = sql.replace("#{remarkmonpm}",String.valueOf(t.getRemarkmonpm()));
  410. sql = sql.replace("#{tuesdate}",String.valueOf(t.getTuesdate()));
  411. sql = sql.replace("#{whattuesam}",String.valueOf(t.getWhattuesam()));
  412. sql = sql.replace("#{wheretuesam}",String.valueOf(t.getWheretuesam()));
  413. sql = sql.replace("#{whotuesam}",String.valueOf(t.getWhotuesams()));
  414. sql = sql.replace("#{remarktuesam}",String.valueOf(t.getRemarktuesam()));
  415. sql = sql.replace("#{whattuespm}",String.valueOf(t.getWhattuespm()));
  416. sql = sql.replace("#{wheretuespm}",String.valueOf(t.getWheretuespm()));
  417. sql = sql.replace("#{whotuespm}",String.valueOf(t.getWhotuespms()));
  418. sql = sql.replace("#{remarktuespm}",String.valueOf(t.getRemarktuespm()));
  419. sql = sql.replace("#{weddate}",String.valueOf(t.getWeddate()));
  420. sql = sql.replace("#{whatwedam}",String.valueOf(t.getWhatwedam()));
  421. sql = sql.replace("#{wherewedam}",String.valueOf(t.getWherewedam()));
  422. sql = sql.replace("#{whowedam}",String.valueOf(t.getWhowedams()));
  423. sql = sql.replace("#{remarkwedam}",String.valueOf(t.getRemarkwedam()));
  424. sql = sql.replace("#{whatwedpm}",String.valueOf(t.getWhatwedpm()));
  425. sql = sql.replace("#{wherewedpm}",String.valueOf(t.getWherewedpm()));
  426. sql = sql.replace("#{whowedpm}",String.valueOf(t.getWhowedpms()));
  427. sql = sql.replace("#{remarkwedpm}",String.valueOf(t.getRemarkwedpm()));
  428. sql = sql.replace("#{thurdate}",String.valueOf(t.getThurdate()));
  429. sql = sql.replace("#{whatthuram}",String.valueOf(t.getWhatthuram()));
  430. sql = sql.replace("#{wherethuram}",String.valueOf(t.getWherethuram()));
  431. sql = sql.replace("#{whothuram}",String.valueOf(t.getWhothurams()));
  432. sql = sql.replace("#{remarkthuram}",String.valueOf(t.getRemarkthuram()));
  433. sql = sql.replace("#{whatthurpm}",String.valueOf(t.getWhatthurpm()));
  434. sql = sql.replace("#{wherethurpm}",String.valueOf(t.getWherethurpm()));
  435. sql = sql.replace("#{whothurpm}",String.valueOf(t.getWhothurpms()));
  436. sql = sql.replace("#{remarkthurpm}",String.valueOf(t.getRemarkthurpm()));
  437. sql = sql.replace("#{fridate}",String.valueOf(t.getFridate()));
  438. sql = sql.replace("#{whatfriam}",String.valueOf(t.getWhatfriam()));
  439. sql = sql.replace("#{wherefriam}",String.valueOf(t.getWherefriam()));
  440. sql = sql.replace("#{whofriam}",String.valueOf(t.getWhofriams()));
  441. sql = sql.replace("#{remarkfriam}",String.valueOf(t.getRemarkfriam()));
  442. sql = sql.replace("#{whatfripm}",String.valueOf(t.getWhatfripm()));
  443. sql = sql.replace("#{wherefripm}",String.valueOf(t.getWherefripm()));
  444. sql = sql.replace("#{whofripm}",String.valueOf(t.getWhofripms()));
  445. sql = sql.replace("#{remarkfripm}",String.valueOf(t.getRemarkfripm()));
  446. sql = sql.replace("#{satdate}",String.valueOf(t.getSatdate()));
  447. sql = sql.replace("#{whatsatam}",String.valueOf(t.getWhatsatam()));
  448. sql = sql.replace("#{wheresatam}",String.valueOf(t.getWheresatam()));
  449. sql = sql.replace("#{whosatam}",String.valueOf(t.getWhosatams()));
  450. sql = sql.replace("#{remarksatam}",String.valueOf(t.getRemarksatam()));
  451. sql = sql.replace("#{whatsatpm}",String.valueOf(t.getWhatsatpm()));
  452. sql = sql.replace("#{wheresatpm}",String.valueOf(t.getWheresatpm()));
  453. sql = sql.replace("#{whosatpm}",String.valueOf(t.getWhosatpms()));
  454. sql = sql.replace("#{remarksatpm}",String.valueOf(t.getRemarksatpm()));
  455. sql = sql.replace("#{sundate}",String.valueOf(t.getSundate()));
  456. sql = sql.replace("#{whatsunam}",String.valueOf(t.getWhatsunam()));
  457. sql = sql.replace("#{wheresunam}",String.valueOf(t.getWheresunam()));
  458. sql = sql.replace("#{whosunam}",String.valueOf(t.getWhosunams()));
  459. sql = sql.replace("#{remarksunam}",String.valueOf(t.getRemarksunam()));
  460. sql = sql.replace("#{whatsunpm}",String.valueOf(t.getWhatsunpm()));
  461. sql = sql.replace("#{wheresunpm}",String.valueOf(t.getWheresunpm()));
  462. sql = sql.replace("#{whosunpm}",String.valueOf(t.getWhosunpms()));
  463. sql = sql.replace("#{remarksunpm}",String.valueOf(t.getRemarksunpm()));
  464. sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
  465. return sql;
  466. }
  467. /**
  468. * 执行JAVA增强
  469. */
  470. private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map<String,Object> data) throws Exception {
  471. if(StringUtil.isNotEmpty(cgJavaValue)){
  472. Object obj = null;
  473. try {
  474. if("class".equals(cgJavaType)){
  475. //因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断
  476. obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance();
  477. }else if("spring".equals(cgJavaType)){
  478. obj = ApplicationContextUtil.getContext().getBean(cgJavaValue);
  479. }
  480. if(obj instanceof CgformEnhanceJavaInter){
  481. CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj;
  482. javaInter.execute("p_weeklyschedule",data);
  483. }
  484. } catch (Exception e) {
  485. e.printStackTrace();
  486. throw new Exception("执行JAVA增强出现异常!");
  487. }
  488. }
  489. }
  490. /* (non-Javadoc)
  491. * @see com.xcgl.weeklyschedule.service.WeeklyScheduleServiceI#getWeeklyScheduleDtosBySomeDate(java.util.Date)
  492. */
  493. @Override
  494. public List<WeeklyScheduleDayDto> getWeeklyScheduleDtosBySomeDate(Date date) throws Exception {
  495. List<String> weekdaylist = XcglDateUtils.getWeekdays(DateUtils.formatDate(date,"yyyy-MM-dd"));
  496. String mondate = weekdaylist.get(0);
  497. CriteriaQuery cq = new CriteriaQuery(WeeklyscheduleEntity.class);
  498. cq.eq("mondate", mondate);
  499. cq.add();
  500. List<WeeklyscheduleEntity> entitys = getListByCriteriaQuery(cq, false);
  501. List<WeeklyScheduleDayDto> dtos = getWeeklyScheduleDtos(date, entitys);
  502. return dtos;
  503. }
  504. //
  505. // /**
  506. // * @param date
  507. // * @return
  508. // */
  509. // private Date getMonday(Date date) {
  510. // Calendar cal = Calendar.getInstance();
  511. // cal.setTime(date);
  512. // for(int i=0 ; i<7 ; i++) {
  513. // if(cal.get(Calendar.DAY_OF_WEEK) == 2) {
  514. // return cal.getTime();
  515. // }
  516. // cal.add(Calendar.DATE, -1);
  517. // }
  518. // return null;
  519. // }
  520. // @Test
  521. // public void test1() {
  522. // Date date = new Date();
  523. // Calendar cal = Calendar.getInstance();
  524. // cal.setTime(date);
  525. // for(int i=0 ; i<20 ; i++) {
  526. // System.out.println(getMonday(cal.getTime()));
  527. // cal.add(Calendar.DATE, 1);
  528. // }
  529. // }
  530. /**
  531. * @param date
  532. * @param entitys
  533. * @return
  534. */
  535. private List<WeeklyScheduleDayDto> getWeeklyScheduleDtos(Date date, List<WeeklyscheduleEntity> entitys) {
  536. List<WeeklyScheduleDayDto> dtos = new ArrayList<WeeklyScheduleDayDto>();
  537. if(entitys != null && entitys.size()>0) {
  538. for(WeeklyscheduleEntity entity : entitys) {
  539. List<Map<String,Object>> nameTimeList = weeklyminidao.getParticipantName(entity.getId());
  540. entity = setRealNames(entity, nameTimeList);
  541. List<WeeklyScheduleDayDto> dtoParts = getSomeDaySchedule(date, entity);
  542. if(dtoParts != null) {
  543. dtos.addAll(dtoParts);
  544. }
  545. }
  546. Collections.sort(dtos);
  547. }
  548. return dtos;
  549. }
  550. /**
  551. * @param date
  552. * @param entity
  553. * @return
  554. */
  555. private List<WeeklyScheduleDayDto> getSomeDaySchedule(Date date, WeeklyscheduleEntity entity) {
  556. List<WeeklyScheduleDayDto> dtos = new ArrayList<WeeklyScheduleDayDto>();
  557. if(entity != null) {
  558. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  559. String datestr = sdf.format(date);
  560. if(datestr.equals(entity.getMondate())) {
  561. WeeklyScheduleDayDto dto = new WeeklyScheduleDayDto();
  562. dto.setId(entity.getId());
  563. dto.setDate(date);
  564. dto.setUserid(entity.getUserid());
  565. dto.setWhatAmZjl(entity.getWhatmonamzjl());
  566. dto.setWhatAm(entity.getWhatmonam());
  567. dto.setWhatPm(entity.getWhatmonpm());
  568. dto.setWhatPmZjl(entity.getWhatmonpmzjl());
  569. dto.setWhereAm(entity.getWheremonam());
  570. dto.setWhoIdsAm(entity.getWhomonams());
  571. dto.setWhoNamesAm(entity.getWhomonamnames());
  572. dto.setWherePm(entity.getWheremonpm());
  573. dto.setWhoIdsPm(entity.getWhomonpms());
  574. dto.setWhoNamesPm(entity.getWhomonpmnames());
  575. dtos.add(dto);
  576. }
  577. if(datestr.equals(entity.getTuesdate())) {
  578. WeeklyScheduleDayDto dto = new WeeklyScheduleDayDto();
  579. dto.setId(entity.getId());
  580. dto.setDate(date);
  581. dto.setUserid(entity.getUserid());
  582. dto.setWhatAmZjl(entity.getWhattuesamzjl());
  583. dto.setWhatAm(entity.getWhattuesam());
  584. dto.setWhatPm(entity.getWhattuespm());
  585. dto.setWhatPmZjl(entity.getWhattuespmzjl());
  586. dto.setWhereAm(entity.getWheretuesam());
  587. dto.setWhoIdsAm(entity.getWhotuesams());
  588. dto.setWhoNamesAm(entity.getWhotuesamnames());
  589. dto.setWherePm(entity.getWheretuespm());
  590. dto.setWhoIdsPm(entity.getWhotuespms());
  591. dto.setWhoNamesPm(entity.getWhotuespmnames());
  592. dtos.add(dto);
  593. }
  594. if(datestr.equals(entity.getWeddate())) {
  595. WeeklyScheduleDayDto dto = new WeeklyScheduleDayDto();
  596. dto.setId(entity.getId());
  597. dto.setDate(date);
  598. dto.setUserid(entity.getUserid());
  599. dto.setWhatAmZjl(entity.getWhatwedamzjl());
  600. dto.setWhatAm(entity.getWhatwedam());
  601. dto.setWhatPm(entity.getWhatwedpm());
  602. dto.setWhatPmZjl(entity.getWhatwedpmzjl());
  603. dto.setWhereAm(entity.getWherewedam());
  604. dto.setWhoIdsAm(entity.getWhowedams());
  605. dto.setWhoNamesAm(entity.getWhowedamnames());
  606. dto.setWherePm(entity.getWherewedpm());
  607. dto.setWhoIdsPm(entity.getWhowedpms());
  608. dto.setWhoNamesPm(entity.getWhowedpmnames());
  609. dtos.add(dto);
  610. }
  611. if(datestr.equals(entity.getThurdate())) {
  612. WeeklyScheduleDayDto dto = new WeeklyScheduleDayDto();
  613. dto.setId(entity.getId());
  614. dto.setDate(date);
  615. dto.setUserid(entity.getUserid());
  616. dto.setWhatAmZjl(entity.getWhatthuramzjl());
  617. dto.setWhatAm(entity.getWhatthuram());
  618. dto.setWhatPm(entity.getWhatthurpm());
  619. dto.setWhatPmZjl(entity.getWhatthurpmzjl());
  620. dto.setWhereAm(entity.getWherethuram());
  621. dto.setWhoIdsAm(entity.getWhothurams());
  622. dto.setWhoNamesAm(entity.getWhothuramnames());
  623. dto.setWherePm(entity.getWherethurpm());
  624. dto.setWhoIdsPm(entity.getWhothurpms());
  625. dto.setWhoNamesPm(entity.getWhothurpmnames());
  626. dtos.add(dto);
  627. }
  628. if(datestr.equals(entity.getFridate())) {
  629. WeeklyScheduleDayDto dto = new WeeklyScheduleDayDto();
  630. dto.setId(entity.getId());
  631. dto.setDate(date);
  632. dto.setUserid(entity.getUserid());
  633. dto.setWhatAmZjl(entity.getWhatfriamzjl());
  634. dto.setWhatAm(entity.getWhatfriam());
  635. dto.setWhatPm(entity.getWhatfripm());
  636. dto.setWhatPmZjl(entity.getWhatfripmzjl());
  637. dto.setWhereAm(entity.getWherefriam());
  638. dto.setWhoIdsAm(entity.getWhofriams());
  639. dto.setWhoNamesAm(entity.getWhofriamnames());
  640. dto.setWherePm(entity.getWherefripm());
  641. dto.setWhoIdsPm(entity.getWhofripms());
  642. dto.setWhoNamesPm(entity.getWhofripmnames());
  643. dtos.add(dto);
  644. }
  645. if(datestr.equals(entity.getSatdate())) {
  646. WeeklyScheduleDayDto dto = new WeeklyScheduleDayDto();
  647. dto.setId(entity.getId());
  648. dto.setDate(date);
  649. dto.setUserid(entity.getUserid());
  650. dto.setWhatAmZjl(entity.getWhatsatamzjl());
  651. dto.setWhatAm(entity.getWhatsatam());
  652. dto.setWhatPm(entity.getWhatsatpm());
  653. dto.setWhatPmZjl(entity.getWhatsatpmzjl());
  654. dto.setWhereAm(entity.getWheresatam());
  655. dto.setWhoIdsAm(entity.getWhosatams());
  656. dto.setWhoNamesAm(entity.getWhosatamnames());
  657. dto.setWherePm(entity.getWheresatpm());
  658. dto.setWhoIdsPm(entity.getWhosatpms());
  659. dto.setWhoNamesPm(entity.getWhosatpmnames());
  660. dtos.add(dto);
  661. }
  662. if(datestr.equals(entity.getSundate())) {
  663. WeeklyScheduleDayDto dto = new WeeklyScheduleDayDto();
  664. dto.setId(entity.getId());
  665. dto.setDate(date);
  666. dto.setUserid(entity.getUserid());
  667. dto.setWhatAmZjl(entity.getWhatsunamzjl());
  668. dto.setWhatAm(entity.getWhatsunam());
  669. dto.setWhatPm(entity.getWhatsunpm());
  670. dto.setWhatPmZjl(entity.getWhatsunpmzjl());
  671. dto.setWhereAm(entity.getWheresunam());
  672. dto.setWhoIdsAm(entity.getWhosunams());
  673. dto.setWhoNamesAm(entity.getWhosunamnames());
  674. dto.setWherePm(entity.getWheresunpm());
  675. dto.setWhoIdsPm(entity.getWhosunpms());
  676. dto.setWhoNamesPm(entity.getWhosunpmnames());
  677. dtos.add(dto);
  678. }
  679. }
  680. return dtos;
  681. }
  682. @Override
  683. public List<WeeklyscheduleEntity> getWeeklyScheduleBySomeDate(Date date) throws Exception {
  684. List<String> weekdaylist = XcglDateUtils.getWeekdays(DateUtils.formatDate(date,"yyyy-MM-dd"));
  685. String mondate = weekdaylist.get(0);
  686. CriteriaQuery cq = new CriteriaQuery(WeeklyscheduleEntity.class);
  687. cq.eq("mondate", mondate);
  688. cq.add();
  689. List<WeeklyscheduleEntity> entitys = getListByCriteriaQuery(cq, false);
  690. return entitys;
  691. }
  692. private WeeklyscheduleEntity setRealNames(WeeklyscheduleEntity weeklyschedule, List<Map<String,Object>> nameTimeList) {
  693. for(Map<String,Object> nameTime : nameTimeList) {
  694. String date = nameTime.get("datetime").toString();
  695. String realNames = nameTime.get("realNames").toString();
  696. //周一
  697. if(weeklyschedule.getMondate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  698. weeklyschedule.setWhomonamnames(realNames);
  699. }else if (weeklyschedule.getMondate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  700. weeklyschedule.setWhomonpmnames(realNames);
  701. }
  702. //周二
  703. else if(weeklyschedule.getTuesdate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  704. weeklyschedule.setWhotuesamnames(realNames);
  705. }else if (weeklyschedule.getTuesdate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  706. weeklyschedule.setWhotuespmnames(realNames);
  707. }
  708. //周三
  709. else if(weeklyschedule.getWeddate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  710. weeklyschedule.setWhowedamnames(realNames);
  711. }else if (weeklyschedule.getWeddate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  712. weeklyschedule.setWhowedpmnames(realNames);
  713. }
  714. //周四
  715. else if(weeklyschedule.getThurdate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  716. weeklyschedule.setWhothuramnames(realNames);
  717. }else if (weeklyschedule.getThurdate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  718. weeklyschedule.setWhothurpmnames(realNames);
  719. }
  720. //周五
  721. else if(weeklyschedule.getFridate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  722. weeklyschedule.setWhofriamnames(realNames);
  723. }else if (weeklyschedule.getFridate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  724. weeklyschedule.setWhofripmnames(realNames);
  725. }
  726. //周六
  727. else if(weeklyschedule.getSatdate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  728. weeklyschedule.setWhosatamnames(realNames);
  729. }else if (weeklyschedule.getSatdate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  730. weeklyschedule.setWhosatpmnames(realNames);
  731. }
  732. //周日
  733. else if(weeklyschedule.getSundate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  734. weeklyschedule.setWhosunamnames(realNames);
  735. }else if (weeklyschedule.getSundate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  736. weeklyschedule.setWhosunpmnames(realNames);
  737. }
  738. }
  739. return weeklyschedule;
  740. }
  741. public void sendWXMsgForActivityTaskOvertime4ZJL() {
  742. List<Map<String, Object>> user = findForJdbc("select openid,id from t_s_user where id in (select id from t_s_base_user where username = '0001') and openid is not null");
  743. if (user.size() == 0)
  744. return;
  745. List<Map<String,Object>> listParams = new ArrayList<Map<String,Object>>();
  746. Map<String, Object> oneMsg = new HashMap<String, Object>();
  747. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  748. JSONObject keyword1 = new JSONObject();
  749. keyword1.put("value",DateUtils.formatDate(new Date(),"yyyy年MM月dd日"));
  750. keyword1.put("color","#cc1010");
  751. userMsgParms.put("first", "截止今日("+DateUtils.formatDate(new Date(),"yyyy年MM月dd日")+")签报逾期情况");
  752. userMsgParms.put("keyword1", keyword1);
  753. userMsgParms.put("keyword2", "请点击本消息查看详情");
  754. userMsgParms.put("remark", "美都环卫物业:勤思、勤学、勤劳、勤勉");
  755. if(ResourceUtil.getConfigByName(Globals.SERVER_TYPE).equals(Globals.SERVER_TYPE_LINE)) {
  756. oneMsg.put("openid", user.get(0).get("openid"));//"oQ2vj04CDPxjrvp9WlyJkXEfg4S8"
  757. }else {
  758. oneMsg.put("openid", ResourceUtil.getConfigByName(Globals.SERVER_TEST_OPENID));
  759. }
  760. oneMsg.put("userid", user.get(0).get("id"));
  761. oneMsg.put("tplParams", userMsgParms);
  762. oneMsg.put("url", ResourceUtil.getConfigByName(Globals.SERVER_WXMSG)+"/weeklyscheduleController.do?activitiOvertimeRpt");
  763. listParams.add(oneMsg);
  764. try {
  765. wxservice.sendMsgToWXForTodayWork(listParams);
  766. }catch (Exception e) {
  767. logger.error(e.getMessage());
  768. }
  769. }
  770. }