ActivityService.java 64 KB

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