ActivityService.java 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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.TaskDO;
  8. import com.yihu.jw.entity.health.bank.TaskPatientDetailDO;
  9. import com.yihu.jw.restmodel.common.Envelop;
  10. import com.yihu.jw.rm.health.bank.HealthBankMapping;
  11. import com.yihu.jw.util.ISqlUtils;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  14. import org.springframework.jdbc.core.JdbcTemplate;
  15. import org.springframework.stereotype.Service;
  16. import javax.transaction.Transactional;
  17. import java.text.ParseException;
  18. import java.util.Date;
  19. import java.util.List;
  20. import java.util.Map;
  21. /**
  22. * @author wangzhinan
  23. * @create 2018-04-27 14:38
  24. * @desc health activity Service
  25. **/
  26. @Service
  27. @Transactional
  28. public class ActivityService extends BaseJpaService<ActivityDO,ActivityDao> {
  29. @Autowired
  30. private ActivityDao activityDao;
  31. @Autowired
  32. private JdbcTemplate jdbcTemplate;
  33. /**
  34. * insert activityDO
  35. *
  36. * @param activityDO 活动参数对象
  37. * @return
  38. */
  39. public Envelop<Boolean> insert(ActivityDO activityDO){
  40. activityDO.setCreateTime(new Date());
  41. activityDO.setUpdateTime(new Date());
  42. activityDao.save(activityDO);
  43. Envelop<Boolean> envelop = new Envelop<>();
  44. envelop.setObj(true);
  45. return envelop;
  46. }
  47. /**
  48. * find by condition
  49. *
  50. * @param activityDO 活动参数对象
  51. * @param page 页码
  52. * @param size 每页大小
  53. * @return
  54. * @throws ParseException
  55. */
  56. public Envelop<ActivityDO> findByCondition(ActivityDO activityDO,Integer page, Integer size) throws ParseException {
  57. String sql = new ISqlUtils().getSql(activityDO,page,size,"*");
  58. List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  59. for (ActivityDO activityDO1:activityDOS){
  60. String taskSql = "SELECT" +
  61. " COUNT(1) AS total1 " +
  62. "FROM " +
  63. " ( " +
  64. " SELECT DISTINCT " +
  65. " (btpd.patient_openid) " +
  66. " FROM " +
  67. " wlyy_health_bank_task_patient_detail btpd " +
  68. " WHERE " +
  69. " activity_id = '" +activityDO1.getId()+
  70. "' ) btpd1";
  71. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(taskSql);
  72. Long count = 0L;
  73. if(rstotal!=null&&rstotal.size()>0){
  74. count = (Long) rstotal.get(0).get("total1");
  75. }
  76. activityDO1.setTotal(count);
  77. String taskSql1 = "select * from wlyy_health_bank_task_patient_detail btpd where activity_id = '"+activityDO1.getId()
  78. +"' and (patient_idcard = '"+activityDO.getPatientIdcard()+"' OR union_id = '"+activityDO.getUnionId()+"')";
  79. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  80. activityDO1.setTaskPatientDetailDOS(taskPatientDetailDOS);
  81. String tasksql = "select * from wlyy_health_bank_task where transaction_id = '"+activityDO1.getId()+"'";
  82. List<TaskDO> taskDOList = jdbcTemplate.query(tasksql,new BeanPropertyRowMapper(TaskDO.class));
  83. activityDO1.setTaskDOS(taskDOList);
  84. }
  85. String sqlcount = new ISqlUtils().getSql(activityDO,0,0,"count");
  86. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  87. Long count = 0L;
  88. if(rstotal!=null&&rstotal.size()>0){
  89. count = (Long) rstotal.get(0).get("total");
  90. }
  91. return Envelop.getSuccessListWithPage(HealthBankMapping.api_success,activityDOS,page,size,count);
  92. }
  93. /**
  94. * update activityDO
  95. *
  96. * @param activityDO 活动参数对象
  97. * @return
  98. */
  99. public Envelop<Boolean> update(ActivityDO activityDO){
  100. activityDao.save(activityDO);
  101. Envelop<Boolean> envelop = new Envelop<>();
  102. envelop.setObj(true);
  103. return envelop;
  104. }
  105. /**
  106. * 获取参与的活动
  107. *
  108. * @param activityDO 活动对象
  109. * @param page 页码
  110. * @param size 分页大小
  111. * @return
  112. */
  113. public Envelop<ActivityDO> selectByPatient(ActivityDO activityDO,Integer page,Integer size){
  114. String sql ="SELECT * " +
  115. " FROM wlyy_health_bank_activity " +
  116. "WHERE " +
  117. "id IN ( " +
  118. "SELECT bt.transaction_id " +
  119. "FROM wlyy_health_bank_task bt " +
  120. "WHERE id IN (" +
  121. " SELECT task_id FROM " +
  122. "wlyy_health_bank_task_patient_detail" +
  123. " WHERE " +
  124. " patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"')" +
  125. " )" +
  126. " LIMIT "+(page-1)*size +","+size;
  127. List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
  128. for (ActivityDO activityDO1:activityDOS){
  129. String activitySql ="SELECT btpd1.sum AS total FROM (SELECT " +
  130. " SUM(total) AS sum , " +
  131. " patient_id, " +
  132. " patient_openid, " +
  133. " patient_idcard, " +
  134. " activity_id," +
  135. " union_id " +
  136. " FROM " +
  137. " wlyy_health_bank_task_patient_detail " +
  138. "GROUP BY patient_openid,patient_idcard,union_id)btpd1 " +
  139. "WHERE " +
  140. " btpd1.activity_id = '"+activityDO1.getId() +"' AND patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"'";
  141. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(activitySql);
  142. Long count = 0L;
  143. if(rstotal!=null&&rstotal.size()>0){
  144. Object object = rstotal.get(0).get("total");
  145. count = Long.parseLong(object.toString());
  146. }
  147. activityDO1.setSum(count);
  148. String rankingSql = "SELECT count(1)+1 AS total FROM (SELECT " +
  149. " SUM(total) AS sum , " +
  150. " patient_id, " +
  151. " patient_openid, " +
  152. " patient_idcard, " +
  153. " activity_id " +
  154. "FROM " +
  155. " wlyy_health_bank_task_patient_detail " +
  156. "GROUP BY patient_openid,patient_idcard,union_id)btpd1 " +
  157. "WHERE " +
  158. " btpd1.activity_id = '"+activityDO1.getId()+"' AND btpd1.sum >" +activityDO1.getSum() ;
  159. List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(rankingSql);
  160. Integer count1 = 0;
  161. if(rstotal1!=null&&rstotal1.size()>0){
  162. Object object = rstotal1.get(0).get("total");
  163. count1 = Integer.parseInt(object.toString());
  164. }
  165. activityDO1.setActivityRanking(count1);
  166. String taskSql = "SELECT" +
  167. " COUNT(1) AS total1 " +
  168. "FROM " +
  169. " ( " +
  170. " SELECT * " +
  171. " FROM " +
  172. " wlyy_health_bank_task_patient_detail btpd " +
  173. " WHERE " +
  174. " activity_id = '" +activityDO1.getId()+
  175. "' GROUP BY patient_openid,patient_idcard,union_id) btpd1";
  176. List<Map<String,Object>> rstotal2 = jdbcTemplate.queryForList(taskSql);
  177. Long count2 = 0L;
  178. if(rstotal2!=null&&rstotal2.size()>0){
  179. count2 = (Long) rstotal2.get(0).get("total1");
  180. }
  181. activityDO1.setTotal(count2);
  182. }
  183. String sqlcount = "SELECT count(1) AS total" +
  184. " FROM wlyy_health_bank_activity " +
  185. "WHERE " +
  186. "id IN ( " +
  187. "SELECT bt.transaction_id " +
  188. "FROM wlyy_health_bank_task bt " +
  189. "WHERE id IN (" +
  190. " SELECT task_id FROM " +
  191. "wlyy_health_bank_task_patient_detail" +
  192. " WHERE " +
  193. " patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"' )" +
  194. " )";
  195. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  196. Long count = 0L;
  197. if(rstotal!=null&&rstotal.size()>0){
  198. count = (Long) rstotal.get(0).get("total");
  199. }
  200. return Envelop.getSuccessListWithPage(HealthBankMapping.api_success,activityDOS,page,size,count);
  201. }
  202. }