ActivityService.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.yihu.jw.service;/**
  2. * Created by nature of king on 2018/4/27.
  3. */
  4. import com.yihu.base.mysql.query.BaseJpaService;
  5. import com.yihu.jw.dao.ActivityDao;
  6. import com.yihu.jw.entity.health.bank.ActivityDO;
  7. import com.yihu.jw.entity.health.bank.TaskPatientDetailDO;
  8. import com.yihu.jw.restmodel.common.Envelop;
  9. import com.yihu.jw.rm.health.bank.HealthBankMapping;
  10. import com.yihu.jw.util.ISqlUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  13. import org.springframework.jdbc.core.JdbcTemplate;
  14. import org.springframework.stereotype.Service;
  15. import javax.transaction.Transactional;
  16. import java.text.ParseException;
  17. import java.util.Date;
  18. import java.util.List;
  19. import java.util.Map;
  20. /**
  21. * @author wangzhinan
  22. * @create 2018-04-27 14:38
  23. * @desc health activity Service
  24. **/
  25. @Service
  26. @Transactional
  27. public class ActivityService extends BaseJpaService<ActivityDO,ActivityDao> {
  28. @Autowired
  29. private ActivityDao activityDao;
  30. @Autowired
  31. private JdbcTemplate jdbcTemplate;
  32. /**
  33. * insert activityDO
  34. *
  35. * @param activityDO 活动参数对象
  36. * @return
  37. */
  38. public Envelop<Boolean> insert(ActivityDO activityDO){
  39. activityDO.setCreateTime(new Date());
  40. activityDO.setUpdateTime(new Date());
  41. activityDao.save(activityDO);
  42. Envelop<Boolean> envelop = new Envelop<>();
  43. envelop.setObj(true);
  44. return envelop;
  45. }
  46. /**
  47. * find by condition
  48. *
  49. * @param activityDO 活动参数对象
  50. * @param page 页码
  51. * @param size 每页大小
  52. * @return
  53. * @throws ParseException
  54. */
  55. public Envelop<ActivityDO> findByCondition(ActivityDO activityDO,Integer page, Integer size) throws ParseException {
  56. String sql = new ISqlUtils().getSql(activityDO,page,size,"*");
  57. List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  58. for (ActivityDO activityDO1:activityDOS){
  59. String taskSql = "SELECT" +
  60. " COUNT(1) AS total1 " +
  61. "FROM " +
  62. " ( " +
  63. " SELECT DISTINCT " +
  64. " (btpd.patient_openid) " +
  65. " FROM " +
  66. " wlyy_health_bank_task_patient_detail btpd " +
  67. " WHERE " +
  68. " activity_id = '" +activityDO1.getId()+
  69. "' ) btpd1";
  70. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(taskSql);
  71. Long count = 0L;
  72. if(rstotal!=null&&rstotal.size()>0){
  73. count = (Long) rstotal.get(0).get("total1");
  74. }
  75. activityDO1.setTotal(count);
  76. String taskSql1 = "select * from wlyy_health_bank_task_patient_detail btpd where activity_id = '"+activityDO1.getId()
  77. +"' and patient_openid = '"+activityDO.getOpenId()+"'";
  78. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  79. activityDO1.setTaskPatientDetailDOS(taskPatientDetailDOS);
  80. }
  81. String sqlcount = new ISqlUtils().getSql(activityDO,0,0,"count");
  82. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  83. Long count = 0L;
  84. if(rstotal!=null&&rstotal.size()>0){
  85. count = (Long) rstotal.get(0).get("total");
  86. }
  87. return Envelop.getSuccessListWithPage(HealthBankMapping.api_success,activityDOS,page,size,count);
  88. }
  89. /**
  90. * update activityDO
  91. *
  92. * @param activityDO 活动参数对象
  93. * @return
  94. */
  95. public Envelop<Boolean> update(ActivityDO activityDO){
  96. activityDao.save(activityDO);
  97. Envelop<Boolean> envelop = new Envelop<>();
  98. envelop.setObj(true);
  99. return envelop;
  100. }
  101. /**
  102. * 获取参与的活动
  103. *
  104. * @param activityDO 活动对象
  105. * @param page 页码
  106. * @param size 分页大小
  107. * @return
  108. */
  109. public Envelop<ActivityDO> selectByPatient(ActivityDO activityDO,Integer page,Integer size){
  110. String sql ="SELECT * " +
  111. " FROM wlyy_health_bank_activity " +
  112. "WHERE " +
  113. "id IN ( " +
  114. "SELECT bt.transaction_id " +
  115. "FROM wlyy_health_bank_task bt " +
  116. "WHERE id IN (" +
  117. " SELECT task_id FROM " +
  118. "wlyy_health_bank_task_patient_detail" +
  119. " WHERE " +
  120. " patient_openid = '"+activityDO.getOpenId()+ "' )" +
  121. " )" +
  122. " LIMIT "+(page-1)*size +","+size;
  123. List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  124. String sqlcount = "SELECT count(1) AS total" +
  125. " FROM wlyy_health_bank_activity " +
  126. "WHERE " +
  127. "id IN ( " +
  128. "SELECT bt.transaction_id " +
  129. "FROM wlyy_health_bank_task bt " +
  130. "WHERE id IN (" +
  131. " SELECT task_id FROM " +
  132. "wlyy_health_bank_task_patient_detail" +
  133. " WHERE " +
  134. " patient_openid = '"+activityDO.getOpenId()+ "' )" +
  135. " )";
  136. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  137. Long count = 0L;
  138. if(rstotal!=null&&rstotal.size()>0){
  139. count = (Long) rstotal.get(0).get("total");
  140. }
  141. return Envelop.getSuccessListWithPage(HealthBankMapping.api_success,activityDOS,page,size,count);
  142. }
  143. }