ActivityService.java 65 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286
  1. package com.yihu.jw.service;/**
  2. * Created by nature of king on 2018/4/27.
  3. */
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.fasterxml.jackson.databind.ObjectMapper;
  8. import com.google.common.base.Joiner;
  9. import com.netflix.discovery.util.StringUtil;
  10. import com.yihu.jw.dao.*;
  11. import com.yihu.jw.entity.health.bank.*;
  12. import com.yihu.jw.restmodel.web.MixEnvelop;
  13. import com.yihu.jw.rm.health.bank.HealthBankMapping;
  14. import com.yihu.jw.util.DateUtils;
  15. import com.yihu.jw.util.ISqlUtils;
  16. import com.yihu.jw.util.date.DateUtil;
  17. import com.yihu.mysql.query.BaseJpaService;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  21. import org.springframework.jdbc.core.JdbcTemplate;
  22. import org.springframework.stereotype.Service;
  23. import javax.transaction.RollbackException;
  24. import javax.transaction.Transactional;
  25. import java.text.ParseException;
  26. import java.text.SimpleDateFormat;
  27. import java.util.*;
  28. /**
  29. * @author wangzhinan
  30. * @create 2018-04-27 14:38
  31. * @desc health activity Service
  32. **/
  33. @Service
  34. @Transactional
  35. public class ActivityService extends BaseJpaService<ActivityDO,ActivityDao> {
  36. @Autowired
  37. private ActivityDao activityDao;
  38. @Autowired
  39. private TaskPatientDetailDao taskPatientDetailDao;
  40. @Autowired
  41. private TaskDao taskDao;
  42. @Autowired
  43. private JdbcTemplate jdbcTemplate;
  44. @Autowired
  45. private ActivityRuleDao activityRuleDao;
  46. @Autowired
  47. private TaskGoodsDao taskGoodsDao;
  48. @Autowired
  49. private AccountDao accountDao;
  50. @Autowired
  51. private ExchangeGoodsDao exchangeGoodsDao;
  52. /**
  53. * insert activityDO
  54. *
  55. * @param activityDO 活动参数对象
  56. * @return
  57. */
  58. @org.springframework.transaction.annotation.Transactional(rollbackFor = Exception.class)
  59. public MixEnvelop<Boolean, Boolean> insert(ActivityDO activityDO,String value1,String value2,String value3,String registrationNumber){
  60. if (value2 != null && value2 !=""){
  61. JSONObject object = JSONObject.parseObject(value2);
  62. String activityOfflineTime = object.getString("activityOfflineTime");
  63. String[] str = activityOfflineTime.split(",");
  64. if (str.length == 2){
  65. activityDO.setActivityOfflineTime(DateUtil.strToDate(str[1]));
  66. }else {
  67. activityDO.setActivityOfflineTime(DateUtil.strToDate(str[0]));
  68. }
  69. String registrationTime = object.getString("registrationTime");
  70. String[] str1 = registrationTime.split(",");
  71. if(str1.length==2){
  72. activityDO.setRegistrationTime(DateUtil.strToDate(str1[1]));
  73. }else {
  74. activityDO.setRegistrationTime(DateUtil.strToDate(str1[0]));
  75. }
  76. String deadLine = object.getString("deadLine");
  77. String[] str2 = deadLine.split(",");
  78. if (str2.length==2){
  79. activityDO.setDeadLine(DateUtil.strToDate(str2[1]));
  80. }else {
  81. activityDO.setDeadLine(DateUtil.strToDate(str2[0]));
  82. }
  83. }
  84. activityDO.setCreateTime(new Date());
  85. activityDO.setUpdateTime(new Date());
  86. activityDO.setDelFlag(1);
  87. activityDO.setRegistrationNumber(registrationNumber);
  88. activityDO= activityDao.save(activityDO);
  89. if (value3 !=null && value3 !=""){
  90. JSONObject object = JSONObject.parseObject(value3);
  91. String exchangeType = object.getString("exchangeType");
  92. if (exchangeType.equals("1")){
  93. String array = (null!=object.get("goodDetail")?String.valueOf(object.get("goodDetail")):"");
  94. if (StringUtils.isNotBlank(array)){
  95. JSONArray array1= JSON.parseArray(array);
  96. for (int i =0;i<array1.size();i++){
  97. JSONObject jsonObject = array1.getJSONObject(i);
  98. TaskGoodsDO taskGoodsDO = new TaskGoodsDO();
  99. taskGoodsDO.setCreateTime(new Date());
  100. taskGoodsDO.setUpdateTime(new Date());
  101. taskGoodsDO.setActivityId(activityDO.getId());
  102. taskGoodsDO.setCoupon(jsonObject.getInteger("couponNum"));
  103. taskGoodsDO.setImg(jsonObject.getString("picUrl"));
  104. taskGoodsDO.setName(jsonObject.getString("name"));
  105. taskGoodsDO.setSaasId("dev");
  106. taskGoodsDO.setStatus(1);
  107. taskGoodsDao.save(taskGoodsDO);
  108. }
  109. }
  110. }
  111. }
  112. TaskDO taskDO = new TaskDO();
  113. taskDO.setTitle(activityDO.getTitle());
  114. taskDO.setStatus(1);
  115. taskDO.setTransactionId(activityDO.getId());
  116. taskDO.setType("ACTIVITY_TASK");
  117. taskDO.setSaasId("dev");
  118. taskDO.setContent(activityDO.getDescription());
  119. taskDO.setPeriod(1);
  120. taskDO.setTaskCode("ACTIVITY_QUESTION");
  121. taskDO.setStartTime(activityDO.getRegistrationTime());
  122. taskDO.setEndTime(activityDO.getActivityOfflineTime());
  123. taskDO.setCreateTime(new Date());
  124. taskDO.setUpdateTime(new Date());
  125. taskDao.save(taskDO);
  126. ActivityRuleDO activityRuleDO = new ActivityRuleDO();
  127. activityRuleDO.setCreateTime(new Date());
  128. activityRuleDO.setUpdateTime(new Date());
  129. activityRuleDO.setActivityId(activityDO.getId());
  130. activityRuleDO.setSaasId("dev");
  131. activityRuleDO.setValue1(value1);
  132. activityRuleDO.setValue2(value2);
  133. activityRuleDO.setValue3(value3);
  134. activityRuleDO.setDelFlag(1);
  135. /* activityRuleDO.setDel(1);*/
  136. activityRuleDao.save(activityRuleDO);
  137. MixEnvelop<Boolean, Boolean> envelop = new MixEnvelop<>();
  138. envelop.setObj(true);
  139. return envelop;
  140. }
  141. /**
  142. * find by condition
  143. *
  144. * @param activityDO 活动参数对象
  145. * @param page 页码
  146. * @param size 每页大小
  147. * @return
  148. * @throws ParseException
  149. */
  150. public MixEnvelop<ActivityDO, ActivityDO> findByCondition(ActivityDO activityDO, Integer page, Integer size) throws ParseException {
  151. String sql = new ISqlUtils().getSql(activityDO,page,size,"sort");
  152. List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  153. for (ActivityDO activityDO1:activityDOS){
  154. String taskSql = "SELECT" +
  155. " COUNT(1) AS total1 " +
  156. "FROM " +
  157. " ( " +
  158. " SELECT DISTINCT " +
  159. " (btpd.patient_id) " +
  160. " FROM " +
  161. " wlyy_health_bank_task_patient_detail btpd " +
  162. " WHERE " +
  163. " activity_id = '" +activityDO1.getId()+
  164. "' ) btpd1";
  165. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(taskSql);
  166. Long count = 0L;
  167. if(rstotal!=null&&rstotal.size()>0){
  168. count = (Long) rstotal.get(0).get("total1");
  169. }
  170. activityDO1.setTotal(count);
  171. String taskSql1 = "select * from wlyy_health_bank_task_patient_detail btpd where activity_id = '"+activityDO1.getId()
  172. +"' and (patient_idcard = '"+activityDO.getPatientIdcard()+"' OR union_id = '"+activityDO.getUnionId()+"')";
  173. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  174. activityDO1.setTaskPatientDetailDOS(taskPatientDetailDOS);
  175. String tasksql = "select * from wlyy_health_bank_task where transaction_id = '"+activityDO1.getId()+"'";
  176. List<TaskDO> taskDOList = jdbcTemplate.query(tasksql,new BeanPropertyRowMapper(TaskDO.class));
  177. List<TaskGoodsDO> taskGoodsDOS = taskGoodsDao.selectByActivityId(activityDO1.getId());
  178. for (TaskGoodsDO taskGoodsDO:taskGoodsDOS){
  179. ExchangeGoodsDO exchangeGoodsDO = exchangeGoodsDao.selectByActivityGoodsIdAndPatientId(taskGoodsDO.getId(),activityDO.getPatientId());
  180. taskGoodsDO.setExchangeGoodsDO(exchangeGoodsDO);
  181. }
  182. activityDO1.setTaskGoodsDOS(taskGoodsDOS);
  183. ActivityRuleDO activityRuleDO = activityRuleDao.selectByActivityId(activityDO1.getId());
  184. activityDO1.setActivityRuleDO(activityRuleDO);
  185. activityDO1.setTaskDOS(taskDOList);
  186. }
  187. String sqlcount = new ISqlUtils().getSql(activityDO,0,0,"count");
  188. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  189. Long count = 0L;
  190. if(rstotal!=null&&rstotal.size()>0){
  191. count = (Long) rstotal.get(0).get("total");
  192. }
  193. return MixEnvelop.getSuccessListWithPage(HealthBankMapping.api_success,activityDOS,page,size,count);
  194. }
  195. /**
  196. * update activityDO
  197. *
  198. * @param activityDO 活动参数对象
  199. * @return
  200. */
  201. @org.springframework.transaction.annotation.Transactional(rollbackFor = Exception.class)
  202. public MixEnvelop<Boolean, Boolean> update(ActivityDO activityDO, String value1, String value2, String value3,String registrationNumber) throws Exception {
  203. if (StringUtils.isBlank(activityDO.getId())) {
  204. throw new Exception("活动id不能为空!");
  205. }
  206. if (StringUtils.isNotBlank(value2)){
  207. JSONObject object = JSONObject.parseObject(value2);
  208. String activityOfflineTime = object.getString("activityOfflineTime");
  209. String[] str = activityOfflineTime.split(",");
  210. if (str.length == 2){
  211. activityDO.setActivityOfflineTime(DateUtil.strToDate(str[1]));
  212. }else {
  213. activityDO.setActivityOfflineTime(DateUtil.strToDate(str[0]));
  214. }
  215. String registrationTime = object.getString("registrationTime");
  216. String[] str1 = registrationTime.split(",");
  217. if(str1.length==2){
  218. activityDO.setRegistrationTime(DateUtil.strToDate(str1[1]));
  219. }else {
  220. activityDO.setRegistrationTime(DateUtil.strToDate(str1[0]));
  221. }
  222. String deadLine = object.getString("deadLine");
  223. String[] str2 = deadLine.split(",");
  224. if (str2.length==2){
  225. activityDO.setDeadLine(DateUtil.strToDate(str2[1]));
  226. }else {
  227. activityDO.setDeadLine(DateUtil.strToDate(str2[0]));
  228. }
  229. }
  230. activityDO.setRegistrationNumber(registrationNumber);
  231. activityDO.setUpdateTime(new Date());
  232. activityDO.setDelFlag(1);
  233. //删除活动任务与奖品
  234. taskGoodsDao.deleteByActivityId(activityDO.getId());
  235. if (value3 !=null && value3 !=""){
  236. JSONObject object = JSONObject.parseObject(value3);
  237. String exchangeType = object.getString("exchangeType");
  238. if (exchangeType.equals("1")){
  239. String array = (null!=object.get("goodDetail")?String.valueOf(object.get("goodDetail")):"");
  240. if (StringUtils.isNotBlank(array)){
  241. JSONArray array1= JSON.parseArray(array);
  242. for (int i =0;i<array1.size();i++){
  243. JSONObject jsonObject = array1.getJSONObject(i);
  244. TaskGoodsDO taskGoodsDO = new TaskGoodsDO();
  245. taskGoodsDO.setActivityId(activityDO.getId());
  246. taskGoodsDO.setCoupon(jsonObject.getInteger("couponNum"));
  247. taskGoodsDO.setImg(jsonObject.getString("picUrl"));
  248. taskGoodsDO.setName(jsonObject.getString("name"));
  249. taskGoodsDO.setCreateTime(new Date());
  250. taskGoodsDO.setUpdateTime(new Date());
  251. taskGoodsDO.setSaasId("dev");
  252. taskGoodsDO.setStatus(1);
  253. taskGoodsDao.save(taskGoodsDO);
  254. }
  255. }
  256. }
  257. }
  258. ActivityRuleDO activityRuleDO = activityRuleDao.selectByActivityId(activityDO.getId());
  259. activityRuleDO.setUpdateTime(new Date());
  260. activityRuleDO.setSaasId("dev");
  261. activityRuleDO.setValue1(value1);
  262. activityRuleDO.setValue2(value2);
  263. activityRuleDO.setValue3(value3);
  264. activityRuleDO.setDelFlag(1);
  265. activityRuleDao.save(activityRuleDO);
  266. System.out.println("----------------------------update--"+activityDO.getId()+activityDO.getAreaName());
  267. // activityDO.setCreateTime(new Date());
  268. activityDao.save(activityDO);
  269. MixEnvelop<Boolean, Boolean> envelop = new MixEnvelop<>();
  270. envelop.setObj(true);
  271. return envelop;
  272. }
  273. /**
  274. * 获取参与的活动
  275. *
  276. * @param activityDO 活动对象
  277. * @param page 页码
  278. * @param size 分页大小
  279. * @return
  280. */
  281. public MixEnvelop<ActivityDO, ActivityDO> selectByPatient(ActivityDO activityDO, Integer page, Integer size){
  282. String condition = "";
  283. if (activityDO.getUnionId()!=null&&activityDO.getUnionId() !=""){
  284. condition="AND union_id = '"+ activityDO.getUnionId()+"'";
  285. }
  286. String sql ="SELECT * " +
  287. " FROM wlyy_health_bank_activity " +
  288. "WHERE " +
  289. "id IN ( " +
  290. "SELECT bt.transaction_id " +
  291. "FROM wlyy_health_bank_task bt " +
  292. "WHERE id IN (" +
  293. " SELECT task_id FROM " +
  294. "wlyy_health_bank_task_patient_detail" +
  295. " WHERE " +
  296. " patient_idcard = '"+activityDO.getPatientIdcard()+"' "+ condition+")" +
  297. " ) AND del_flag =1 " +
  298. " LIMIT "+(page-1)*size +","+size;
  299. List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  300. for (ActivityDO activityDO1:activityDOS){
  301. String activitySql ="SELECT btpd1.sum AS total FROM (SELECT " +
  302. " SUM(total) AS sum , " +
  303. " patient_id, " +
  304. " patient_openid, " +
  305. " patient_idcard, " +
  306. " activity_id," +
  307. " union_id " +
  308. " FROM " +
  309. " wlyy_health_bank_task_patient_detail " +
  310. "GROUP BY patient_openid,patient_idcard,union_id)btpd1 " +
  311. "WHERE " +
  312. " btpd1.activity_id = '"+activityDO1.getId() +"' AND patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' "+condition;
  313. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(activitySql);
  314. Long count = 0L;
  315. if(rstotal!=null&&rstotal.size()>0){
  316. Object object = rstotal.get(0).get("total");
  317. count = Long.parseLong(object.toString());
  318. }
  319. activityDO1.setSum(count);
  320. String rankingSql = "SELECT count(1)+1 AS total FROM (SELECT " +
  321. " SUM(total) AS sum , " +
  322. " patient_id, " +
  323. " patient_openid, " +
  324. " patient_idcard, " +
  325. " activity_id " +
  326. "FROM " +
  327. " wlyy_health_bank_task_patient_detail " +
  328. "GROUP BY patient_openid,patient_idcard,union_id)btpd1 " +
  329. "WHERE " +
  330. " btpd1.activity_id = '"+activityDO1.getId()+"' AND btpd1.sum >" +activityDO1.getSum() ;
  331. List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(rankingSql);
  332. Integer count1 = 0;
  333. if(rstotal1!=null&&rstotal1.size()>0){
  334. Object object = rstotal1.get(0).get("total");
  335. count1 = Integer.parseInt(object.toString());
  336. }
  337. activityDO1.setActivityRanking(count1);
  338. String taskSql = "SELECT" +
  339. " COUNT(1) AS total1 " +
  340. "FROM " +
  341. " ( " +
  342. " SELECT * " +
  343. " FROM " +
  344. " wlyy_health_bank_task_patient_detail btpd " +
  345. " WHERE " +
  346. " activity_id = '" +activityDO1.getId()+
  347. "' GROUP BY patient_openid,patient_idcard,union_id) btpd1";
  348. List<Map<String,Object>> rstotal2 = jdbcTemplate.queryForList(taskSql);
  349. Long count2 = 0L;
  350. if(rstotal2!=null&&rstotal2.size()>0){
  351. count2 = (Long) rstotal2.get(0).get("total1");
  352. }
  353. activityDO1.setTotal(count2);
  354. }
  355. String sqlcount = "SELECT count(1) AS total" +
  356. " FROM wlyy_health_bank_activity " +
  357. "WHERE " +
  358. "id IN ( " +
  359. "SELECT bt.transaction_id " +
  360. "FROM wlyy_health_bank_task bt " +
  361. "WHERE id IN (" +
  362. " SELECT task_id FROM " +
  363. "wlyy_health_bank_task_patient_detail" +
  364. " WHERE " +
  365. " patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"'"+condition+ ")" +
  366. " )";
  367. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  368. Long count = 0L;
  369. if(rstotal!=null&&rstotal.size()>0){
  370. count = (Long) rstotal.get(0).get("total");
  371. }
  372. return MixEnvelop.getSuccessListWithPage(HealthBankMapping.api_success,activityDOS,page,size,count);
  373. }
  374. /**
  375. * 批量删除活动
  376. *
  377. * @param ids 活动id集合
  378. * @return
  379. */
  380. public MixEnvelop<Boolean, Boolean> batchDelete(List<String> ids){
  381. MixEnvelop<Boolean, Boolean> envelop = new MixEnvelop<>();
  382. for (int i =0;i<ids.size();i++){
  383. List<TaskDO> taskDOList = taskDao.selectByActivityId(ids.get(i));
  384. for (TaskDO taskDO:taskDOList){
  385. taskDO.setStatus(0);
  386. taskDO.setCreateTime(new Date());
  387. taskDO.setUpdateTime(new Date());
  388. taskDao.save(taskDO);
  389. }
  390. List<TaskPatientDetailDO> taskPatientDetailDOS = taskPatientDetailDao.selectByActivityId(ids.get(i));
  391. for(TaskPatientDetailDO taskPatientDetailDO:taskPatientDetailDOS){
  392. taskPatientDetailDO.setStatus(-1);
  393. taskPatientDetailDO.setCreateTime(new Date());
  394. taskPatientDetailDO.setUpdateTime(new Date());
  395. taskPatientDetailDao.save(taskPatientDetailDO);
  396. }
  397. ActivityRuleDO ruleDO = activityRuleDao.selectByActivityId(ids.get(i));
  398. if(null!=ruleDO){
  399. ruleDO.setDelFlag(0);
  400. activityRuleDao.save(ruleDO);
  401. }
  402. ActivityDO activityDO = activityDao.findOne(ids.get(i));
  403. activityDO.setStatus(-1);
  404. activityDO.setCreateTime(new Date());
  405. activityDO.setUpdateTime(new Date());
  406. activityDO.setDelFlag(0);
  407. activityDao.save(activityDO);
  408. }
  409. return envelop;
  410. }
  411. /**
  412. * 删除活动
  413. *
  414. * @param id 活动id
  415. * @return
  416. */
  417. public MixEnvelop<Boolean, Boolean> daleteActivity(String id){
  418. MixEnvelop<Boolean, Boolean> envelop = new MixEnvelop<>();
  419. List<TaskDO> taskDOList = taskDao.selectByActivityId(id);
  420. for (TaskDO taskDO:taskDOList){
  421. taskDO.setStatus(0);
  422. taskDO.setCreateTime(new Date());
  423. taskDO.setUpdateTime(new Date());
  424. taskDao.save(taskDO);
  425. }
  426. List<TaskPatientDetailDO> taskPatientDetailDOS = taskPatientDetailDao.selectByActivityId(id);
  427. for(TaskPatientDetailDO taskPatientDetailDO:taskPatientDetailDOS){
  428. taskPatientDetailDO.setStatus(-1);
  429. taskPatientDetailDO.setCreateTime(new Date());
  430. taskPatientDetailDO.setUpdateTime(new Date());
  431. taskPatientDetailDao.save(taskPatientDetailDO);
  432. }
  433. ActivityRuleDO ruleDO = activityRuleDao.selectByActivityId(id);
  434. if(null!=ruleDO){
  435. ruleDO.setDelFlag(0);
  436. activityRuleDao.save(ruleDO);
  437. }
  438. ActivityDO activityDO = activityDao.findOne(id);
  439. activityDO.setStatus(-1);
  440. activityDO.setCreateTime(new Date());
  441. activityDO.setUpdateTime(new Date());
  442. activityDO.setDelFlag(0);
  443. activityDao.save(activityDO);
  444. return envelop;
  445. }
  446. /**
  447. * 编辑活动:上、下线,推荐
  448. * @param id
  449. * @param type 操作类型:上线:0,下线:2,推荐:3,取消推荐:4
  450. * @return
  451. * @throws Exception
  452. */
  453. public ActivityDO editActivity(String id, String type) throws Exception {
  454. ActivityDO activityDO = activityDao.findOne(id);
  455. ActivityRuleDO activityRuleDO= activityRuleDao.selectByActivityId(id);
  456. if("3".equals(type)){
  457. //推荐
  458. List<ActivityDO> activityDOS = activityDao.findByIdAndRecommended(1);
  459. if (activityDOS!=null&& activityDOS.size()>=3){
  460. throw new Exception("只允许推荐三个!");
  461. }else {
  462. activityDO.setRecommended(1);
  463. }
  464. }else if("4".equals(type)){
  465. //取消推荐
  466. activityDO.setRecommended(0);
  467. }
  468. else if("2".equals(type)){
  469. //下线
  470. activityDO.setStatus(2);
  471. }else if("0".equals(type)){
  472. //判断该活动是不是竞走,只能存在一条有效竞走
  473. /*if("竞走".equals(activityDO.getType())){
  474. List<ActivityDO> lst= activityDao.findByIdAndType(activityDO.getType());
  475. if(null!=lst&&lst.size()>0){
  476. throw new Exception("已存在一条上线的竞走活动!");
  477. }
  478. }*/
  479. //上线
  480. if(null!=activityRuleDO){
  481. String ruleJson=activityRuleDO.getValue2();
  482. JSONObject obj=JSONObject.parseObject(ruleJson);
  483. // SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
  484. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  485. //报名截止时间
  486. String registrationTime1 = obj.getString("registrationTime");
  487. String[] str1 = registrationTime1.split(",");
  488. String s = null;
  489. if (str1.length==2) {
  490. s=str1[1];
  491. }else {
  492. s=str1[0];
  493. }
  494. Date registrationTime=(""!=s&&null!=s? sdf2.parse(s):null);
  495. //参与截止时间
  496. String deadLine2 = obj.getString("deadLine");
  497. String[] str2 = deadLine2.split(",");
  498. String s1= null;
  499. if (str2.length==2){
  500. s1=str2[1];
  501. }else {
  502. s1=str2[0];
  503. }
  504. Date deadLine=(null!=s1&&""!=s1? sdf2.parse(s1):null);
  505. //活动下线时间
  506. String activityOfflineTime1 = obj.getString("activityOfflineTime");
  507. String[] str = activityOfflineTime1.split(",");
  508. String s2= null;
  509. if (str.length==2){
  510. s2=str[1];
  511. }else {
  512. s2=str[0];
  513. }
  514. Date activityOfflineTime=(""!=s2&&null!=s2 ? sdf2.parse(s2):null);
  515. //获取当前时间
  516. Date now = DateUtil.strToDate(sdf2.format(new Date()),"yyyy-MM-dd HH:mm");
  517. if(null!=activityOfflineTime&&activityOfflineTime.compareTo(now)<=0){
  518. //活动下线
  519. activityDO.setStatus(2);
  520. }else if((null!=activityOfflineTime&&activityOfflineTime.compareTo(now)>0) && (null!=deadLine&&deadLine.compareTo(now)<=0)){
  521. //活动结束
  522. activityDO.setStatus(-1);
  523. }else if((null!=deadLine&&deadLine.compareTo(now)>0)&&(null!=registrationTime&&registrationTime.compareTo(now)<=0)){
  524. //活动未结束
  525. activityDO.setStatus(0);
  526. }else if (null!=registrationTime&&registrationTime.compareTo(now)>1){
  527. //报名未截止
  528. activityDO.setStatus(1);
  529. }else{
  530. //没有时间限制,上线
  531. activityDO.setStatus(0);
  532. }
  533. }else {
  534. throw new Exception("活动规则缺失!");
  535. }
  536. }
  537. // activityDO.setReleaseTime(new Date());
  538. activityDO= activityDao.save(activityDO);
  539. return activityDO;
  540. }
  541. /**
  542. * 根据活动id获取活动详情+规则
  543. * @param id
  544. * @return
  545. * @throws Exception
  546. */
  547. public JSONObject findActivityById(String id)throws Exception{
  548. JSONObject obj=new JSONObject();
  549. ActivityDO activityDO = activityDao.findOne(id);
  550. obj.put("jsonData",activityDO);
  551. ActivityRuleDO activityRuleDO=new ActivityRuleDO();
  552. if(null!=activityDO){
  553. activityRuleDO= activityRuleDao.selectByActivityId(id);
  554. activityDO.setActivityRuleDO(activityRuleDO);
  555. }
  556. obj.put("value1", null == activityRuleDO ? null : activityRuleDO.getValue1());
  557. obj.put("value2", null == activityRuleDO ? null : activityRuleDO.getValue2());
  558. obj.put("value3", null == activityRuleDO ? null : activityRuleDO.getValue3());
  559. return obj;
  560. }
  561. /**
  562. * 活动排名
  563. *
  564. * @param activityId
  565. * @param patient
  566. * @param page
  567. * @param size
  568. * @return
  569. */
  570. public MixEnvelop<JSONObject,JSONObject> selectActivityRanking(String activityId,String patient,Integer page,Integer size,String street,String town){
  571. MixEnvelop<JSONObject,JSONObject> envelop = new MixEnvelop<>();
  572. ActivityDO activityDO = activityDao.selectById(activityId);
  573. JSONObject jsonObject = new JSONObject();
  574. TaskPatientDetailDO taskPatientDetailDO1 = taskPatientDetailDao.selectByActivityIdAndPatientId(activityId,patient);
  575. //积分排行
  576. String sql ="SELECT btpd.patient_id AS patientId,btpd.total,btpd.create_time AS updateTime FROM ( SELECT sum(btpd.total) AS total, btpd.patient_id,btpd.create_time " +
  577. "FROM wlyy_health_bank_task_patient_detail btpd " +
  578. "WHERE btpd.activity_id = '"+activityId +
  579. "' GROUP BY btpd.patient_id " +
  580. " ) btpd " +
  581. "ORDER BY " +
  582. " btpd.total DESC,btpd.create_time ASC LIMIT " + (page-1)*size+","+size;
  583. List<TaskPatientDetailDO> patientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(TaskPatientDetailDO.class));
  584. long count=0L;
  585. int j =0;
  586. for (TaskPatientDetailDO taskPatientDetailDO:patientDetailDOS){
  587. String timeSeparated = DateUtils.getDatePoor(new Date(),taskPatientDetailDO.getUpdateTime());
  588. String goodsSql = "select * from wlyy_health_bank_exchange_goods where patient_id ='"+taskPatientDetailDO.getPatientId()+"' " +
  589. "and activity_goods_id in(select id from wlyy_health_bank_activity_goods where activity_id ='"+activityId+"')";
  590. List<ExchangeGoodsDO> exchangeGoodsDOS = jdbcTemplate.query(goodsSql,new BeanPropertyRowMapper<>(ExchangeGoodsDO.class));
  591. for (ExchangeGoodsDO exchangeGoodsDO :exchangeGoodsDOS){
  592. TaskGoodsDO taskGoodsDO = taskGoodsDao.selectById(exchangeGoodsDO.getActivityGoodsId());
  593. exchangeGoodsDO.setTaskGoodsDO(taskGoodsDO);
  594. }
  595. taskPatientDetailDO.setExchangeGoodsDO(exchangeGoodsDOS);
  596. taskPatientDetailDO.setTimeSeparated(timeSeparated);
  597. j++;
  598. if (taskPatientDetailDO.getPatientId().equals(patient)){
  599. count = j;
  600. }
  601. }
  602. //活动劵排行
  603. String sqlCoupon ="SELECT btpd.patient_id AS patientId,btpd.couponTotal,btpd.create_time AS updateTime FROM ( SELECT sum(btpd.coupon_total) AS couponTotal, btpd.patient_id,btpd.create_time " +
  604. "FROM wlyy_health_bank_task_patient_detail btpd " +
  605. "WHERE btpd.activity_id = '"+activityId +
  606. "' GROUP BY btpd.patient_id " +
  607. " ) btpd " +
  608. "ORDER BY " +
  609. " btpd.couponTotal DESC,btpd.create_time ASC LIMIT " + (page-1)*size+","+size;
  610. List<TaskPatientDetailDO> patientDetailDOS1 = jdbcTemplate.query(sqlCoupon,new BeanPropertyRowMapper<>(TaskPatientDetailDO.class));
  611. long count2 = 0l;
  612. int i=0;
  613. for (TaskPatientDetailDO taskPatientDetailDO:patientDetailDOS1){
  614. String timeSeparated = DateUtils.getDatePoor(new Date(),taskPatientDetailDO.getUpdateTime());
  615. String goodsSql = "select * from wlyy_health_bank_exchange_goods where patient_id ='"+taskPatientDetailDO.getPatientId()+"' " +
  616. "and activity_goods_id in(select id from wlyy_health_bank_activity_goods where activity_id ='"+activityId+"')";
  617. List<ExchangeGoodsDO> exchangeGoodsDOS = jdbcTemplate.query(goodsSql,new BeanPropertyRowMapper<>(ExchangeGoodsDO.class));
  618. for (ExchangeGoodsDO exchangeGoodsDO :exchangeGoodsDOS){
  619. TaskGoodsDO taskGoodsDO = taskGoodsDao.selectById(exchangeGoodsDO.getActivityGoodsId());
  620. exchangeGoodsDO.setTaskGoodsDO(taskGoodsDO);
  621. }
  622. i++;
  623. if (taskPatientDetailDO.getPatientId().equals(patient)){
  624. count2=i;
  625. }
  626. taskPatientDetailDO.setExchangeGoodsDO(exchangeGoodsDOS);
  627. taskPatientDetailDO.setTimeSeparated(timeSeparated);
  628. }
  629. //活动总积分排名
  630. /*String rankingSql1 = "SELECT count(1)+1 AS total FROM (SELECT " +
  631. " SUM(total) AS sum , " +
  632. " patient_id, " +
  633. " activity_id, " +
  634. " create_time "+
  635. " FROM " +
  636. " wlyy_health_bank_task_patient_detail htpd " +
  637. " where htpd.activity_id ='"+activityId+"' AND htpd.patient_id !='"+patient+
  638. "' GROUP BY patient_id )btpd1 " +
  639. "WHERE " +
  640. " btpd1.sum >= (SELECT SUM(s.total) as total " +
  641. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"') " +
  642. " AND btpd1.create_time >=(SELECT s.create_time " +
  643. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  644. List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(rankingSql1);
  645. Long count = 0L;
  646. if(rstotal1!=null&&rstotal1.size()>0){
  647. count = (Long) rstotal1.get(0).get("total");
  648. }*/
  649. Long countTotal = 0L;
  650. if ((count-2)>=0){
  651. countTotal = (count-2);
  652. }
  653. //排名前一个积分
  654. String rankingSql9 = "SELECT btpd1.sum as total FROM (SELECT " +
  655. " SUM(total) AS sum , " +
  656. " patient_id, " +
  657. " activity_id " +
  658. " FROM " +
  659. " wlyy_health_bank_task_patient_detail btpd where btpd.activity_id ='"+activityId+"' AND btpd.patient_id !='"+patient+
  660. "' GROUP BY patient_id )btpd1 " +
  661. "WHERE " +
  662. " btpd1.activity_id = '"+activityDO.getId()+"' AND btpd1.sum >= (SELECT SUM(s.total) as total " +
  663. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" +
  664. " limit "+countTotal+",1" ;
  665. List<Map<String,Object>> rstotal9 = jdbcTemplate.queryForList(rankingSql9);
  666. Integer total = 0;
  667. if(rstotal9!=null&&rstotal9.size()>0){
  668. total = Integer.parseInt(rstotal9.get(0).get("total").toString()) ;
  669. }
  670. String totalSql = " SELECT SUM(s.total) as total " +
  671. " FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"'";
  672. List<Map<String,Object>> rstotal10 = jdbcTemplate.queryForList(totalSql);
  673. Integer total1 = 0;
  674. if(rstotal10!=null&&rstotal10.size()>0){
  675. total1 = Integer.parseInt( rstotal10.get(0).get("total").toString());
  676. }
  677. //总活动劵的排名
  678. /*String rankingSql2 = "SELECT count(1)+1 AS total FROM (SELECT " +
  679. " SUM(coupon_total) AS sum , " +
  680. " patient_id, " +
  681. " activity_id," +
  682. " create_time " +
  683. "FROM " +
  684. " wlyy_health_bank_task_patient_detail htpd WHERE htpd.activity_id ='"+activityId+"' AND htpd.patient_id !='"+patient+
  685. "' GROUP BY patient_id )btpd1 " +
  686. "WHERE " +
  687. " btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  688. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')"+
  689. " AND btpd1.create_time >=(SELECT s.create_time " +
  690. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')";
  691. List<Map<String,Object>> rstotal2 = jdbcTemplate.queryForList(rankingSql2);
  692. Long count2 = 0L;
  693. if(rstotal2!=null&&rstotal2.size()>0){
  694. count2 = (Long) rstotal2.get(0).get("total");
  695. }*/
  696. Long countTotal1 = 0L;
  697. if ((count2-2)>=0){
  698. countTotal1=(count2-2);
  699. }
  700. //活动劵前一个活动劵
  701. String rankingSql10 = "SELECT btpd1.sum as total FROM (SELECT " +
  702. " SUM(coupon_total) AS sum , " +
  703. " patient_id, " +
  704. " activity_id "+
  705. "FROM " +
  706. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.activity_id ='"+activityId+"' AND btpd.patient_id !='"+patient+
  707. "' GROUP BY patient_id )btpd1 " +
  708. "WHERE " +
  709. " btpd1.sum >= (SELECT SUM(s.total) as total " +
  710. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" +
  711. " limit "+countTotal1+",1" ;
  712. List<Map<String,Object>> totalSql10 = jdbcTemplate.queryForList(rankingSql10);
  713. Integer total2 = 0;
  714. if(totalSql10!=null&&totalSql10.size()>0){
  715. total2 = Integer.parseInt(totalSql10.get(0).get("total").toString());
  716. }
  717. String totalSql1 = " SELECT SUM(s.coupon_total) as total " +
  718. " FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"'";
  719. List<Map<String,Object>> totalSql11 = jdbcTemplate.queryForList(totalSql1);
  720. Integer total3 = 0;
  721. if(totalSql11!=null&&totalSql11.size()>0){
  722. total3 = Integer.parseInt(totalSql11.get(0).get("total").toString());
  723. }
  724. //活动劵
  725. //街道
  726. String rankingSql3 ="SELECT btpd1.patientId, btpd1.total, btpd1.create_time AS updateTime FROM (SELECT btpd.patient_id AS patientId,btpd.total,btpd.create_time AS create_time FROM ( SELECT sum(btpd.total) AS total, btpd.patient_id,btpd.create_time " +
  727. "FROM wlyy_health_bank_task_patient_detail btpd " +
  728. "WHERE btpd.activity_id = '"+activityId +
  729. "' GROUP BY btpd.patient_id " +
  730. " ) btpd "+
  731. "ORDER BY " +
  732. " btpd.total DESC)btpd1 WHERE btpd1.patientId IN(SELECT p.code FROM wlyy.wlyy_patient p WHERE p.street = '"+street+"')"+" ORDER BY btpd1.create_time ";
  733. List<TaskPatientDetailDO> patientDetailDOS2 = jdbcTemplate.query(rankingSql3,new BeanPropertyRowMapper<>(TaskPatientDetailDO.class));
  734. long count3=0L;
  735. for (TaskPatientDetailDO taskPatientDetailDO:patientDetailDOS2){
  736. String timeSeparated = DateUtils.getDatePoor(new Date(),taskPatientDetailDO.getUpdateTime());
  737. String goodsSql = "select * from wlyy_health_bank_exchange_goods where patient_id ='"+taskPatientDetailDO.getPatientId()+"' " +
  738. "and activity_goods_id in(select id from wlyy_health_bank_activity_goods where activity_id ='"+activityId+"')";
  739. List<ExchangeGoodsDO> exchangeGoodsDOS = jdbcTemplate.query(goodsSql,new BeanPropertyRowMapper<>(ExchangeGoodsDO.class));
  740. for (ExchangeGoodsDO exchangeGoodsDO :exchangeGoodsDOS){
  741. TaskGoodsDO taskGoodsDO = taskGoodsDao.selectById(exchangeGoodsDO.getActivityGoodsId());
  742. exchangeGoodsDO.setTaskGoodsDO(taskGoodsDO);
  743. }
  744. taskPatientDetailDO.setExchangeGoodsDO(exchangeGoodsDOS);
  745. taskPatientDetailDO.setTimeSeparated(timeSeparated);
  746. if (!taskPatientDetailDO.getPatientId().equals(patient)){
  747. count3+=1;
  748. }
  749. }
  750. //区排名
  751. String rankingSql4 ="SELECT btpd1.patientId, btpd1.total, btpd1.create_time AS updateTime FROM (SELECT btpd.patient_id AS patientId,btpd.total,btpd.create_time AS create_time FROM ( SELECT sum(btpd.total) AS total, btpd.patient_id,btpd.create_time " +
  752. "FROM wlyy_health_bank_task_patient_detail btpd " +
  753. "WHERE btpd.activity_id = '"+activityId +
  754. "' GROUP BY btpd.patient_id " +
  755. " ) btpd "+
  756. "ORDER BY " +
  757. " btpd.total DESC)btpd1 WHERE btpd1.patientId IN(SELECT p.code FROM wlyy.wlyy_patient p WHERE p.town = '"+town+"')"+" ORDER BY btpd1.create_time ";
  758. List<TaskPatientDetailDO> patientDetailDOS3 = jdbcTemplate.query(rankingSql4,new BeanPropertyRowMapper<>(TaskPatientDetailDO.class));
  759. long count4=0L;
  760. for (TaskPatientDetailDO taskPatientDetailDO:patientDetailDOS3){
  761. String timeSeparated = DateUtils.getDatePoor(new Date(),taskPatientDetailDO.getUpdateTime());
  762. String goodsSql = "select * from wlyy_health_bank_exchange_goods where patient_id ='"+taskPatientDetailDO.getPatientId()+"' " +
  763. "and activity_goods_id in(select id from wlyy_health_bank_activity_goods where activity_id ='"+activityId+"')";
  764. List<ExchangeGoodsDO> exchangeGoodsDOS = jdbcTemplate.query(goodsSql,new BeanPropertyRowMapper<>(ExchangeGoodsDO.class));
  765. for (ExchangeGoodsDO exchangeGoodsDO :exchangeGoodsDOS){
  766. TaskGoodsDO taskGoodsDO = taskGoodsDao.selectById(exchangeGoodsDO.getActivityGoodsId());
  767. exchangeGoodsDO.setTaskGoodsDO(taskGoodsDO);
  768. }
  769. taskPatientDetailDO.setExchangeGoodsDO(exchangeGoodsDOS);
  770. taskPatientDetailDO.setTimeSeparated(timeSeparated);
  771. if (!taskPatientDetailDO.getPatientId().equals(patient)){
  772. count4+=1;
  773. }
  774. }
  775. //活动劵排名
  776. //街道
  777. String rankingSql5 ="SELECT btpd1.patientId, btpd1.couponTotal, btpd1.create_time AS updateTime FROM (SELECT btpd.patient_id AS patientId,btpd.couponTotal,btpd.create_time AS create_time FROM ( SELECT sum(btpd.coupon_total) AS couponTotal, btpd.patient_id,btpd.create_time " +
  778. "FROM wlyy_health_bank_task_patient_detail btpd " +
  779. "WHERE btpd.activity_id = '"+activityId +
  780. "' GROUP BY btpd.patient_id " +
  781. " ) btpd " +
  782. "ORDER BY " +
  783. " btpd.couponTotal DESC )btpd1 WHERE btpd1.patientId IN(SELECT p.code FROM wlyy.wlyy_patient p WHERE p.street = '"+street+"') ORDER BY btpd1.create_time ";
  784. List<TaskPatientDetailDO> patientDetailDOS4 = jdbcTemplate.query(rankingSql5,new BeanPropertyRowMapper<>(TaskPatientDetailDO.class));
  785. long count5 = 0l;
  786. for (TaskPatientDetailDO taskPatientDetailDO:patientDetailDOS4){
  787. String timeSeparated = DateUtils.getDatePoor(new Date(),taskPatientDetailDO.getUpdateTime());
  788. String goodsSql = "select * from wlyy_health_bank_exchange_goods where patient_id ='"+taskPatientDetailDO.getPatientId()+"' " +
  789. "and activity_goods_id in(select id from wlyy_health_bank_activity_goods where activity_id ='"+activityId+"')";
  790. List<ExchangeGoodsDO> exchangeGoodsDOS = jdbcTemplate.query(goodsSql,new BeanPropertyRowMapper<>(ExchangeGoodsDO.class));
  791. for (ExchangeGoodsDO exchangeGoodsDO :exchangeGoodsDOS){
  792. TaskGoodsDO taskGoodsDO = taskGoodsDao.selectById(exchangeGoodsDO.getActivityGoodsId());
  793. exchangeGoodsDO.setTaskGoodsDO(taskGoodsDO);
  794. }
  795. if (taskPatientDetailDO.getPatientId().equals(taskPatientDetailDO.getPatientId())){
  796. count5+=1;
  797. }
  798. taskPatientDetailDO.setExchangeGoodsDO(exchangeGoodsDOS);
  799. taskPatientDetailDO.setTimeSeparated(timeSeparated);
  800. }
  801. //区排名
  802. String rankingSql6 ="SELECT btpd1.patientId, btpd1.couponTotal, btpd1.create_time AS updateTime FROM (SELECT btpd.patient_id AS patientId,btpd.couponTotal,btpd.create_time AS create_time FROM ( SELECT sum(btpd.coupon_total) AS couponTotal, btpd.patient_id,btpd.create_time " +
  803. "FROM wlyy_health_bank_task_patient_detail btpd " +
  804. "WHERE btpd.activity_id = '"+activityId +
  805. "' GROUP BY btpd.patient_id " +
  806. " ) btpd " +
  807. "ORDER BY " +
  808. " btpd.couponTotal DESC )btpd1 WHERE btpd1.patientId IN(SELECT p.code FROM wlyy.wlyy_patient p WHERE p.town = '"+town+"') ORDER BY btpd1.create_time ";
  809. List<TaskPatientDetailDO> patientDetailDOS5 = jdbcTemplate.query(rankingSql6,new BeanPropertyRowMapper<>(TaskPatientDetailDO.class));
  810. long count6 = 0l;
  811. for (TaskPatientDetailDO taskPatientDetailDO:patientDetailDOS5){
  812. String timeSeparated = DateUtils.getDatePoor(new Date(),taskPatientDetailDO.getUpdateTime());
  813. String goodsSql = "select * from wlyy_health_bank_exchange_goods where patient_id ='"+taskPatientDetailDO.getPatientId()+"' " +
  814. "and activity_goods_id in(select id from wlyy_health_bank_activity_goods where activity_id ='"+activityId+"')";
  815. List<ExchangeGoodsDO> exchangeGoodsDOS = jdbcTemplate.query(goodsSql,new BeanPropertyRowMapper<>(ExchangeGoodsDO.class));
  816. for (ExchangeGoodsDO exchangeGoodsDO :exchangeGoodsDOS){
  817. TaskGoodsDO taskGoodsDO = taskGoodsDao.selectById(exchangeGoodsDO.getActivityGoodsId());
  818. exchangeGoodsDO.setTaskGoodsDO(taskGoodsDO);
  819. }
  820. if (taskPatientDetailDO.getPatientId().equals(taskPatientDetailDO.getPatientId())){
  821. count6+=1;
  822. }
  823. taskPatientDetailDO.setExchangeGoodsDO(exchangeGoodsDOS);
  824. taskPatientDetailDO.setTimeSeparated(timeSeparated);
  825. }
  826. //街道排名
  827. /* String rankingSql3 = "SELECT count(1)+1 AS total FROM (SELECT " +
  828. " SUM(btpd.coupon_total) AS sum , " +
  829. " btpd.patient_id, " +
  830. " btpd.activity_id," +
  831. " create_time " +
  832. "FROM " +
  833. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.activity_id ='"+activityId+"' AND btpd.patient_id !='"+patient+
  834. "' GROUP BY patient_id )btpd1 " +
  835. "WHERE btpd1.patient_id IN(SELECT p.code FROM wlyy.wlyy_patient p WHERE p.street = '"+street+"') AND btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  836. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')"+
  837. " AND btpd1.create_time >=(SELECT s.create_time " +
  838. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  839. List<Map<String,Object>> rstotal3 = jdbcTemplate.queryForList(rankingSql3);
  840. Long count3 = 0L;
  841. if(rstotal3!=null&&rstotal3.size()>0){
  842. count3 = (Long) rstotal3.get(0).get("total");
  843. }*/
  844. //区排名
  845. /* String rankingSql4 = "SELECT count(1)+1 AS total FROM (SELECT " +
  846. " SUM(btpd.coupon_total) AS sum , " +
  847. " btpd.patient_id, " +
  848. " btpd.activity_id," +
  849. " create_time " +
  850. "FROM " +
  851. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.activity_id ='"+activityId+"' AND btpd.patient_id !='"+patient+
  852. "' GROUP BY patient_id )btpd1 " +
  853. "WHERE btpd1.patient_id IN(SELECT p.code FROM wlyy.wlyy_patient p WHERE p.town = '"+town+"') AND btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  854. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')"+
  855. " AND btpd1.create_time >=(SELECT s.create_time " +
  856. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  857. List<Map<String,Object>> rstotal4 = jdbcTemplate.queryForList(rankingSql4);
  858. Long count4 = 0L;
  859. if(rstotal4!=null&&rstotal4.size()>0){
  860. count4= (Long) rstotal4.get(0).get("total");
  861. }*/
  862. //积分
  863. //街道排名
  864. /*String rankingSql5 = "SELECT count(1)+1 AS total FROM (SELECT " +
  865. " SUM(btpd.total) AS sum , " +
  866. " btpd.patient_id, " +
  867. " btpd.activity_id," +
  868. " create_time " +
  869. "FROM " +
  870. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.activity_id ='"+activityId+"' AND btpd.patient_id !='"+patient+
  871. "' GROUP BY patient_id )btpd1 " +
  872. "WHERE btpd1.patient_id IN(SELECT p.code FROM wlyy.wlyy_patient p WHERE p.street = '"+street+"') AND btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  873. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')"+
  874. " AND btpd1.create_time >=(SELECT s.create_time " +
  875. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  876. List<Map<String,Object>> rstotal5 = jdbcTemplate.queryForList(rankingSql5);
  877. Long count5 = 0L;
  878. if(rstotal5!=null&&rstotal5.size()>0){
  879. count5 = (Long) rstotal5.get(0).get("total");
  880. }
  881. //区排名
  882. String rankingSql6 = "SELECT count(1)+1 AS total FROM (SELECT " +
  883. " SUM(btpd.total) AS sum , " +
  884. " btpd.patient_id, " +
  885. " btpd.activity_id," +
  886. " create_time " +
  887. "FROM " +
  888. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.activity_id ='"+activityId+"' AND btpd.patient_id !='"+patient+
  889. "' GROUP BY patient_id )btpd1 " +
  890. "WHERE " +
  891. " btpd1.activity_id = '"+activityDO.getId()+"' and btpd1.patient_id IN(SELECT p.code FROM wlyy.wlyy_patient p WHERE p.town = '"+town+"') AND btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  892. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')"
  893. + " AND btpd1.create_time >=(SELECT s.create_time " +
  894. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  895. List<Map<String,Object>> rstotal6 = jdbcTemplate.queryForList(rankingSql6);
  896. Long count6 = 0L;
  897. if(rstotal6!=null&&rstotal6.size()>0){
  898. count6= (Long) rstotal6.get(0).get("total");
  899. }
  900. */
  901. //团队排名
  902. String rankingSql7 = "SELECT count(1)+1 AS total FROM (SELECT " +
  903. " SUM(btpd.total) AS sum , " +
  904. " btpd.patient_id, " +
  905. " btpd.activity_id," +
  906. " create_time " +
  907. "FROM " +
  908. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.activity_id ='"+activityId+"' AND btpd.patient_id !='"+patient+
  909. "' GROUP BY patient_id )btpd1 " +
  910. "WHERE btpd1.patient_id IN(SELECT sf.patient FROM wlyy.wlyy_sign_family sf WHERE sf.status=1 " +
  911. "AND sf.admin_team_code=(SELECT sf.admin_team_code FROM wlyy.wlyy_sign_family sf WHERE sf.status=1 AND sf.patient='"+patient+"') ) AND btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  912. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')"+
  913. " AND btpd1.create_time >=(SELECT s.create_time " +
  914. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  915. List<Map<String,Object>> rstotal7 = jdbcTemplate.queryForList(rankingSql7);
  916. Long count7 = 0L;
  917. if(rstotal7!=null&&rstotal7.size()>0){
  918. count7 = (Long) rstotal7.get(0).get("total");
  919. }
  920. //区排名
  921. String rankingSql8 = "SELECT count(1)+1 AS total FROM (SELECT " +
  922. " SUM(btpd.total) AS sum , " +
  923. " btpd.patient_id, " +
  924. " btpd.activity_id," +
  925. " create_time " +
  926. "FROM " +
  927. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.activity_id ='"+activityId+"' AND btpd.patient_id !='"+patient+
  928. "' GROUP BY patient_id )btpd1 " +
  929. "WHERE btpd1.patient_id IN(SELECT sf.patient FROM wlyy.wlyy_sign_family sf WHERE sf.status=1 " +
  930. "AND sf.admin_team_code=(SELECT sf.admin_team_code FROM wlyy.wlyy_sign_family sf WHERE sf.status=1 AND sf.patient='"+patient+"') ) AND btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  931. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" +
  932. " AND btpd1.create_time >=(SELECT s.create_time " +
  933. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  934. List<Map<String,Object>> rstotal8 = jdbcTemplate.queryForList(rankingSql8);
  935. Long count8 = 0L;
  936. if(rstotal8!=null&&rstotal8.size()>0){
  937. count8 = (Long) rstotal8.get(0).get("total");
  938. }
  939. /* //活动劵
  940. String rankingSql4 = "SELECT count(1)+1 AS total FROM (SELECT " +
  941. " SUM(coupon_total) AS sum , " +
  942. " patient_id, " +
  943. " activity_id " +
  944. "FROM " +
  945. " wlyy_health_bank_task_patient_detail " +
  946. "GROUP BY patient_id )btpd1 " +
  947. "WHERE " +
  948. " btpd1.activity_id = '"+activityDO.getId()+"'"+buffer+" AND btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  949. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  950. List<Map<String,Object>> rstotal4 = jdbcTemplate.queryForList(rankingSql4);
  951. Long count4 = 0L;
  952. if(rstotal4!=null&&rstotal4.size()>0){
  953. count4= (Long) rstotal4.get(0).get("total");
  954. }
  955. //积分
  956. String rankingSql5 = "SELECT count(1)+1 AS total FROM (SELECT " +
  957. " SUM(total) AS sum , " +
  958. " patient_id, " +
  959. " activity_id " +
  960. "FROM " +
  961. " wlyy_health_bank_task_patient_detail " +
  962. "GROUP BY patient_id )btpd1 " +
  963. "WHERE " +
  964. " btpd1.activity_id = '"+activityDO.getId()+"'"+buffer+" AND btpd1.sum >= (SELECT SUM(s.total) as total " +
  965. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  966. List<Map<String,Object>> rstotal5 = jdbcTemplate.queryForList(rankingSql5);
  967. Long count5 = 0L;
  968. if(rstotal5!=null&&rstotal5.size()>0){
  969. count5 = (Long) rstotal5.get(0).get("total");
  970. }
  971. String rankingSql6 = "SELECT count(1)+1 AS total FROM (SELECT " +
  972. " SUM(total) AS sum , " +
  973. " patient_id, " +
  974. " activity_id " +
  975. "FROM " +
  976. " wlyy_health_bank_task_patient_detail " +
  977. "GROUP BY patient_id )btpd1 " +
  978. "WHERE " +
  979. " btpd1.activity_id = '"+activityDO.getId()+"'"+buffer+" AND btpd1.sum >= (SELECT SUM(s.total) as total " +
  980. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+activityId+"')" ;
  981. List<Map<String,Object>> rstotal6 = jdbcTemplate.queryForList(rankingSql6);
  982. Long count6 = 0L;
  983. if(rstotal6!=null&&rstotal6.size()>0){
  984. count6= (Long) rstotal6.get(0).get("total");
  985. }*/
  986. ActivityRuleDO activityRuleDO = activityRuleDao.selectByActivityId(activityId);
  987. JSONObject object = JSONObject.parseObject(activityRuleDO.getValue1());
  988. Integer type = object.getInteger("type");
  989. if (type == 2){
  990. jsonObject.put("activityTownCouponRanking",count6);//活动劵全区排名
  991. jsonObject.put("activityStreetCouponRanking",count5);//活动劵街道排名
  992. jsonObject.put("activityCouponRanking",count2);//活动劵的排名
  993. jsonObject.put("couponTotal",taskPatientDetailDO1.getCouponTotal());//本人活动劵总数
  994. jsonObject.put("couponRanking",patientDetailDOS1);//活动劵人数排名
  995. jsonObject.put("signCouponRanking",count7);//活动劵团队排名
  996. if (count2 ==1){
  997. jsonObject.put("differTotal",0);
  998. }else {
  999. jsonObject.put("differTotal",total2-total3);//相距前一个差多少活动劵
  1000. }
  1001. }else if (type ==1){
  1002. jsonObject.put("IntegrateRanking",patientDetailDOS);
  1003. jsonObject.put("activityStreetIntegrateRanking",count3);//积分街道排名
  1004. jsonObject.put("total",taskPatientDetailDO1.getTotal());//本人总积分
  1005. jsonObject.put("activityTownIntegrateRanking",count4);//积分全区排名
  1006. jsonObject.put("activityRanking",count);//积分排名
  1007. jsonObject.put("signRanking",count8);//积分团队排名
  1008. if (count==1){
  1009. jsonObject.put("differTotal",0);//相距前一个差多少积分
  1010. }else {
  1011. jsonObject.put("differTotal",total-total1);//相距前一个差多少积分
  1012. }
  1013. }
  1014. jsonObject.put("type",type);//积分还是活动劵
  1015. envelop.setObj(jsonObject);
  1016. return envelop;
  1017. }
  1018. public JSONObject findActivityByType(String type){
  1019. JSONObject object=new JSONObject();
  1020. List<String> types = Arrays.asList(type.split(","));
  1021. for(String str:types){
  1022. List<ActivityDO> lst= activityDao.findByIdAndType(str);
  1023. if(null!=lst&&lst.size()>0){
  1024. object.put(str,true);
  1025. }else {
  1026. object.put(str,false);
  1027. }
  1028. }
  1029. return object;
  1030. }
  1031. public JSONObject ListActivityDO(String type, String status,String crowdType,String releaseTime,String activityOfflineTime, String filter,Integer page,Integer size)throws ParseException {
  1032. JSONObject obj=new JSONObject();
  1033. StringBuffer stringBuffer=new StringBuffer();
  1034. if (StringUtils.isNotEmpty(type)) {
  1035. stringBuffer.append(" and type='").append(type).append("'");
  1036. }
  1037. if (StringUtils.isNotEmpty(filter)) {
  1038. stringBuffer.append(" and (title like '%").append(filter).append("%' or ").append("organizer like '%").append(filter).append("%' or ").append("area_name like '%").append(filter).append("%')");
  1039. }
  1040. if (null != status && "2".equals(status) ) {
  1041. stringBuffer.append(" and status in (-1,2) ");
  1042. } else if (null != status && "1".equals(status) ) {
  1043. stringBuffer.append(" and status in (0,1) ");
  1044. }
  1045. if(null!=crowdType&&StringUtils.isNotBlank(crowdType)){
  1046. stringBuffer.append(" and crowd_type="+crowdType);
  1047. }
  1048. if(StringUtils.isNotBlank(releaseTime)){
  1049. stringBuffer.append(" and activity_offline_time>='"+releaseTime+" 00:00:00' ");
  1050. }
  1051. if(StringUtils.isNotBlank(activityOfflineTime)){
  1052. stringBuffer.append(" and activity_offline_time<='"+ activityOfflineTime+" 59:59:59' ");
  1053. }
  1054. stringBuffer.append(" order by create_time desc");
  1055. String sql = "SELECT * FROM wlyy_health_bank.wlyy_health_bank_activity WHERE 1=1 AND del_flag=1 "+stringBuffer.toString()+" LIMIT "+(page-1)*size+","+size;
  1056. List<ActivityDO> activityDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  1057. String sqlcount = "SELECT COUNT(1) AS total FROM wlyy_health_bank.wlyy_health_bank_activity WHERE 1=1 AND del_flag=1 "+stringBuffer.toString();
  1058. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  1059. Long count = 0L;
  1060. if(rstotal!=null&&rstotal.size()>0){
  1061. count = (Long) rstotal.get(0).get("total");
  1062. }
  1063. obj .put("activityDOList",activityDOList);
  1064. obj .put("count",count);
  1065. return obj;
  1066. }
  1067. /**
  1068. * 查询排序
  1069. *
  1070. * @return
  1071. */
  1072. public List<ActivityDO> select(){
  1073. return activityDao.selectBySort();
  1074. }
  1075. /**
  1076. * 调整活动的顺序
  1077. *
  1078. * @param array
  1079. * @return
  1080. */
  1081. public MixEnvelop updateSort(JSONArray array){
  1082. MixEnvelop envelop = new MixEnvelop();
  1083. for (int i=0;i<array.size();i++){
  1084. JSONObject jsonObject = array.getJSONObject(i);
  1085. ActivityDO activityDO = activityDao.selectById(jsonObject.getString("id"));
  1086. activityDO.setSort(jsonObject.getInteger("sort"));
  1087. activityDao.save(activityDO);
  1088. }
  1089. envelop.setObj(true);
  1090. return envelop;
  1091. }
  1092. /**
  1093. * 查询参与的竟步走活动
  1094. *
  1095. * @param unionId
  1096. * @param patient
  1097. * @param page
  1098. * @param size
  1099. * @return
  1100. */
  1101. public MixEnvelop<ActivityDO,ActivityDO> selectByUnionId(String unionId,String patient,String idCard,Integer page,Integer size){
  1102. String sql ="select hba.* from wlyy_health_bank_activity hba right join wlyy_health_bank_task_patient_detail htpd on htpd.activity_id=hba.id " +
  1103. "AND htpd.union_id='"+unionId+"' AND htpd.patient_id ='"+patient+"' and htpd.patient_idcard ='"+idCard+"' " +
  1104. "where hba.del_flag=1 and hba.type='竞走' order by hba.create_time desc LIMIT " + (page-1)*size+","+size;
  1105. List<ActivityDO> activityDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  1106. for (ActivityDO activityDO:activityDOList){
  1107. ActivityRuleDO activityRuleDO = activityRuleDao.selectByActivityId(activityDO.getId());
  1108. JSONObject object = JSONObject.parseObject(activityRuleDO.getValue2());
  1109. String activityOfflineTime = object.getString("activityOfflineTime");
  1110. List<String> idList = Arrays.asList(activityOfflineTime.split(","));
  1111. if (idList !=null && idList.size()!=0){
  1112. String startTime = idList.get(0);
  1113. String endTime = idList.get(1);
  1114. String nowTime = DateUtil.dateToStrLong(DateUtil.getNowDate());
  1115. if((startTime.compareTo(nowTime)==-1&&endTime.compareTo(nowTime)==1)||startTime.compareTo(nowTime)==0||endTime.compareTo(nowTime)==0){
  1116. activityDO.setFlag(1);
  1117. }else {
  1118. activityDO.setFlag(0);
  1119. }
  1120. }
  1121. activityDO.setActivityRuleDO(activityRuleDO);
  1122. List<TaskDO> taskDOS = taskDao.selectByActivityId(activityDO.getId());
  1123. if (taskDOS!=null&&taskDOS.size()!=0){
  1124. activityDO.setTaskDOS(taskDOS);
  1125. String sqlCount1 = "select sum(integrate) as total from wlyy_health_bank_credits_detail where transaction_id='"+taskDOS.get(0).getId()+"' and patient_id = '"+patient+"'" +
  1126. "and create_time >= '"+DateUtils.getDayBegin()+"' and create_time <='"+DateUtils.getDayEnd()+"'";
  1127. List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(sqlCount1);
  1128. Long count1 = 0L;
  1129. if(rstotal1!=null&&rstotal1.size()>0){
  1130. Object count = rstotal1.get(0).get("total");
  1131. if (count!=null&&count!=""){
  1132. count1 =Long.parseLong(count.toString()) ;
  1133. }
  1134. }
  1135. activityDO.setNowTotal(count1);
  1136. }
  1137. }
  1138. String sqlCount ="select count(1) AS total from wlyy_health_bank_activity hba right join wlyy_health_bank_task_patient_detail htpd on htpd.activity_id=hba.id " +
  1139. "where hba.del_flag=1 and hba.type='竞走' order by hba.create_time desc ";
  1140. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
  1141. Long count = 0L;
  1142. if(rstotal!=null&&rstotal.size()>0){
  1143. count = (Long) rstotal.get(0).get("total");
  1144. }
  1145. return MixEnvelop.getSuccessListWithPage(HealthBankMapping.api_success,activityDOList,page,size,count);
  1146. }
  1147. /**
  1148. * 获取当前居民参加的活动
  1149. *
  1150. * @param unionId
  1151. * @param patient
  1152. * @param idCard
  1153. * @return
  1154. */
  1155. public List<ActivityDO> selectNowByUnionId(String unionId,String patient,String idCard){
  1156. String sql ="select hba.* from wlyy_health_bank_activity hba right join wlyy_health_bank_task_patient_detail htpd on htpd.activity_id=hba.id " +
  1157. "AND htpd.union_id='"+unionId+"' AND htpd.patient_id ='"+patient+"' and htpd.patient_idcard ='"+idCard+"' " +
  1158. "where hba.del_flag=1 and hba.type='竞走' order by hba.create_time desc " ;
  1159. List<ActivityDO> activityDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  1160. List<ActivityDO> activityDOS = new ArrayList<>();
  1161. for (ActivityDO activityDO:activityDOList){
  1162. ActivityRuleDO activityRuleDO = activityRuleDao.selectByActivityId(activityDO.getId());
  1163. JSONObject object = JSONObject.parseObject(activityRuleDO.getValue2());
  1164. String activityOfflineTime = object.getString("activityOfflineTime");
  1165. List<String> idList = Arrays.asList(activityOfflineTime.split(","));
  1166. activityDO.setActivityRuleDO(activityRuleDO);
  1167. List<TaskDO> taskDOS = taskDao.selectByActivityId(activityDO.getId());
  1168. if (taskDOS!=null&&taskDOS.size()!=0){
  1169. activityDO.setTaskDOS(taskDOS);
  1170. }
  1171. if (idList !=null && idList.size()!=0){
  1172. String startTime = idList.get(0);
  1173. String endTime = idList.get(1);
  1174. String nowTime = DateUtil.dateToStrLong(DateUtil.getNowDate());
  1175. if((startTime.compareTo(nowTime)==-1&&endTime.compareTo(nowTime)==1)||startTime.compareTo(nowTime)==0||endTime.compareTo(nowTime)==0){
  1176. activityDO.setFlag(1);
  1177. activityDOS.add(activityDO);
  1178. }
  1179. }
  1180. }
  1181. return activityDOS;
  1182. }
  1183. /**
  1184. * 小程序活动排名
  1185. *
  1186. * @param patients
  1187. * @param taskId
  1188. * @param size
  1189. * @return
  1190. */
  1191. public JSONObject selectAppletsRanking(JSONArray patients,String taskId,Integer size,String patient){
  1192. StringBuffer buffer = new StringBuffer();
  1193. if (patients!= null&&patients.size()!=0){
  1194. buffer.append("and bcd.patient_id IN(");
  1195. for (int i=0;i<patients.size();i++){
  1196. buffer.append("'"+patients.getString(i)+"',");
  1197. }
  1198. buffer.deleteCharAt(buffer.length()-1);
  1199. buffer.append(") ");
  1200. }
  1201. String sql = "SELECT @rownum :=@rownum + 1 AS rank, r.sum, r.patient_id AS patient FROM " +
  1202. "(SELECT@rowNum := 0) b," +
  1203. " (SELECT count(bcd.integrate) AS sum, bcd.patient_id, bcd.create_time FROM wlyy_health_bank_credits_detail bcd " +
  1204. "WHERE bcd.transaction_id = '"+taskId+"' " +buffer+
  1205. "GROUP BY bcd.patient_id) r ORDER BY r.sum DESC,r.create_time DESC LIMIT 0,"+size;
  1206. List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
  1207. String sql1= "select s.rank,s.sum,s.patient_id from (SELECT @rownum :=@rownum + 1 AS rank, r.sum, r.patient_id FROM " +
  1208. "(SELECT@rowNum := 0) b," +
  1209. " (SELECT count(bcd.integrate) AS sum, bcd.patient_id, bcd.create_time FROM wlyy_health_bank_credits_detail bcd\n" +
  1210. "WHERE bcd.transaction_id = '"+taskId+"' " +buffer+
  1211. "GROUP BY bcd.patient_id) r ORDER BY r.sum DESC,r.create_time DESC)s where s.patient_id ='"+patient+"'";
  1212. List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql1);
  1213. JSONObject object = new JSONObject();
  1214. object.put("list",list);
  1215. if (list1!=null&&list1.size()!=0){
  1216. object.put("patient",list1.get(0));
  1217. }else {
  1218. object.put("patient",null);
  1219. }
  1220. return object;
  1221. }
  1222. }