CreditsDetailService.java 74 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336
  1. package com.yihu.jw.service;/**
  2. * Created by nature of king on 2018/4/27.
  3. */
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.yihu.jw.dao.*;
  7. import com.yihu.jw.entity.health.bank.*;
  8. import com.yihu.jw.restmodel.web.MixEnvelop;
  9. import com.yihu.jw.rm.health.bank.HealthBankMapping;
  10. import com.yihu.jw.util.DateUtils;
  11. import com.yihu.jw.util.ISqlUtils;
  12. import com.yihu.jw.util.date.DateUtil;
  13. import com.yihu.mysql.query.BaseJpaService;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.data.redis.core.StringRedisTemplate;
  18. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  19. import org.springframework.jdbc.core.JdbcTemplate;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.util.StringUtils;
  22. import javax.print.DocFlavor;
  23. import javax.transaction.Transactional;
  24. import java.text.ParseException;
  25. import java.text.SimpleDateFormat;
  26. import java.util.*;
  27. /**
  28. * @author wangzhinan
  29. * @create 2018-04-27 16:53
  30. * @desc credits log info Service
  31. **/
  32. @Service
  33. @Transactional
  34. public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,CredittsLogDetailDao> {
  35. private Logger logger = LoggerFactory.getLogger(CreditsDetailService.class);
  36. private static String STEP = "health:blank:step";
  37. @Autowired
  38. private CredittsLogDetailDao credittsLogDetailDao;
  39. @Autowired
  40. private TaskDao taskDao;
  41. @Autowired
  42. private ActivityDao activityDao;
  43. @Autowired
  44. private JdbcTemplate jdbcTemplate;
  45. @Autowired
  46. private AccountDao accountDao;
  47. @Autowired
  48. private TaskPatientDetailDao taskPatientDetailDao;
  49. @Autowired
  50. private TaskRuleDao taskRuleDao;
  51. @Autowired
  52. private StringRedisTemplate redisTemplate;
  53. @Autowired
  54. private ActiveRecordService activeRecordService;
  55. @Autowired
  56. private ActivityRuleDao activityRuleDao;
  57. /**
  58. * find creditsLogInfo
  59. *
  60. * @return
  61. * @throws ParseException
  62. */
  63. public MixEnvelop<CreditsDetailDO, CreditsDetailDO> findByCondition(CreditsDetailDO creditsDetailDO, Integer page, Integer size) throws ParseException {
  64. String sql = new ISqlUtils().getSql(creditsDetailDO,page,size,"*");
  65. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(CreditsDetailDO.class));
  66. for (CreditsDetailDO creditsDetailDO1 : creditsDetailDOS){
  67. if (creditsDetailDO1.getTradeType() != null && creditsDetailDO1.getTradeType().equalsIgnoreCase("ACTIVITY_TASK")){
  68. TaskDO taskDO = taskDao.findOne(creditsDetailDO1.getTransactionId());
  69. creditsDetailDO1.setTaskDO(taskDO);
  70. }
  71. }
  72. String sqlcount = new ISqlUtils().getSql(creditsDetailDO,0,0,"count");
  73. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  74. Long count = 0L;
  75. if(rstotal!=null&&rstotal.size()>0){
  76. count = (Long) rstotal.get(0).get("total");
  77. }
  78. return MixEnvelop.getSuccessListWithPage(HealthBankMapping.api_success, creditsDetailDOS,page,size,count);
  79. }
  80. /**
  81. * 获取账户信息
  82. *
  83. * @param creditsDetailDO
  84. * @return
  85. */
  86. public MixEnvelop<AccountDO, AccountDO> findByTradeDirection(CreditsDetailDO creditsDetailDO){
  87. AccountDO accountDO1 = new AccountDO();
  88. accountDO1.setPatientId(creditsDetailDO.getPatientId());
  89. String sql1 = ISqlUtils.getAllSql(accountDO1);
  90. List<AccountDO> accountDOS = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(AccountDO.class));
  91. if (accountDOS == null || accountDOS.size() == 0){
  92. accountDO1.setTotal(0);
  93. accountDO1.setAccountName(creditsDetailDO.getName());
  94. if(creditsDetailDO.getIdCard().length()>=4){// 判断是否长度大于等于4
  95. String cardNumber=creditsDetailDO.getIdCard().substring(creditsDetailDO.getIdCard().length()- 4,creditsDetailDO.getIdCard().length());//截取两个数字之间的部分
  96. int random = (int)((Math.random()*9+1)*100000);
  97. accountDO1.setCardNumber(cardNumber+Integer.toString(random));
  98. }
  99. accountDO1.setHospital(creditsDetailDO.getHospital());
  100. accountDO1.setPassword("123456");
  101. accountDO1.setHospitalName(creditsDetailDO.getHospitalName());
  102. accountDO1.setStatus(1);
  103. accountDO1.setSaasId("dev");
  104. accountDO1.setCreateTime(new Date());
  105. accountDO1.setUpdateTime(new Date());
  106. accountDao.save(accountDO1);
  107. }
  108. List<AccountDO> accountDOS1 = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(AccountDO.class));
  109. AccountDO accountDO = accountDOS1.get(0);
  110. String sql = "SELECT SUM(cd.integrate) as total FROM wlyy_health_bank_credits_detail cd where cd.trade_direction = "+creditsDetailDO.getTradeDirection() +" AND cd.patient_id = '" +creditsDetailDO.getPatientId()+"'";
  111. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sql);
  112. if (rstotal!= null && rstotal.size()>0){
  113. if (rstotal.get(0).get("total") == null){
  114. accountDO.setUsedTotal(0);
  115. }else {
  116. accountDO.setUsedTotal(Integer.parseInt(rstotal.get(0).get("total").toString()));
  117. }
  118. }
  119. return MixEnvelop.getSuccess(HealthBankMapping.api_success,accountDO);
  120. }
  121. /*
  122. public Envelop<Boolean> exchangeGoods(GoodsDO goodsDO){
  123. CreditsDetailDO creditsLogDetailDO = new CreditsDetailDO();
  124. Envelop<Boolean> envelop = new Envelop<>();
  125. envelop.setObj(true);
  126. return envelop;
  127. }
  128. */
  129. public MixEnvelop<AccountDO, AccountDO> selectByRanking(List<String> patientIds, Integer page, Integer size){
  130. StringBuffer buffer = new StringBuffer();
  131. buffer.append(" ba.patient_id in(");
  132. if (patientIds == null || patientIds.size() == 0){
  133. buffer.append("''");
  134. }else {
  135. for (int i=0;i<patientIds.size();i++){
  136. buffer.append("'"+patientIds.get(i)+"'").append(",");
  137. }
  138. buffer.deleteCharAt(buffer.length()-1);
  139. }
  140. buffer.append(") ");
  141. String sql =
  142. "SELECT ba1.patient_id AS patient_id," +
  143. "ba1.account_name AS account_name," +
  144. "ba1.hospital AS hospital," +
  145. "ba1.total AS total," +
  146. "ba1.create_time AS create_time," +
  147. "ba1.sum AS sum" +
  148. " FROM" +
  149. "( SELECT " +
  150. "ba.patient_id AS patient_id," +
  151. "ba.account_name AS account_name," +
  152. "ba.hospital AS hospital," +
  153. "ba.total AS total," +
  154. "ba.create_time AS create_time," +
  155. " if(ba.total=0,ba.total,(ba.total +COALESCE((cd1.total),0))) AS sum" +
  156. " FROM" +
  157. " wlyy_health_bank_account ba" +
  158. " LEFT JOIN ( " +
  159. "SELECT" +
  160. " SUM(cd.integrate) AS total," +
  161. " cd.patient_id AS patient_id" +
  162. " FROM" +
  163. " wlyy_health_bank_credits_detail cd" +
  164. " WHERE " +
  165. "cd.trade_direction = - 1" +
  166. " GROUP BY " +
  167. " cd.patient_id ) cd1 ON cd1.patient_id = ba.patient_id " +
  168. " WHERE " + buffer +
  169. " ORDER BY" +
  170. " ba.create_time DESC )ba1" +
  171. " ORDER BY " +
  172. " ba1.total DESC"+
  173. " LIMIT "+(page-1)*size+","+size ;
  174. List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
  175. String sqlCount = "SELECT count(1) AS total"+
  176. " FROM " +
  177. " wlyy_health_bank_account ba LEFT JOIN " +
  178. " ( " +
  179. " SELECT " +
  180. " SUM(cd.integrate) AS total, " +
  181. " cd.patient_id AS patient_id " +
  182. " FROM " +
  183. " wlyy_health_bank_credits_detail cd " +
  184. " WHERE " +
  185. " cd.trade_direction = - 1 " +
  186. " GROUP BY " +
  187. " cd.patient_id " +
  188. " ) cd1 ON cd1.patient_id = ba.patient_id " +
  189. "WHERE " + buffer +
  190. " ORDER BY " +
  191. " ba.create_time, " +
  192. " (ba.total + COALESCE(cd1.total,0)) DESC ";
  193. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
  194. Long count = 0L;
  195. if(rstotal!=null&&rstotal.size()>0){
  196. count = (Long) rstotal.get(0).get("total");
  197. }
  198. return MixEnvelop.getSuccessListWithPage(HealthBankMapping.api_success, accountDOS,page,size,count);
  199. }
  200. /**
  201. * 添加积分
  202. *
  203. * @param creditsDetailDO
  204. * @return
  205. */
  206. public MixEnvelop<CreditsDetailDO, CreditsDetailDO> insert(CreditsDetailDO creditsDetailDO){
  207. try {
  208. synchronized (creditsDetailDO.getPatientId()){
  209. String sqlAccount = "select * from wlyy_health_bank_account ba where ba.patient_id = '"+creditsDetailDO.getPatientId() +"'";
  210. List<AccountDO> accountDOList = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
  211. if (accountDOList != null && accountDOList.size() != 0){
  212. creditsDetailDO.setAccountId(accountDOList.get(0).getId());
  213. }else {
  214. AccountDO accountDO1 = new AccountDO();
  215. accountDO1.setPatientId(creditsDetailDO.getPatientId());
  216. accountDO1.setTotal(0);
  217. accountDO1.setCouponTotal(0L);
  218. accountDO1.setAccountName(creditsDetailDO.getName());
  219. if(creditsDetailDO.getIdCard().length()>=4){// 判断是否长度大于等于4
  220. String cardNumber=creditsDetailDO.getIdCard().substring(creditsDetailDO.getIdCard().length()- 4,creditsDetailDO.getIdCard().length());//截取两个数字之间的部分
  221. int random = (int)((Math.random()*9+1)*100000);
  222. accountDO1.setCardNumber(cardNumber+Integer.toString(random));
  223. }
  224. accountDO1.setHospital(creditsDetailDO.getHospital());
  225. accountDO1.setPassword("123456");
  226. accountDO1.setHospitalName(creditsDetailDO.getHospitalName());
  227. accountDO1.setStatus(1);
  228. accountDO1.setCreateTime(new Date());
  229. accountDO1.setUpdateTime(new Date());
  230. accountDao.save(accountDO1);
  231. List<AccountDO> accountDOS = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
  232. creditsDetailDO.setAccountId(accountDOS.get(0).getId());
  233. }
  234. TaskDO taskDO = new TaskDO();
  235. taskDO.setTaskCode(creditsDetailDO.getFlag());
  236. taskDO.setId(creditsDetailDO.getTransactionId());
  237. /*taskDO.setPatientId(creditsDetailDO.getPatientId());*/
  238. String sql = ISqlUtils.getSql(taskDO,1,1,"*");
  239. List<TaskDO> taskDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskDO.class));
  240. creditsDetailDO.setTransactionId(taskDOList.get(0).getId());
  241. String ruleSql = "SELECT * FROM wlyy_health_bank_task_rule WHERE id= '"+taskDOList.get(0).getRuleCode()+"'";
  242. List<TaskRuleDO> taskRuleDOS = jdbcTemplate.query(ruleSql,new BeanPropertyRowMapper(TaskRuleDO.class));
  243. TaskRuleDO taskRuleDO = taskRuleDOS.get(0);
  244. creditsDetailDO.setIntegrate(taskRuleDO.getIntegrate());
  245. creditsDetailDO.setTradeDirection(taskRuleDO.getTradeDirection());
  246. String taskSql = "select * from wlyy_health_bank_task_patient_detail where task_id = '"+taskDOList.get(0).getId()+"' and patient_id = '" + creditsDetailDO.getPatientId() +"'";
  247. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(taskSql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  248. if (taskPatientDetailDOS == null || taskPatientDetailDOS.size() ==0){
  249. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  250. taskPatientDetailDO.setTaskId(creditsDetailDO.getTransactionId());
  251. taskPatientDetailDO.setSaasId(creditsDetailDO.getSaasId());
  252. taskPatientDetailDO.setPatientId(creditsDetailDO.getPatientId());
  253. taskPatientDetailDO.setPatientIdcard(creditsDetailDO.getIdCard());
  254. taskPatientDetailDO.setPatientOpenid(creditsDetailDO.getOpenId());
  255. taskPatientDetailDO.setUnionId(creditsDetailDO.getUnionId());
  256. taskPatientDetailDO.setStatus(Integer.parseInt("0"));
  257. taskPatientDetailDO.setCreateTime(new Date());
  258. taskPatientDetailDO.setUpdateTime(new Date());
  259. taskPatientDetailDO.setActivityId(taskDOList.get(0).getTransactionId());
  260. taskPatientDetailDO.setTotal(Long.parseLong("0"));
  261. taskPatientDetailDao.save(taskPatientDetailDO);
  262. }else if (taskPatientDetailDOS != null && taskDOList.get(0).getPeriod() == 0){
  263. String taskSql1 = "select * from wlyy_health_bank_task_patient_detail where task_id = '"+taskDOList.get(0).getId()+
  264. "' and patient_id = '"+creditsDetailDO.getPatientId()+"' and create_time > '" + DateUtils.getDayBegin() +"' and create_time < '"+ DateUtils.getDayEnd() +"'";
  265. List<TaskPatientDetailDO> taskPatientDetailDOS1 = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  266. if (taskPatientDetailDOS1 == null || taskPatientDetailDOS1.size() == 0){
  267. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  268. taskPatientDetailDO.setTaskId(creditsDetailDO.getTransactionId());
  269. taskPatientDetailDO.setSaasId(creditsDetailDO.getSaasId());
  270. taskPatientDetailDO.setPatientId(creditsDetailDO.getPatientId());
  271. taskPatientDetailDO.setPatientIdcard(creditsDetailDO.getIdCard());
  272. taskPatientDetailDO.setPatientOpenid(creditsDetailDO.getOpenId());
  273. taskPatientDetailDO.setActivityId(taskDOList.get(0).getTransactionId());
  274. taskPatientDetailDO.setStatus(Integer.parseInt("0"));
  275. taskPatientDetailDO.setCreateTime(new Date());
  276. taskPatientDetailDO.setUpdateTime(new Date());
  277. taskPatientDetailDO.setTotal(Long.parseLong("0"));
  278. taskPatientDetailDao.save(taskPatientDetailDO);
  279. }
  280. }
  281. creditsDetailDO.setCreateTime(new Date());
  282. creditsDetailDO.setUpdateTime(new Date());
  283. CreditsDetailDO creditsDetailDO1 =credittsLogDetailDao.save(creditsDetailDO);
  284. creditsDetailDO1.setFlag(creditsDetailDO.getFlag());
  285. List<CreditsDetailDO> creditsDetailDOList = new ArrayList<>();
  286. creditsDetailDOList.add(creditsDetailDO1);
  287. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  288. taskPatientDetailDO.setPatientId(creditsDetailDO1.getPatientId());
  289. taskPatientDetailDO.setTaskId(creditsDetailDO1.getTransactionId());
  290. String taskSql1 = ISqlUtils.getAllSql(taskPatientDetailDO);
  291. List<TaskPatientDetailDO> taskPatientDetailDOS1 = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  292. TaskPatientDetailDO taskPatientDetailDO1 = taskPatientDetailDOS1.get(0);
  293. if (creditsDetailDO1.getTradeDirection() == 1){
  294. taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal()+creditsDetailDO1.getIntegrate());
  295. }else if (creditsDetailDO.getTradeDirection() == -1){
  296. taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal()-creditsDetailDO1.getIntegrate());
  297. }
  298. taskPatientDetailDao.save(taskPatientDetailDO1);
  299. AccountDO accountDO = accountDao.findOne(creditsDetailDO1.getAccountId());
  300. if (creditsDetailDO1.getTradeDirection() == 1){
  301. accountDO.setTotal(accountDO.getTotal()+creditsDetailDO1.getIntegrate());
  302. }else if (creditsDetailDO.getTradeDirection() == -1){
  303. accountDO.setTotal(accountDO.getTotal()-creditsDetailDO1.getIntegrate());
  304. }
  305. AccountDO accountDO1 = accountDao.save(accountDO);
  306. List<CreditsDetailDO> creditsDetailDOS = new ArrayList<>();
  307. for (CreditsDetailDO creditsDetailDO2:creditsDetailDOList){
  308. creditsDetailDO2.setTotal(accountDO1.getTotal());
  309. creditsDetailDOS.add(creditsDetailDO2);
  310. }
  311. MixEnvelop<CreditsDetailDO, CreditsDetailDO> envelop = new MixEnvelop<>();
  312. envelop.setDetailModelList(creditsDetailDOS);
  313. return envelop;
  314. }
  315. }catch (Exception e){
  316. e.printStackTrace();
  317. MixEnvelop<CreditsDetailDO, CreditsDetailDO> envelop = new MixEnvelop<>();
  318. return envelop;
  319. }
  320. }
  321. /**
  322. * 活动排名
  323. *
  324. * @param activityId 活动id
  325. * @param ids 微信编码
  326. *
  327. * @param page 页码
  328. *
  329. * @param size 分页大小
  330. * @return
  331. */
  332. public MixEnvelop<TaskPatientDetailDO, TaskPatientDetailDO> selectByActivityRanking(String activityId, List<String> ids, Integer page, Integer size){
  333. StringBuffer buffer = new StringBuffer();
  334. buffer.append("(");
  335. if (ids == null || ids.size() == 0){
  336. buffer.append("''");
  337. }else {
  338. for (int i=0;i<ids.size();i++){
  339. buffer.append("'"+ids.get(i)+"'").append(",");
  340. }
  341. buffer.deleteCharAt(buffer.length()-1);
  342. }
  343. buffer.append(") ");
  344. String sql = "SELECT " +
  345. " * " +
  346. "FROM " +
  347. " ( " +
  348. " SELECT " +
  349. " SUM(ptpd.total) AS total, " +
  350. " ptpd.patient_openid AS patient_openid, " +
  351. " ptpd.task_id AS task_id, " +
  352. " ptpd.activity_id AS activity_id, " +
  353. " ptpd.create_time as create_time, " +
  354. " ptpd.patient_id AS patient_id " +
  355. " FROM " +
  356. " wlyy_health_bank_task_patient_detail ptpd " +
  357. " WHERE " +
  358. " activity_id = '" + activityId +
  359. "' GROUP BY " +
  360. " patient_id " +
  361. " ORDER BY ptpd.create_time DESC " +
  362. " )btpd1 " +
  363. " WHERE patient_id IN "+buffer+
  364. " ORDER BY btpd1.total DESC "+" LIMIT " + (page-1)*size+","+size;
  365. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  366. for (TaskPatientDetailDO taskPatientDetailDO : taskPatientDetailDOS){
  367. String accountSql = "select * from wlyy_health_bank_account where patient_id = '"+taskPatientDetailDO.getPatientId()+"'";
  368. List<AccountDO> accountDOS = jdbcTemplate.query(accountSql,new BeanPropertyRowMapper(AccountDO.class));
  369. taskPatientDetailDO.setAccountDO(accountDOS.get(0));
  370. }
  371. String sqlCount = "SELECT " +
  372. " count(1) AS total " +
  373. "FROM " +
  374. " ( " +
  375. " SELECT " +
  376. " SUM(ptpd.total) AS total, " +
  377. " ptpd.patient_openid AS patient_openid, " +
  378. " ptpd.task_id AS task_id, " +
  379. " ptpd.activity_id AS activity_id, " +
  380. " ptpd.create_time as create_time, " +
  381. " ptpd.patient_id AS patient_id " +
  382. " FROM " +
  383. " wlyy_health_bank_task_patient_detail ptpd " +
  384. " WHERE " +
  385. " activity_id = '" + activityId+
  386. "' GROUP BY " +
  387. " patient_openid " +
  388. " ORDER BY ptpd.create_time DESC " +
  389. " )btpd1 " +
  390. "WHERE patient_openid IN "+buffer+
  391. " ORDER BY btpd1.total DESC ";
  392. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
  393. Long count = 0L;
  394. if(rstotal!=null&&rstotal.size()>0){
  395. count = (Long) rstotal.get(0).get("total");
  396. }
  397. return MixEnvelop.getSuccessListWithPage(HealthBankMapping.api_success, taskPatientDetailDOS,page,size,count);
  398. }
  399. /**
  400. * 根据活动查询积分
  401. *
  402. * @param activityId 活动id
  403. *
  404. * @param patientId 居民id
  405. *
  406. * @param page 页码
  407. *
  408. * @param size 分页大小
  409. * @return
  410. */
  411. public MixEnvelop<CreditsDetailDO, CreditsDetailDO> selectByActivity(String activityId, String patientId, Integer page, Integer size){
  412. String sql="SELECT * " +
  413. "FROM " +
  414. " wlyy_health_bank_credits_detail " +
  415. "WHERE" +
  416. " transaction_id IN ( " +
  417. " SELECT " +
  418. " bt.id " +
  419. " FROM " +
  420. " wlyy_health_bank_task bt " +
  421. " WHERE " +
  422. " transaction_id = '"+activityId +"' " +
  423. " ) " +
  424. " and patient_id = '" +patientId+
  425. "' LIMIT "+(page-1)*size +","+size;
  426. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(CreditsDetailDO.class));
  427. for (CreditsDetailDO creditsDetailDO : creditsDetailDOS){
  428. TaskDO taskDO = taskDao.findOne(creditsDetailDO.getTransactionId());
  429. creditsDetailDO.setTaskDO(taskDO);
  430. }
  431. String sqlcount = "SELECT count(1) AS" +
  432. " total FROM " +
  433. " wlyy_health_bank_credits_detail " +
  434. "WHERE" +
  435. " transaction_id IN ( " +
  436. " SELECT " +
  437. " bt.id " +
  438. " FROM " +
  439. " wlyy_health_bank_task bt " +
  440. " WHERE " +
  441. " transaction_id = '"+activityId +"' " +
  442. " ) " +
  443. " and patient_id = '" +patientId+
  444. "'";
  445. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  446. Long count = 0L;
  447. if(rstotal!=null&&rstotal.size()>0){
  448. count = (Long) rstotal.get(0).get("total");
  449. }
  450. return MixEnvelop.getSuccessListWithPage(HealthBankMapping.api_success,creditsDetailDOS,page,size,count);
  451. }
  452. /**
  453. * 根据活动查找全部排行
  454. *
  455. * @param activityId 活动id
  456. * @param page 页码
  457. * @param size 分页大小
  458. * @return
  459. */
  460. public MixEnvelop<TaskPatientDetailDO, TaskPatientDetailDO> selectByActivityRanking1(String activityId, String patientId, Integer page, Integer size){
  461. String sql = "SELECT " +
  462. " * " +
  463. "FROM " +
  464. " ( " +
  465. " SELECT " +
  466. " SUM(ptpd.total) AS total, " +
  467. " ptpd.patient_openid AS patient_openid, " +
  468. " ptpd.task_id AS task_id, " +
  469. " ptpd.activity_id AS activity_id, " +
  470. " ptpd.create_time as create_time, " +
  471. " ptpd.patient_id AS patient_id " +
  472. " FROM " +
  473. " wlyy_health_bank_task_patient_detail ptpd " +
  474. " WHERE " +
  475. " activity_id = '" + activityId +
  476. "' GROUP BY " +
  477. " patient_openid " +
  478. " ORDER BY ptpd.create_time DESC " +
  479. " )btpd1 " +
  480. " ORDER BY btpd1.total DESC "+" LIMIT " + (page-1)*size+","+size;
  481. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  482. logger.info(taskPatientDetailDOS.toString()+""+taskPatientDetailDOS.size());
  483. for (int i = 0;taskPatientDetailDOS != null&&taskPatientDetailDOS.size()!=0 && i<taskPatientDetailDOS.size();i++){
  484. TaskPatientDetailDO taskPatientDetailDO = taskPatientDetailDOS.get(i);
  485. String accountSql = "select * from wlyy_health_bank_account where patient_id = '"+taskPatientDetailDO.getPatientId()+"'";
  486. List<AccountDO> accountDOS = jdbcTemplate.query(accountSql,new BeanPropertyRowMapper(AccountDO.class));
  487. if (taskPatientDetailDOS.get(i).getPatientId().equalsIgnoreCase(patientId)){
  488. /*String taskSql = "select count(1)+1 as total from (" +
  489. "select * from (SELECT " +
  490. " SUM(ptpd.total) AS total, " +
  491. " ptpd.patient_openid AS patient_openid, " +
  492. " ptpd.task_id AS task_id, " +
  493. " ptpd.activity_id AS activity_id, " +
  494. " ptpd.create_time as create_time, " +
  495. " ptpd.patient_id AS patient_id " +
  496. " FROM " +
  497. " wlyy_health_bank_task_patient_detail ptpd " +
  498. " WHERE " +
  499. " activity_id = '" + activityId + "')ptpd1 where" +
  500. " ptpd1.patient_id = '"+patientId+"' AND ptpd1.total > "+taskPatientDetailDOS.get(i).getTotal()+") ptpd2";
  501. List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(taskSql);
  502. Long count = 0L;
  503. if(rstotal1!=null&&rstotal1.size()>0){
  504. count = (Long) rstotal1.get(0).get("total");
  505. }
  506. accountDOS.get(0).setActivityRanking(count);*/
  507. taskPatientDetailDO.setIsFlag(1);
  508. }else {
  509. taskPatientDetailDO.setIsFlag(0);
  510. }
  511. taskPatientDetailDO.setAccountDO(accountDOS.get(0));
  512. }
  513. String sqlCount = "SELECT " +
  514. " count(1) AS total " +
  515. "FROM " +
  516. " ( " +
  517. " SELECT " +
  518. " SUM(ptpd.total) AS total, " +
  519. " ptpd.patient_openid AS patient_openid, " +
  520. " ptpd.task_id AS task_id, " +
  521. " ptpd.activity_id AS activity_id, " +
  522. " ptpd.create_time as create_time, " +
  523. " ptpd.patient_id AS patient_id " +
  524. " FROM " +
  525. " wlyy_health_bank_task_patient_detail ptpd " +
  526. " WHERE " +
  527. " activity_id = '" + activityId+
  528. "' GROUP BY " +
  529. " patient_openid " +
  530. " ORDER BY ptpd.create_time DESC " +
  531. " )btpd1 " +
  532. " ORDER BY btpd1.total DESC ";
  533. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
  534. Long count = 0L;
  535. if(rstotal!=null&&rstotal.size()>0){
  536. count = (Long) rstotal.get(0).get("total");
  537. }
  538. return MixEnvelop.getSuccessListWithPage(HealthBankMapping.api_success, taskPatientDetailDOS,page,size,count);
  539. }
  540. /**
  541. * 医生主动加分
  542. *
  543. * @param array 居民信息集合
  544. *
  545. * @param ruleId 规则id
  546. * @return
  547. */
  548. public MixEnvelop<Boolean, Boolean> doctorAddIntegrate(JSONArray array, String ruleId, String description) throws Exception {
  549. MixEnvelop<Boolean, Boolean> envelop = new MixEnvelop<>();
  550. for (int i=0;i<array.size();i++){
  551. TaskRuleDO taskRuleDO = taskRuleDao.findOne(ruleId);
  552. JSONObject object = array.getJSONObject(i);
  553. String patientId = object.getString("code");
  554. String idCard = object.getString("idcard");
  555. String unionId = object.getString("unionid");
  556. String openId = object.getString("openid");
  557. String hospital = object.getString("hospital");
  558. String hospitalName = object.getString("hospitalName");
  559. String taskSql = "select * from wlyy_health_bank_task bt where type = 'RULE_TASK' AND transaction_id = '"+ruleId +"'";
  560. List<TaskDO> taskDOList = jdbcTemplate.query(taskSql,new BeanPropertyRowMapper(TaskDO.class));
  561. TaskDO taskDO1 = new TaskDO();
  562. if (taskDOList.isEmpty() && taskDOList.size() == 0){
  563. TaskDO taskDO = new TaskDO();
  564. taskDO.setTransactionId(taskRuleDO.getId());
  565. taskDO.setTaskCode("RULE");
  566. taskDO.setStatus(1);
  567. taskDO.setRuleCode(taskRuleDO.getId());
  568. taskDO.setType("RULE_TASK");
  569. taskDO.setCreateTime(new Date());
  570. taskDO.setUpdateTime(new Date());
  571. taskDO.setPeriod(taskRuleDO.getPeriod());
  572. taskDO.setSaasId("dev");
  573. taskDO.setTitle(taskRuleDO.getDescription());
  574. taskDO.setContent(taskRuleDO.getDescription());
  575. taskDO1 = taskDao.save(taskDO);
  576. }else {
  577. taskDO1 = taskDOList.get(0);
  578. }
  579. if (taskRuleDO.getPeriod() == 1){
  580. String sql = "select * from wlyy_health_bank_task_patient_detail where patient_id = '"+patientId+"'AND task_id ='"+taskDO1.getId()+"'";
  581. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  582. if (taskPatientDetailDOS != null && taskPatientDetailDOS.size() != 0){
  583. throw new Exception("已奖励过");
  584. }
  585. }else if (taskRuleDO.getPeriod() == 0){
  586. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  587. Date date = new Date();
  588. String date1 = dateFormat.format(date);
  589. String begin = DateUtils.getMinMonthDate(date1);
  590. String end = DateUtils.getMaxMonthDate(date1);
  591. String sql = "select * from wlyy_health_bank_task_patient_detail where patient_id = '"+patientId+"'AND task_id ='"+taskDO1.getId()+"' AND create_time > '"+begin+"' AND create_time < '"+end+"'";
  592. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  593. if (taskPatientDetailDOS != null && taskPatientDetailDOS.size() != 0){
  594. throw new Exception("已奖励过");
  595. }
  596. }
  597. String sql1 = "select * from wlyy_health_bank_task_patient_detail where task_id = '"+taskDO1.getId()+"' " +
  598. "AND patient_idcard = '"+idCard+"' AND patient_openid = '"+openId+"' AND union_id = '"+unionId+"'";
  599. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  600. TaskPatientDetailDO taskPatientDetailDO1 = new TaskPatientDetailDO();
  601. if (taskPatientDetailDOS.isEmpty() && taskPatientDetailDOS.size() == 0){
  602. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  603. taskPatientDetailDO.setStatus(1);
  604. taskPatientDetailDO.setTotal(Long.parseLong("0"));
  605. taskPatientDetailDO.setPatientId(patientId);
  606. taskPatientDetailDO.setPatientOpenid(openId);
  607. taskPatientDetailDO.setPatientIdcard(idCard);
  608. taskPatientDetailDO.setUnionId(unionId);
  609. taskPatientDetailDO.setSaasId("dev");
  610. taskPatientDetailDO.setCreateTime(new Date());
  611. taskPatientDetailDO.setUpdateTime(new Date());
  612. taskPatientDetailDO.setTaskId(taskDO1.getId());
  613. taskPatientDetailDO1 = taskPatientDetailDao.save(taskPatientDetailDO);
  614. }else {
  615. taskPatientDetailDO1 = taskPatientDetailDOS.get(0);
  616. }
  617. String sql = "select * from wlyy_health_bank_account where patient_id = '"+patientId+"'";
  618. List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
  619. if (taskRuleDO.getTradeDirection() == -1 && taskRuleDO.getIntegrate() == 0){
  620. String integrateSql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+patientId+"' " +
  621. "AND transaction_id IN (SELECT id FROM wlyy_health_bank_task WHERE task_code IN ('BP_BIND','GLU_BIND','BP_MEASURE','GLU_MEASURE','RULE'))";
  622. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(integrateSql,new BeanPropertyRowMapper(CreditsDetailDO.class));
  623. AccountDO accountDO = accountDOS.get(0);
  624. for (CreditsDetailDO creditsDetailDO:creditsDetailDOS){
  625. if (creditsDetailDO.getTradeDirection()==1&&creditsDetailDO.getStatus()!=0){
  626. /* int total = accountDO.getTotal() - creditsDetailDO.getIntegrate();*/
  627. creditsDetailDO.setStatus(0);
  628. creditsDetailDO.setDescription(description);
  629. credittsLogDetailDao.save(creditsDetailDO);
  630. }
  631. }
  632. accountDO.setTotal(0);
  633. accountDao.save(accountDO);
  634. CreditsDetailDO creditsDetailDO1 = new CreditsDetailDO();
  635. creditsDetailDO1.setStatus(1);
  636. creditsDetailDO1.setSaasId("dev");
  637. creditsDetailDO1.setAccountId(accountDOS.get(0).getId());
  638. creditsDetailDO1.setHospital(hospital);
  639. creditsDetailDO1.setHospitalName(hospitalName);
  640. creditsDetailDO1.setPatientId(patientId);
  641. creditsDetailDO1.setIntegrate(taskRuleDO.getIntegrate());
  642. creditsDetailDO1.setTradeDirection(taskRuleDO.getTradeDirection());
  643. creditsDetailDO1.setDescription(description);
  644. creditsDetailDO1.setCreateTime(new Date());
  645. creditsDetailDO1.setUpdateTime(new Date());
  646. creditsDetailDO1.setTransactionId(taskDO1.getId());
  647. creditsDetailDO1.setTradeType("ACTIVITY_TASK");
  648. credittsLogDetailDao.save(creditsDetailDO1);
  649. }else{
  650. CreditsDetailDO creditsDetailDO = new CreditsDetailDO();
  651. creditsDetailDO.setStatus(1);
  652. creditsDetailDO.setSaasId("dev");
  653. creditsDetailDO.setAccountId(accountDOS.get(0).getId());
  654. creditsDetailDO.setHospital(hospital);
  655. creditsDetailDO.setHospitalName(hospitalName);
  656. creditsDetailDO.setPatientId(patientId);
  657. creditsDetailDO.setIntegrate(taskRuleDO.getIntegrate());
  658. creditsDetailDO.setTradeDirection(taskRuleDO.getTradeDirection());
  659. creditsDetailDO.setDescription(description);
  660. creditsDetailDO.setCreateTime(new Date());
  661. creditsDetailDO.setUpdateTime(new Date());
  662. creditsDetailDO.setTransactionId(taskDO1.getId());
  663. creditsDetailDO.setTradeType("ACTIVITY_TASK");
  664. creditsDetailDO = credittsLogDetailDao.save(creditsDetailDO);
  665. if (taskRuleDO.getTradeDirection() == -1){
  666. if (taskRuleDO.getIntegrate() == 0){
  667. String integrateSql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+patientId+"' " +
  668. "AND transaction_id IN (SELECT id FROM wlyy_health_bank_task WHERE task_code IN ('BP_BIND','GLU_BIND','BP_MEASURE','GLU_MEASURE','RULE'))";
  669. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(integrateSql,new BeanPropertyRowMapper(CreditsDetailDO.class));
  670. AccountDO accountDO = accountDOS.get(0);
  671. for (CreditsDetailDO creditsDetailDO1:creditsDetailDOS){
  672. if (creditsDetailDO1.getTradeDirection()==1&&creditsDetailDO1.getStatus()!=0){
  673. int total = accountDO.getTotal() - creditsDetailDO1.getIntegrate();
  674. creditsDetailDO1.setStatus(0);
  675. creditsDetailDO1.setDescription(description);
  676. credittsLogDetailDao.save(creditsDetailDO1);
  677. }
  678. }
  679. accountDO.setTotal(0);
  680. accountDao.save(accountDO);
  681. }else if (taskRuleDO.getIntegrate()!=0){
  682. AccountDO accountDO = accountDOS.get(0);
  683. int total = accountDO.getTotal() - creditsDetailDO.getIntegrate();
  684. accountDO.setTotal(total);
  685. accountDao.save(accountDO);
  686. }
  687. }else if (taskRuleDO.getTradeDirection() == 1){
  688. AccountDO accountDO = accountDOS.get(0);
  689. accountDO.setTotal(accountDO.getTotal() + taskRuleDO.getIntegrate());
  690. accountDao.save(accountDO);
  691. }
  692. }
  693. }
  694. envelop.setObj(true);
  695. return envelop;
  696. }
  697. /**
  698. * 固定数据
  699. *
  700. * @param
  701. * @return
  702. *//*
  703. public List<TaskDO> getTasks(String patientId){
  704. List<TaskDO> taskDOList = new ArrayList<>();
  705. TaskDO taskDO = new TaskDO();
  706. *//*taskDO.setPatientId(patientId);*//*
  707. taskDO.setTaskCode("BIND");
  708. taskDO.setPeriod(1);
  709. taskDO.setTaskTitle("首次绑定");
  710. taskDO.setTaskContent("(绑定社区登记发放的设备,可获得各类型设备的首绑奖励。)");
  711. taskDO.setTradeType("activity");
  712. taskDO.setTransactionId("402885e96324a409016324c0a45a0006");
  713. taskDO.setCreateTime(new Date());
  714. taskDO.setUpdateTime(new Date());
  715. taskDOList.add(taskDO);
  716. TaskDO taskDO1 = new TaskDO();
  717. *//*taskDO1.setPatientId(patientId);*//*
  718. taskDO1.setTaskCode("MEASURE");
  719. taskDO1.setPeriod(0);
  720. taskDO1.setTaskTitle("每日测量");
  721. taskDO1.setTaskContent("(使用社区发放的已关联您身份信息的设备,绑定后每天完成测量)");
  722. taskDO1.setTradeType("activity");
  723. taskDO1.setTransactionId("402885e96324a409016324c0a45a0006");
  724. taskDO1.setCreateTime(new Date());
  725. taskDO1.setUpdateTime(new Date());
  726. taskDOList.add(taskDO1);
  727. return taskDOList;
  728. }
  729. */
  730. public MixEnvelop<CreditsDetailDO, CreditsDetailDO> stepAddIntegrate(CreditsDetailDO creditsDetailDO){
  731. try {
  732. synchronized (creditsDetailDO.getPatientId()){
  733. String sqlAccount = "select * from wlyy_health_bank_account ba where ba.patient_id = '"+creditsDetailDO.getPatientId() +"'";
  734. List<AccountDO> accountDOList = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
  735. if (accountDOList != null && accountDOList.size() != 0){
  736. creditsDetailDO.setAccountId(accountDOList.get(0).getId());
  737. }else {
  738. AccountDO accountDO1 = new AccountDO();
  739. accountDO1.setPatientId(creditsDetailDO.getPatientId());
  740. accountDO1.setSaasId("dev");
  741. accountDO1.setTotal(0);
  742. accountDO1.setCouponTotal(0L);
  743. accountDO1.setAccountName(creditsDetailDO.getName());
  744. if(creditsDetailDO.getIdCard().length()>=4){// 判断是否长度大于等于4
  745. String cardNumber=creditsDetailDO.getIdCard().substring(creditsDetailDO.getIdCard().length()- 4,creditsDetailDO.getIdCard().length());//截取两个数字之间的部分
  746. int random = (int)((Math.random()*9+1)*100000);
  747. accountDO1.setCardNumber(cardNumber+Integer.toString(random));
  748. }
  749. accountDO1.setHospital(creditsDetailDO.getHospital());
  750. accountDO1.setPassword("123456");
  751. accountDO1.setHospitalName(creditsDetailDO.getHospitalName());
  752. accountDO1.setStatus(1);
  753. accountDO1.setCreateTime(new Date());
  754. accountDO1.setUpdateTime(new Date());
  755. accountDao.save(accountDO1);
  756. List<AccountDO> accountDOS = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
  757. creditsDetailDO.setAccountId(accountDOS.get(0).getId());
  758. }
  759. String sql1 = "select * from wlyy_health_bank_task_patient_detail where "+
  760. " patient_idcard = '"+creditsDetailDO.getIdCard()+"' AND union_id = '"+creditsDetailDO.getUnionId()+"' AND task_id = '"+creditsDetailDO.getTransactionId()+"'";
  761. List<TaskPatientDetailDO> taskPatientDetailDOList = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  762. if(taskPatientDetailDOList == null || taskPatientDetailDOList.size()==0){
  763. throw new Exception("该居民参与活动查不到!");
  764. }
  765. TaskPatientDetailDO taskPatientDetailDO = taskPatientDetailDOList.get(0);
  766. String sql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+creditsDetailDO.getPatientId()+"' AND " +
  767. "transaction_id = '"+creditsDetailDO.getTransactionId()+"' AND create_time > '"+DateUtils.getDayBegin() +"' AND" +
  768. " create_time < '"+DateUtils.getDayEnd()+"'AND ISNULL(description)";
  769. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(CreditsDetailDO.class));
  770. ActivityRuleDO activityRuleDO = activityRuleDao.selectByActivityId(taskPatientDetailDO.getActivityId());
  771. if (activityRuleDO.getValue1() != null){
  772. JSONObject object = JSONObject.parseObject(activityRuleDO.getValue1());
  773. //获取步数
  774. JSONArray array = object.getJSONArray("healthStep");
  775. int j = array.size();
  776. int z= 0;
  777. for (int i = 0;i<=array.size();i++){
  778. JSONObject jsonObject = array.getJSONObject(i);
  779. Long step = jsonObject.getLong("step");
  780. int integrate = jsonObject.getInteger("integrate");
  781. if (creditsDetailDOS != null && creditsDetailDOS.size() != 0){
  782. CreditsDetailDO creditsDetailDO1 = creditsDetailDOS.get(0);
  783. if (creditsDetailDO.getStepNumber()>0 && creditsDetailDO.getStepNumber()<=step){
  784. int integrate1=creditsDetailDO1.getIntegrate();
  785. creditsDetailDO1.setIntegrate(creditsDetailDO.getIntegrate());
  786. creditsDetailDO1.setTradeDirection(1);
  787. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  788. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  789. accountDO.setTotal(accountDO.getTotal()-integrate1+creditsDetailDO2.getIntegrate());
  790. AccountDO accountDO1 = accountDao.save(accountDO);
  791. creditsDetailDO2.setTotal(accountDO1.getTotal());
  792. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()-integrate1+creditsDetailDO2.getIntegrate());
  793. taskPatientDetailDao.save(taskPatientDetailDO);
  794. creditsDetailDOS.clear();
  795. creditsDetailDOS.add(creditsDetailDO2);
  796. break;
  797. }
  798. }else {
  799. CreditsDetailDO creditsDetailDO1 = new CreditsDetailDO();
  800. if (creditsDetailDO.getStepNumber()>0 && creditsDetailDO.getStepNumber()<=step){
  801. creditsDetailDO1.setIntegrate(creditsDetailDO.getIntegrate());
  802. creditsDetailDO1.setTradeDirection(1);
  803. creditsDetailDO1.setSaasId("dev");
  804. creditsDetailDO1.setTradeType("ACTIVITY_TASK");
  805. creditsDetailDO1.setPatientId(creditsDetailDO.getPatientId());
  806. creditsDetailDO1.setHospital(creditsDetailDO.getHospital());
  807. creditsDetailDO1.setHospitalName(creditsDetailDO.getHospitalName());
  808. creditsDetailDO1.setAccountId(creditsDetailDO.getAccountId());
  809. creditsDetailDO1.setStatus(1);
  810. creditsDetailDO1.setCreateTime(new Date());
  811. creditsDetailDO1.setUpdateTime(new Date());
  812. creditsDetailDO1.setTransactionId(taskPatientDetailDO.getTaskId());
  813. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  814. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  815. accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
  816. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
  817. taskPatientDetailDao.save(taskPatientDetailDO);
  818. creditsDetailDO2.setTotal(accountDO.getTotal());
  819. creditsDetailDOS.add(creditsDetailDO2);
  820. break;
  821. }
  822. }
  823. }
  824. }
  825. /* for (int i = 0;i<array.size();i++){
  826. JSONObject jsonObject = array.getJSONObject(i);
  827. if (creditsDetailDOS != null && creditsDetailDOS.size() != 0){
  828. CreditsDetailDO creditsDetailDO1 = creditsDetailDOS.get(0);
  829. TaskRuleDO taskRuleDO = taskRuleDao.findOne(taskDO.getRuleCode());
  830. if (creditsDetailDO.getStepNumber() < step1 && creditsDetailDO.getStepNumber() >0){
  831. creditsDetailDO1.setIntegrate(0);
  832. creditsDetailDO1.setTradeDirection(1);
  833. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  834. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  835. accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
  836. AccountDO accountDO1 = accountDao.save(accountDO);
  837. creditsDetailDO2.setTotal(accountDO1.getTotal());
  838. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
  839. taskPatientDetailDao.save(taskPatientDetailDO);
  840. creditsDetailDOS.clear();
  841. creditsDetailDOS.add(creditsDetailDO2);
  842. }else if (creditsDetailDO.getStepNumber() >= step1 && creditsDetailDO.getStepNumber() < step2){
  843. creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+1);
  844. creditsDetailDO1.setTradeDirection(1);
  845. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  846. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  847. accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()));
  848. AccountDO accountDO1 = accountDao.save(accountDO);
  849. creditsDetailDO2.setTotal(accountDO1.getTotal());
  850. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()));
  851. taskPatientDetailDao.save(taskPatientDetailDO);
  852. creditsDetailDOS.clear();
  853. creditsDetailDOS.add(creditsDetailDO2);
  854. }else if (creditsDetailDO.getStepNumber() >= step2){
  855. if (creditsDetailDO1.getIntegrate() == 1){
  856. creditsDetailDO1.setIntegrate(2);
  857. creditsDetailDO1.setTradeDirection(1);
  858. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  859. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  860. accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
  861. AccountDO accountDO1 = accountDao.save(accountDO);
  862. creditsDetailDO2.setTotal(accountDO1.getTotal());
  863. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
  864. taskPatientDetailDao.save(taskPatientDetailDO);
  865. creditsDetailDOS.clear();
  866. creditsDetailDOS.add(creditsDetailDO2);
  867. }*//*else if(creditsDetailDO1.getIntegrate() == 3){
  868. creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+5);
  869. creditsDetailDO1.setTradeDirection(1);
  870. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  871. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  872. accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-3));
  873. AccountDO accountDO1 = accountDao.save(accountDO);
  874. creditsDetailDO2.setTotal(accountDO1.getTotal());
  875. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-3));
  876. taskPatientDetailDao.save(taskPatientDetailDO);
  877. creditsDetailDOS.clear();
  878. creditsDetailDOS.add(creditsDetailDO2);
  879. }*//*
  880. }
  881. }else{
  882. CreditsDetailDO creditsDetailDO1 = new CreditsDetailDO();
  883. if (creditsDetailDO.getStepNumber() < step1 && creditsDetailDO.getStepNumber() >0){
  884. creditsDetailDO1.setIntegrate(0);
  885. creditsDetailDO1.setTradeDirection(1);
  886. }else if (creditsDetailDO.getStepNumber() >= step1 && creditsDetailDO.getStepNumber() < step2){
  887. creditsDetailDO1.setIntegrate(1);
  888. creditsDetailDO1.setTradeDirection(1);
  889. }else if (creditsDetailDO.getStepNumber() >=step2){
  890. creditsDetailDO1.setIntegrate(2);
  891. creditsDetailDO1.setTradeDirection(1);
  892. }
  893. creditsDetailDO1.setSaasId("dev");
  894. creditsDetailDO1.setTradeType("ACTIVITY_TASK");
  895. creditsDetailDO1.setPatientId(creditsDetailDO.getPatientId());
  896. creditsDetailDO1.setHospital(creditsDetailDO.getHospital());
  897. creditsDetailDO1.setHospitalName(creditsDetailDO.getHospitalName());
  898. creditsDetailDO1.setAccountId(creditsDetailDO.getAccountId());
  899. creditsDetailDO1.setStatus(1);
  900. creditsDetailDO1.setCreateTime(new Date());
  901. creditsDetailDO1.setUpdateTime(new Date());
  902. creditsDetailDO1.setTransactionId(taskPatientDetailDO.getTaskId());
  903. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  904. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  905. accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
  906. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
  907. taskPatientDetailDao.save(taskPatientDetailDO);
  908. creditsDetailDO2.setTotal(accountDO.getTotal());
  909. creditsDetailDOS.add(creditsDetailDO2);
  910. }*/
  911. /* String step = redisTemplate.opsForValue().get(STEP);
  912. if (StringUtils.isEmpty(step)){
  913. throw new Exception("获取步数失败!");
  914. }
  915. JSONObject object = JSONObject.parseObject(step);
  916. int step1 = object.getInteger("step1");
  917. int step2 = object.getInteger("step2");
  918. */
  919. try{
  920. activeRecordService.insert("dev",creditsDetailDOS.get(0).getTransactionId(),null,null,null,creditsDetailDOS.get(0).getPatientId());
  921. }catch (Exception e){
  922. logger.error("插入活跃出错:"+e.getMessage());
  923. }
  924. MixEnvelop<CreditsDetailDO, CreditsDetailDO> envelop = new MixEnvelop<>();
  925. envelop.setDetailModelList(creditsDetailDOS);
  926. return envelop;
  927. }
  928. }catch (Exception e){
  929. e.printStackTrace();
  930. MixEnvelop<CreditsDetailDO, CreditsDetailDO> envelop = new MixEnvelop<>();
  931. return envelop;
  932. }
  933. }
  934. public MixEnvelop doctorDescreaseIntegrate(String ruleId,String patientId,String doctorId,String hospital,String hospitalName,Integer integrate,String reason) throws Exception {
  935. MixEnvelop envelop = new MixEnvelop<>();
  936. envelop.setObj(true);
  937. TaskDO taskDO = taskDao.selectByTaskRuleId(ruleId);
  938. String sql = "select * from wlyy_health_bank_account where status = 1 and patient_id = '"+patientId+"'";
  939. List<AccountDO> accountDOs = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
  940. AccountDO accountDO = accountDOs.get(0);
  941. if (taskDO == null){
  942. TaskRuleDO taskRuleDO = taskRuleDao.findByCode(ruleId);
  943. TaskDO taskDO1 = new TaskDO();
  944. taskDO1.setTitle(taskRuleDO.getName());
  945. taskDO1.setContent(taskRuleDO.getDescription());
  946. taskDO1.setSaasId("dev");
  947. taskDO1.setTaskCode("RULE");
  948. taskDO1.setType("RULE_TASK");
  949. taskDO1.setTransactionId(ruleId);
  950. taskDO1.setCreateTime(new Date());
  951. taskDO1.setUpdateTime(new Date());
  952. taskDO1.setRuleCode(taskRuleDO.getId());
  953. taskDO1.setStatus(1);
  954. taskDO = taskDao.save(taskDO1);
  955. }
  956. TaskPatientDetailDO patientDetailDO = taskPatientDetailDao.selectByTaskIdAndPatientId(taskDO.getId(),patientId);
  957. if (patientDetailDO == null){
  958. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  959. taskPatientDetailDO.setSaasId("dev");
  960. taskPatientDetailDO.setTaskId(taskDO.getId());
  961. taskPatientDetailDO.setPatientId(patientId);
  962. taskPatientDetailDO.setDoctorId(doctorId);
  963. taskPatientDetailDO.setPatientIdcard(accountDO.getIdCard());
  964. taskPatientDetailDO.setCreateTime(new Date());
  965. taskPatientDetailDO.setUpdateTime(new Date());
  966. taskPatientDetailDO.setStatus(1);
  967. taskPatientDetailDao.save(taskPatientDetailDO);
  968. }
  969. if (accountDO.getTotal().compareTo(integrate)>=0){
  970. CreditsDetailDO creditsDetailDO = new CreditsDetailDO();
  971. creditsDetailDO.setAccountId(accountDO.getId());
  972. creditsDetailDO.setIdCard(accountDO.getIdCard());
  973. creditsDetailDO.setSaasId("dev");
  974. creditsDetailDO.setTradeType("ACTIVITY_TASK");
  975. creditsDetailDO.setTradeDirection(-1);
  976. creditsDetailDO.setIntegrate(integrate);
  977. creditsDetailDO.setDescription(reason);
  978. creditsDetailDO.setStatus(1);
  979. creditsDetailDO.setHospital(hospital);
  980. creditsDetailDO.setHospitalName(hospitalName);
  981. creditsDetailDO.setCreateTime(new Date());
  982. creditsDetailDO.setUpdateTime(new Date());
  983. creditsDetailDO.setTransactionId(taskDO.getId());
  984. creditsDetailDO.setPatientId(patientId);
  985. creditsDetailDO.setHospitalName(hospitalName);
  986. credittsLogDetailDao.save(creditsDetailDO);
  987. accountDO.setTotal(accountDO.getTotal()-integrate);
  988. accountDao.save(accountDO);
  989. }else {
  990. envelop.setMessage("积分不足!");
  991. throw new Exception("积分不足!");
  992. }
  993. return envelop;
  994. }
  995. /*public JSONObject getStepNumber(){
  996. String step = redisTemplate.·().get(STEP);
  997. logger.info("redis数据:"+step);
  998. String sql = ""
  999. String step1 = systemDictDao.
  1000. logger.info("数据库的数据:"+step1);
  1001. if (step != null && step.equalsIgnoreCase(step1)){
  1002. JSONObject jsonObject = JSONObject.parseObject(step);
  1003. logger.info("数据不一致:"+jsonObject.toString());
  1004. return jsonObject;
  1005. }else {
  1006. JSONObject jsonObject = JSONObject.parseObject(step);
  1007. redisTemplate.opsForValue().set(STEP,step1);
  1008. logger.info("数据一致:"+jsonObject.toString());
  1009. return jsonObject;
  1010. }
  1011. }*/
  1012. public MixEnvelop<CreditsDetailDO, CreditsDetailDO> weekReward(CreditsDetailDO creditsDetailDO) {
  1013. try {
  1014. synchronized (creditsDetailDO.getPatientId()) {
  1015. String sqlAccount = "select * from wlyy_health_bank_account ba where ba.patient_id = '" + creditsDetailDO.getPatientId() + "'";
  1016. List<AccountDO> accountDOList = jdbcTemplate.query(sqlAccount, new BeanPropertyRowMapper(AccountDO.class));
  1017. if (accountDOList != null && accountDOList.size() != 0) {
  1018. creditsDetailDO.setAccountId(accountDOList.get(0).getId());
  1019. }
  1020. String creditsSql = "select * from wlyy_health_bank_credits_detail where patient_id = '" + creditsDetailDO.getPatientId() + "' and " +
  1021. "DATE_FORMAT(create_time,'%Y-%m-%d') IN " + creditsDetailDO.getWeekTimes()+" and description = '周奖励'";
  1022. List<CreditsDetailDO> creditsDetailDOS1 = jdbcTemplate.query(creditsSql, new BeanPropertyRowMapper(CreditsDetailDO.class));
  1023. List<CreditsDetailDO> creditsDetailDOList = new ArrayList<>();
  1024. MixEnvelop<CreditsDetailDO, CreditsDetailDO> envelop = new MixEnvelop<>();
  1025. if (getWeekOfDate(new Date()).equalsIgnoreCase("星期五")||getWeekOfDate(new Date()).equalsIgnoreCase("星期六")||getWeekOfDate(new Date()).equalsIgnoreCase("星期日")){
  1026. String sql = "select sum(integrate) as total from wlyy_health_bank_credits_detail where patient_id = '" + creditsDetailDO.getPatientId() + "' and description = '周奖励'";
  1027. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sql);
  1028. Long count = 0L;
  1029. if(rstotal!=null&&rstotal.size()>0){
  1030. Object object = rstotal.get(0).get("total");
  1031. if (object != null){
  1032. count = Long.parseLong(object.toString());
  1033. }
  1034. }
  1035. if (count > 12){
  1036. envelop.setMessage("奖励积分已达到12分。不能再奖励了!");
  1037. return envelop;
  1038. }else{
  1039. if (creditsDetailDOS1 == null || creditsDetailDOS1.size() == 0) {
  1040. creditsDetailDO.setTradeType("ACTIVITY_TASK");
  1041. creditsDetailDO.setSaasId("dev");
  1042. creditsDetailDO.setStatus(1);
  1043. creditsDetailDO.setTransactionId(creditsDetailDO.getTransactionId());
  1044. creditsDetailDO.setCreateTime(new Date());
  1045. creditsDetailDO.setUpdateTime(new Date());
  1046. creditsDetailDO.setTradeDirection(1);
  1047. CreditsDetailDO creditsDetailDO1 = credittsLogDetailDao.save(creditsDetailDO);
  1048. creditsDetailDOList.add(creditsDetailDO1);
  1049. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  1050. taskPatientDetailDO.setPatientId(creditsDetailDO1.getPatientId());
  1051. taskPatientDetailDO.setTaskId(creditsDetailDO1.getTransactionId());
  1052. String taskSql1 = ISqlUtils.getAllSql(taskPatientDetailDO);
  1053. List<TaskPatientDetailDO> taskPatientDetailDOS1 = jdbcTemplate.query(taskSql1, new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  1054. TaskPatientDetailDO taskPatientDetailDO1 = taskPatientDetailDOS1.get(0);
  1055. if (creditsDetailDO1.getTradeDirection() == 1) {
  1056. taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal() + creditsDetailDO1.getIntegrate());
  1057. } else if (creditsDetailDO.getTradeDirection() == -1) {
  1058. taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal() - creditsDetailDO1.getIntegrate());
  1059. }
  1060. taskPatientDetailDao.save(taskPatientDetailDO1);
  1061. AccountDO accountDO = accountDao.findOne(creditsDetailDO1.getAccountId());
  1062. if (creditsDetailDO1.getTradeDirection() == 1) {
  1063. accountDO.setTotal(accountDO.getTotal() + creditsDetailDO1.getIntegrate());
  1064. } else if (creditsDetailDO.getTradeDirection() == -1) {
  1065. accountDO.setTotal(accountDO.getTotal() - creditsDetailDO1.getIntegrate());
  1066. }
  1067. AccountDO accountDO1 = accountDao.save(accountDO);
  1068. List<CreditsDetailDO> creditsDetailDOS = new ArrayList<>();
  1069. for (CreditsDetailDO creditsDetailDO2 : creditsDetailDOList) {
  1070. creditsDetailDO2.setTotal(accountDO1.getTotal());
  1071. creditsDetailDO2.setFlag("1");
  1072. creditsDetailDOS.add(creditsDetailDO2);
  1073. }
  1074. envelop.setDetailModelList(creditsDetailDOS);
  1075. }else {
  1076. for (CreditsDetailDO creditsDetailDO1 : creditsDetailDOS1){
  1077. creditsDetailDO1.setFlag("2");
  1078. }
  1079. envelop.setDetailModelList(creditsDetailDOS1);
  1080. }
  1081. return envelop;
  1082. }
  1083. }else{
  1084. CreditsDetailDO creditsDetailDO1 = new CreditsDetailDO();
  1085. creditsDetailDO1.setFlag("0");
  1086. creditsDetailDOList.add(creditsDetailDO1);
  1087. envelop.setDetailModelList(creditsDetailDOList);
  1088. return envelop;
  1089. }
  1090. }
  1091. } catch (Exception e) {
  1092. e.printStackTrace();
  1093. MixEnvelop<CreditsDetailDO, CreditsDetailDO> envelop = new MixEnvelop<>();
  1094. return envelop;
  1095. }
  1096. }
  1097. public String getWeekOfDate(Date dt) {
  1098. String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
  1099. Calendar cal = Calendar.getInstance();
  1100. cal.setTime(dt);
  1101. int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
  1102. if (w < 0)
  1103. w = 0;
  1104. return weekDays[w];
  1105. }
  1106. /**
  1107. * 健康问答添加积分
  1108. *
  1109. * @param creditsDetailDO
  1110. * @return
  1111. * @throws Exception
  1112. */
  1113. public MixEnvelop<CreditsDetailDO,CreditsDetailDO> patientGetInteger(CreditsDetailDO creditsDetailDO) throws Exception {
  1114. MixEnvelop<CreditsDetailDO,CreditsDetailDO> envelop = new MixEnvelop<>();
  1115. TaskDO taskDO = taskDao.selectById(creditsDetailDO.getTransactionId());
  1116. ActivityRuleDO ruleDO = activityRuleDao.selectByActivityId(taskDO.getTransactionId());
  1117. JSONObject object = JSONObject.parseObject(ruleDO.getValue1());
  1118. Integer type = object.getInteger("type");
  1119. AccountDO accountDO = accountDao.selectByPatientId(creditsDetailDO.getPatientId());
  1120. creditsDetailDO.setUpdateTime(new Date());
  1121. creditsDetailDO.setCreateTime(new Date());
  1122. creditsDetailDO.setStatus(1);
  1123. if (type == 2){
  1124. creditsDetailDO.setCoupon(creditsDetailDO.getCoupon());
  1125. creditsDetailDO.setIntegrate(null);
  1126. }else if (type==1){
  1127. creditsDetailDO.setIntegrate(creditsDetailDO.getCoupon());
  1128. creditsDetailDO.setCoupon(null);
  1129. }
  1130. creditsDetailDO.setSaasId("dev");
  1131. creditsDetailDO.setTradeType("ACTIVITY_TASK");
  1132. creditsDetailDO.setTradeDirection(1);
  1133. creditsDetailDO.setAccountId(accountDO.getId());
  1134. CreditsDetailDO creditsDetailDO1 = credittsLogDetailDao.save(creditsDetailDO);
  1135. if (creditsDetailDO1 == null){
  1136. throw new Exception("积分添加失败!");
  1137. }
  1138. TaskPatientDetailDO patientDetailDO = taskPatientDetailDao.selectByTaskIdAndPatientId(creditsDetailDO.getTransactionId(),creditsDetailDO.getPatientId());
  1139. patientDetailDO.setUpdateTime(new Date());
  1140. patientDetailDO.setCreateTime(new Date());
  1141. if (type == 2){
  1142. patientDetailDO.setCouponTotal(patientDetailDO.getCouponTotal()+creditsDetailDO.getCoupon());
  1143. }else if (type==1||type==3){
  1144. patientDetailDO.setTotal(patientDetailDO.getTotal()+creditsDetailDO.getIntegrate());
  1145. }
  1146. patientDetailDO.setStatus(1);
  1147. TaskPatientDetailDO taskPatientDetailDO = taskPatientDetailDao.save(patientDetailDO);
  1148. if (taskPatientDetailDO == null){
  1149. throw new Exception("修改活动状态和积分失败!");
  1150. }
  1151. if (type == 2){
  1152. accountDO.setCouponTotal(accountDO.getCouponTotal()+creditsDetailDO.getCoupon());
  1153. }else if (type==1||type==3){
  1154. accountDO.setTotal(accountDO.getTotal()+creditsDetailDO.getIntegrate());
  1155. }
  1156. accountDO.setUpdateTime(new Date());
  1157. AccountDO accountDO1 = accountDao.save(accountDO);
  1158. if (accountDO1 == null){
  1159. throw new Exception("修改银行账户积分失败!");
  1160. }
  1161. envelop.setObj(creditsDetailDO);
  1162. return envelop;
  1163. }
  1164. /**
  1165. * 健康问答--获取当日积分
  1166. *
  1167. * @param patient
  1168. * @param transactionId
  1169. * @return
  1170. */
  1171. public MixEnvelop<CreditsDetailDO,CreditsDetailDO> selectByDate(String patient,String transactionId){
  1172. MixEnvelop<CreditsDetailDO,CreditsDetailDO> envelop = new MixEnvelop<>();
  1173. String sql ="select * from wlyy_health_bank_credits_detail where patient_id = '"+patient+"' and " +
  1174. "transaction_id = '"+transactionId+"' and create_time >='"+ DateUtils.getDayBegin()+"' and " +
  1175. "create_time <= '"+DateUtils.getDayEnd()+"'";
  1176. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(CreditsDetailDO.class));
  1177. CreditsDetailDO creditsDetailDO = new CreditsDetailDO();
  1178. if (creditsDetailDOS != null && creditsDetailDOS.size()!=0){
  1179. creditsDetailDO = creditsDetailDOS.get(0);
  1180. }
  1181. TaskDO taskDO = taskDao.selectById(transactionId);
  1182. ActivityRuleDO ruleDO = activityRuleDao.selectByActivityId(taskDO.getTransactionId());
  1183. //活动总积分排名
  1184. String rankingSql1 = "SELECT count(1)+1 AS total FROM (SELECT " +
  1185. " SUM(total) AS sum , " +
  1186. " patient_id, " +
  1187. " activity_id " +
  1188. "FROM " +
  1189. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.patient_id !='"+patient+"' " +
  1190. "GROUP BY btpd.patient_id )btpd1 " +
  1191. "WHERE " +
  1192. " btpd1.activity_id = '"+taskDO.getTransactionId()+"' AND btpd1.sum >= (SELECT SUM(s.total) as total " +
  1193. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+taskDO.getTransactionId()+"')" ;
  1194. List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(rankingSql1);
  1195. Long count = 0L;
  1196. if(rstotal1!=null&&rstotal1.size()>0){
  1197. count = (Long) rstotal1.get(0).get("total");
  1198. }
  1199. //总活动劵的排名
  1200. String rankingSql2 = "SELECT count(1)+1 AS total FROM (SELECT " +
  1201. " SUM(coupon_total) AS sum , " +
  1202. " patient_id, " +
  1203. " activity_id " +
  1204. "FROM " +
  1205. " wlyy_health_bank_task_patient_detail btpd WHERE btpd.patient_id !='"+patient+"' "+
  1206. "GROUP BY btpd.patient_id )btpd1 " +
  1207. "WHERE " +
  1208. " btpd1.activity_id = '"+taskDO.getTransactionId()+"' AND btpd1.sum >= (SELECT SUM(s.coupon_total) as couponTotal " +
  1209. "FROM wlyy_health_bank_task_patient_detail s WHERE s.patient_id ='"+patient+"' AND s.activity_id='"+taskDO.getTransactionId()+"')" ;
  1210. List<Map<String,Object>> rstotal2 = jdbcTemplate.queryForList(rankingSql2);
  1211. Long count2 = 0L;
  1212. if(rstotal2!=null&&rstotal2.size()>0){
  1213. count2 = (Long) rstotal2.get(0).get("total");
  1214. }
  1215. JSONObject object = JSONObject.parseObject(ruleDO.getValue1());
  1216. Integer type = object.getInteger("type");
  1217. if (type == 2){
  1218. creditsDetailDO.setActivityRanking(count2);
  1219. creditsDetailDO.setMark(1);
  1220. }else if (type==1||type==3){
  1221. creditsDetailDO.setActivityRanking(count);
  1222. creditsDetailDO.setMark(2);
  1223. }
  1224. envelop.setObj(creditsDetailDO);
  1225. return envelop;
  1226. }
  1227. /**
  1228. * 分享获取积分
  1229. *
  1230. * @param creditsDetailDO
  1231. * @return
  1232. */
  1233. public MixEnvelop<CreditsDetailDO, CreditsDetailDO> shareIntegrate(CreditsDetailDO creditsDetailDO) {
  1234. try {
  1235. synchronized (creditsDetailDO.getPatientId()) {
  1236. String sqlAccount = "select * from wlyy_health_bank_account ba where ba.patient_id = '" + creditsDetailDO.getPatientId() + "'";
  1237. List<AccountDO> accountDOList = jdbcTemplate.query(sqlAccount, new BeanPropertyRowMapper(AccountDO.class));
  1238. if (accountDOList != null && accountDOList.size() != 0) {
  1239. creditsDetailDO.setAccountId(accountDOList.get(0).getId());
  1240. }
  1241. String creditsSql = "select * from wlyy_health_bank_credits_detail where patient_id = '" + creditsDetailDO.getPatientId() + "' and description = '分享'";
  1242. List<CreditsDetailDO> creditsDetailDOS1 = jdbcTemplate.query(creditsSql, new BeanPropertyRowMapper(CreditsDetailDO.class));
  1243. List<CreditsDetailDO> creditsDetailDOList = new ArrayList<>();
  1244. MixEnvelop<CreditsDetailDO, CreditsDetailDO> envelop = new MixEnvelop<>();
  1245. if (creditsDetailDOS1 == null || creditsDetailDOS1.size() == 0) {
  1246. creditsDetailDO.setTradeType("ACTIVITY_TASK");
  1247. creditsDetailDO.setDescription("分享");
  1248. creditsDetailDO.setSaasId("dev");
  1249. creditsDetailDO.setStatus(1);
  1250. creditsDetailDO.setTransactionId(creditsDetailDO.getTransactionId());
  1251. creditsDetailDO.setCreateTime(new Date());
  1252. creditsDetailDO.setUpdateTime(new Date());
  1253. creditsDetailDO.setTradeDirection(1);
  1254. CreditsDetailDO creditsDetailDO1 = credittsLogDetailDao.save(creditsDetailDO);
  1255. creditsDetailDO1.setFlag("1");
  1256. creditsDetailDOList.add(creditsDetailDO1);
  1257. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  1258. taskPatientDetailDO.setPatientId(creditsDetailDO1.getPatientId());
  1259. taskPatientDetailDO.setTaskId(creditsDetailDO1.getTransactionId());
  1260. String taskSql1 = ISqlUtils.getAllSql(taskPatientDetailDO);
  1261. List<TaskPatientDetailDO> taskPatientDetailDOS1 = jdbcTemplate.query(taskSql1, new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  1262. TaskPatientDetailDO taskPatientDetailDO1 = taskPatientDetailDOS1.get(0);
  1263. if (creditsDetailDO1.getTradeDirection() == 1) {
  1264. taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal() + creditsDetailDO1.getIntegrate());
  1265. } else if (creditsDetailDO.getTradeDirection() == -1) {
  1266. taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal() - creditsDetailDO1.getIntegrate());
  1267. }
  1268. taskPatientDetailDao.save(taskPatientDetailDO1);
  1269. AccountDO accountDO = accountDao.findOne(creditsDetailDO1.getAccountId());
  1270. if (creditsDetailDO1.getTradeDirection() == 1) {
  1271. accountDO.setTotal(accountDO.getTotal() + creditsDetailDO1.getIntegrate());
  1272. } else if (creditsDetailDO.getTradeDirection() == -1) {
  1273. accountDO.setTotal(accountDO.getTotal() - creditsDetailDO1.getIntegrate());
  1274. }
  1275. accountDao.save(accountDO);
  1276. envelop.setDetailModelList(creditsDetailDOList);
  1277. }else {
  1278. for (CreditsDetailDO creditsDetailDO1:creditsDetailDOS1){
  1279. creditsDetailDO1.setFlag("2");
  1280. creditsDetailDOList.add(creditsDetailDO1);
  1281. }
  1282. envelop.setDetailModelList(creditsDetailDOList);
  1283. }
  1284. return envelop;
  1285. }
  1286. } catch (Exception e) {
  1287. e.printStackTrace();
  1288. MixEnvelop<CreditsDetailDO, CreditsDetailDO> envelop = new MixEnvelop<>();
  1289. return envelop;
  1290. }
  1291. }
  1292. }