CreditsDetailService.java 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  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.base.mysql.query.BaseJpaService;
  8. import com.yihu.jw.dao.*;
  9. import com.yihu.jw.entity.health.bank.*;
  10. import com.yihu.jw.restmodel.common.Envelop;
  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 org.apache.commons.lang3.StringUtils;
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.data.redis.core.StringRedisTemplate;
  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.ArrayList;
  26. import java.util.Date;
  27. import java.util.List;
  28. import java.util.Map;
  29. /**
  30. * @author wangzhinan
  31. * @create 2018-04-27 16:53
  32. * @desc credits log info Service
  33. **/
  34. @Service
  35. @Transactional
  36. public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,CredittsLogDetailDao> {
  37. private Logger logger = LoggerFactory.getLogger(CreditsDetailService.class);
  38. private static String STEP = "health:blank:step";
  39. @Autowired
  40. private CredittsLogDetailDao credittsLogDetailDao;
  41. @Autowired
  42. private TaskDao taskDao;
  43. @Autowired
  44. private ActivityDao activityDao;
  45. @Autowired
  46. private JdbcTemplate jdbcTemplate;
  47. @Autowired
  48. private AccountDao accountDao;
  49. @Autowired
  50. private TaskPatientDetailDao taskPatientDetailDao;
  51. @Autowired
  52. private TaskRuleDao taskRuleDao;
  53. @Autowired
  54. private StringRedisTemplate redisTemplate;
  55. @Autowired
  56. private ActiveRecordService activeRecordService;
  57. /**
  58. * find creditsLogInfo
  59. *
  60. * @return
  61. * @throws ParseException
  62. */
  63. public Envelop<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 Envelop.getSuccessListWithPage(HealthBankMapping.api_success, creditsDetailDOS,page,size,count);
  79. }
  80. /**
  81. * 获取账户信息
  82. *
  83. * @param creditsDetailDO
  84. * @return
  85. */
  86. public Envelop<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. accountDO1.setCardNumber("jw");
  95. accountDO1.setHospital("海沧区");
  96. accountDO1.setPassword("321321312321");
  97. accountDO1.setHospitalName("haichan");
  98. accountDO1.setCreateTime(new Date());
  99. accountDO1.setUpdateTime(new Date());
  100. accountDao.save(accountDO1);
  101. }
  102. List<AccountDO> accountDOS1 = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(AccountDO.class));
  103. AccountDO accountDO = accountDOS1.get(0);
  104. 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()+"'";
  105. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sql);
  106. if (rstotal!= null && rstotal.size()>0){
  107. if (rstotal.get(0).get("total") == null){
  108. accountDO.setUsedTotal(0);
  109. }else {
  110. accountDO.setUsedTotal(Integer.parseInt(rstotal.get(0).get("total").toString()));
  111. }
  112. }
  113. return Envelop.getSuccess(HealthBankMapping.api_success,accountDO);
  114. }
  115. /*
  116. public Envelop<Boolean> exchangeGoods(GoodsDO goodsDO){
  117. CreditsDetailDO creditsLogDetailDO = new CreditsDetailDO();
  118. Envelop<Boolean> envelop = new Envelop<>();
  119. envelop.setObj(true);
  120. return envelop;
  121. }
  122. */
  123. public Envelop<AccountDO> selectByRanking(List<String> patientIds, Integer page, Integer size){
  124. StringBuffer buffer = new StringBuffer();
  125. buffer.append(" ba.patient_id in(");
  126. if (patientIds == null || patientIds.size() == 0){
  127. buffer.append("''");
  128. }else {
  129. for (int i=0;i<patientIds.size();i++){
  130. buffer.append("'"+patientIds.get(i)+"'").append(",");
  131. }
  132. buffer.deleteCharAt(buffer.length()-1);
  133. }
  134. buffer.append(") ");
  135. String sql =
  136. "SELECT ba1.patient_id AS patient_id," +
  137. "ba1.account_name AS account_name," +
  138. "ba1.hospital AS hospital," +
  139. "ba1.total AS total," +
  140. "ba1.create_time AS create_time," +
  141. "ba1.sum AS sum" +
  142. " FROM" +
  143. "( SELECT " +
  144. "ba.patient_id AS patient_id," +
  145. "ba.account_name AS account_name," +
  146. "ba.hospital AS hospital," +
  147. "ba.total AS total," +
  148. "ba.create_time AS create_time," +
  149. " if(ba.total=0,ba.total,(ba.total +COALESCE((cd1.total),0))) AS sum" +
  150. " FROM" +
  151. " wlyy_health_bank_account ba" +
  152. " LEFT JOIN ( " +
  153. "SELECT" +
  154. " SUM(cd.integrate) AS total," +
  155. " cd.patient_id AS patient_id" +
  156. " FROM" +
  157. " wlyy_health_bank_credits_detail cd" +
  158. " WHERE " +
  159. "cd.trade_direction = - 1" +
  160. " GROUP BY " +
  161. " cd.patient_id ) cd1 ON cd1.patient_id = ba.patient_id " +
  162. " WHERE " + buffer +
  163. " ORDER BY" +
  164. " ba.create_time DESC " +
  165. "LIMIT "+(page-1)*size+","+size +")ba1" +
  166. " ORDER BY " +
  167. " ba1.total DESC";
  168. List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
  169. String sqlCount = "SELECT count(1) AS total"+
  170. " FROM " +
  171. " wlyy_health_bank_account ba LEFT JOIN " +
  172. " ( " +
  173. " SELECT " +
  174. " SUM(cd.integrate) AS total, " +
  175. " cd.patient_id AS patient_id " +
  176. " FROM " +
  177. " wlyy_health_bank_credits_detail cd " +
  178. " WHERE " +
  179. " cd.trade_direction = - 1 " +
  180. " GROUP BY " +
  181. " cd.patient_id " +
  182. " ) cd1 ON cd1.patient_id = ba.patient_id " +
  183. "WHERE " + buffer +
  184. " ORDER BY " +
  185. " ba.create_time, " +
  186. " (ba.total + COALESCE(cd1.total,0)) DESC ";
  187. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
  188. Long count = 0L;
  189. if(rstotal!=null&&rstotal.size()>0){
  190. count = (Long) rstotal.get(0).get("total");
  191. }
  192. return Envelop.getSuccessListWithPage(HealthBankMapping.api_success, accountDOS,page,size,count);
  193. }
  194. /**
  195. * 添加积分
  196. *
  197. * @param creditsDetailDO
  198. * @return
  199. */
  200. public Envelop<CreditsDetailDO> insert(CreditsDetailDO creditsDetailDO){
  201. try {
  202. synchronized (creditsDetailDO.getPatientId()){
  203. String sqlAccount = "select * from wlyy_health_bank_account ba where ba.patient_id = '"+creditsDetailDO.getPatientId() +"'";
  204. List<AccountDO> accountDOList = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
  205. if (accountDOList != null && accountDOList.size() != 0){
  206. creditsDetailDO.setAccountId(accountDOList.get(0).getId());
  207. }else {
  208. AccountDO accountDO1 = new AccountDO();
  209. accountDO1.setPatientId(creditsDetailDO.getPatientId());
  210. accountDO1.setTotal(0);
  211. accountDO1.setAccountName(creditsDetailDO.getName());
  212. accountDO1.setCardNumber(creditsDetailDO.getIdCard());
  213. accountDO1.setHospital("350205");
  214. accountDO1.setPassword("321321312321");
  215. accountDO1.setHospitalName("海沧区");
  216. accountDO1.setCreateTime(new Date());
  217. accountDO1.setUpdateTime(new Date());
  218. accountDao.save(accountDO1);
  219. List<AccountDO> accountDOS = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
  220. creditsDetailDO.setAccountId(accountDOS.get(0).getId());
  221. }
  222. TaskDO taskDO = new TaskDO();
  223. taskDO.setTaskCode(creditsDetailDO.getFlag());
  224. taskDO.setId(creditsDetailDO.getTransactionId());
  225. /*taskDO.setPatientId(creditsDetailDO.getPatientId());*/
  226. String sql = ISqlUtils.getSql(taskDO,1,1,"*");
  227. List<TaskDO> taskDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskDO.class));
  228. creditsDetailDO.setTransactionId(taskDOList.get(0).getId());
  229. String ruleSql = "SELECT * FROM wlyy_health_bank_task_rule WHERE id= '"+taskDOList.get(0).getRuleCode()+"'";
  230. List<TaskRuleDO> taskRuleDOS = jdbcTemplate.query(ruleSql,new BeanPropertyRowMapper(TaskRuleDO.class));
  231. TaskRuleDO taskRuleDO = taskRuleDOS.get(0);
  232. creditsDetailDO.setIntegrate(taskRuleDO.getIntegrate());
  233. creditsDetailDO.setTradeDirection(taskRuleDO.getTradeDirection());
  234. String taskSql = "select * from wlyy_health_bank_task_patient_detail where task_id = '"+taskDOList.get(0).getId()+"' and patient_id = '" + creditsDetailDO.getPatientId() +"'";
  235. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(taskSql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  236. if (taskPatientDetailDOS == null || taskPatientDetailDOS.size() ==0){
  237. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  238. taskPatientDetailDO.setTaskId(creditsDetailDO.getTransactionId());
  239. taskPatientDetailDO.setSaasId(creditsDetailDO.getSaasId());
  240. taskPatientDetailDO.setPatientId(creditsDetailDO.getPatientId());
  241. taskPatientDetailDO.setPatientIdcard(creditsDetailDO.getIdCard());
  242. taskPatientDetailDO.setPatientOpenid(creditsDetailDO.getOpenId());
  243. taskPatientDetailDO.setUnionId(creditsDetailDO.getUnionId());
  244. taskPatientDetailDO.setStatus(Integer.parseInt("0"));
  245. taskPatientDetailDO.setCreateTime(new Date());
  246. taskPatientDetailDO.setUpdateTime(new Date());
  247. taskPatientDetailDO.setActivityId(taskDOList.get(0).getTransactionId());
  248. taskPatientDetailDO.setTotal(Long.parseLong("0"));
  249. taskPatientDetailDao.save(taskPatientDetailDO);
  250. }else if (taskPatientDetailDOS != null && taskDOList.get(0).getPeriod() == 0){
  251. String taskSql1 = "select * from wlyy_health_bank_task_patient_detail where task_id = '"+taskDOList.get(0).getId()+
  252. "' and patient_id = '"+creditsDetailDO.getPatientId()+"' and create_time > '" + DateUtils.getDayBegin() +"' and create_time < '"+ DateUtils.getDayEnd() +"'";
  253. List<TaskPatientDetailDO> taskPatientDetailDOS1 = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  254. if (taskPatientDetailDOS1 == null || taskPatientDetailDOS1.size() == 0){
  255. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  256. taskPatientDetailDO.setTaskId(creditsDetailDO.getTransactionId());
  257. taskPatientDetailDO.setSaasId(creditsDetailDO.getSaasId());
  258. taskPatientDetailDO.setPatientId(creditsDetailDO.getPatientId());
  259. taskPatientDetailDO.setPatientIdcard(creditsDetailDO.getIdCard());
  260. taskPatientDetailDO.setPatientOpenid(creditsDetailDO.getOpenId());
  261. taskPatientDetailDO.setActivityId(taskDOList.get(0).getTransactionId());
  262. taskPatientDetailDO.setStatus(Integer.parseInt("0"));
  263. taskPatientDetailDO.setCreateTime(new Date());
  264. taskPatientDetailDO.setUpdateTime(new Date());
  265. taskPatientDetailDO.setTotal(Long.parseLong("0"));
  266. taskPatientDetailDao.save(taskPatientDetailDO);
  267. }
  268. }
  269. creditsDetailDO.setCreateTime(new Date());
  270. creditsDetailDO.setUpdateTime(new Date());
  271. CreditsDetailDO creditsDetailDO1 =credittsLogDetailDao.save(creditsDetailDO);
  272. creditsDetailDO1.setFlag(creditsDetailDO.getFlag());
  273. List<CreditsDetailDO> creditsDetailDOList = new ArrayList<>();
  274. creditsDetailDOList.add(creditsDetailDO1);
  275. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  276. taskPatientDetailDO.setPatientId(creditsDetailDO1.getPatientId());
  277. taskPatientDetailDO.setTaskId(creditsDetailDO1.getTransactionId());
  278. String taskSql1 = ISqlUtils.getAllSql(taskPatientDetailDO);
  279. List<TaskPatientDetailDO> taskPatientDetailDOS1 = jdbcTemplate.query(taskSql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  280. TaskPatientDetailDO taskPatientDetailDO1 = taskPatientDetailDOS1.get(0);
  281. if (creditsDetailDO1.getTradeDirection() == 1){
  282. taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal()+creditsDetailDO1.getIntegrate());
  283. }else if (creditsDetailDO.getTradeDirection() == -1){
  284. taskPatientDetailDO1.setTotal(taskPatientDetailDO1.getTotal()-creditsDetailDO1.getIntegrate());
  285. }
  286. taskPatientDetailDao.save(taskPatientDetailDO1);
  287. AccountDO accountDO = accountDao.findOne(creditsDetailDO1.getAccountId());
  288. if (creditsDetailDO1.getTradeDirection() == 1){
  289. accountDO.setTotal(accountDO.getTotal()+creditsDetailDO1.getIntegrate());
  290. }else if (creditsDetailDO.getTradeDirection() == -1){
  291. accountDO.setTotal(accountDO.getTotal()-creditsDetailDO1.getIntegrate());
  292. }
  293. AccountDO accountDO1 = accountDao.save(accountDO);
  294. List<CreditsDetailDO> creditsDetailDOS = new ArrayList<>();
  295. for (CreditsDetailDO creditsDetailDO2:creditsDetailDOList){
  296. creditsDetailDO2.setTotal(accountDO1.getTotal());
  297. creditsDetailDOS.add(creditsDetailDO2);
  298. }
  299. Envelop<CreditsDetailDO> envelop = new Envelop<>();
  300. envelop.setDetailModelList(creditsDetailDOS);
  301. return envelop;
  302. }
  303. }catch (Exception e){
  304. e.printStackTrace();
  305. Envelop<CreditsDetailDO> envelop = new Envelop<>();
  306. return envelop;
  307. }
  308. }
  309. /**
  310. * 活动排名
  311. *
  312. * @param activityId 活动id
  313. * @param ids 微信编码
  314. *
  315. * @param page 页码
  316. *
  317. * @param size 分页大小
  318. * @return
  319. */
  320. public Envelop<TaskPatientDetailDO> selectByActivityRanking(String activityId,List<String> ids,Integer page,Integer size){
  321. StringBuffer buffer = new StringBuffer();
  322. buffer.append("(");
  323. if (ids == null || ids.size() == 0){
  324. buffer.append("''");
  325. }else {
  326. for (int i=0;i<ids.size();i++){
  327. buffer.append("'"+ids.get(i)+"'").append(",");
  328. }
  329. buffer.deleteCharAt(buffer.length()-1);
  330. }
  331. buffer.append(") ");
  332. String sql = "SELECT " +
  333. " * " +
  334. "FROM " +
  335. " ( " +
  336. " SELECT " +
  337. " SUM(ptpd.total) AS total, " +
  338. " ptpd.patient_openid AS patient_openid, " +
  339. " ptpd.task_id AS task_id, " +
  340. " ptpd.activity_id AS activity_id, " +
  341. " ptpd.create_time as create_time, " +
  342. " ptpd.patient_id AS patient_id " +
  343. " FROM " +
  344. " wlyy_health_bank_task_patient_detail ptpd " +
  345. " WHERE " +
  346. " activity_id = '" + activityId +
  347. "' GROUP BY " +
  348. " patient_id " +
  349. " ORDER BY ptpd.create_time DESC " +
  350. " )btpd1 " +
  351. " WHERE patient_id IN "+buffer+
  352. " ORDER BY btpd1.total DESC "+" LIMIT " + (page-1)*size+","+size;
  353. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  354. for (TaskPatientDetailDO taskPatientDetailDO : taskPatientDetailDOS){
  355. String accountSql = "select * from wlyy_health_bank_account where patient_id = '"+taskPatientDetailDO.getPatientId()+"'";
  356. List<AccountDO> accountDOS = jdbcTemplate.query(accountSql,new BeanPropertyRowMapper(AccountDO.class));
  357. taskPatientDetailDO.setAccountDO(accountDOS.get(0));
  358. }
  359. String sqlCount = "SELECT " +
  360. " count(1) AS total " +
  361. "FROM " +
  362. " ( " +
  363. " SELECT " +
  364. " SUM(ptpd.total) AS total, " +
  365. " ptpd.patient_openid AS patient_openid, " +
  366. " ptpd.task_id AS task_id, " +
  367. " ptpd.activity_id AS activity_id, " +
  368. " ptpd.create_time as create_time, " +
  369. " ptpd.patient_id AS patient_id " +
  370. " FROM " +
  371. " wlyy_health_bank_task_patient_detail ptpd " +
  372. " WHERE " +
  373. " activity_id = '" + activityId+
  374. "' GROUP BY " +
  375. " patient_openid " +
  376. " ORDER BY ptpd.create_time DESC " +
  377. " )btpd1 " +
  378. "WHERE patient_openid IN "+buffer+
  379. " ORDER BY btpd1.total DESC ";
  380. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
  381. Long count = 0L;
  382. if(rstotal!=null&&rstotal.size()>0){
  383. count = (Long) rstotal.get(0).get("total");
  384. }
  385. return Envelop.getSuccessListWithPage(HealthBankMapping.api_success, taskPatientDetailDOS,page,size,count);
  386. }
  387. /**
  388. * 根据活动查询积分
  389. *
  390. * @param activityId 活动id
  391. *
  392. * @param patientId 居民id
  393. *
  394. * @param page 页码
  395. *
  396. * @param size 分页大小
  397. * @return
  398. */
  399. public Envelop<CreditsDetailDO> selectByActivity(String activityId,String patientId,Integer page,Integer size){
  400. String sql="SELECT * " +
  401. "FROM " +
  402. " wlyy_health_bank_credits_detail " +
  403. "WHERE" +
  404. " transaction_id IN ( " +
  405. " SELECT " +
  406. " bt.id " +
  407. " FROM " +
  408. " wlyy_health_bank_task bt " +
  409. " WHERE " +
  410. " transaction_id = '"+activityId +"' " +
  411. " ) " +
  412. " and patient_id = '" +patientId+
  413. "' LIMIT "+(page-1)*size +","+size;
  414. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(CreditsDetailDO.class));
  415. for (CreditsDetailDO creditsDetailDO : creditsDetailDOS){
  416. TaskDO taskDO = taskDao.findOne(creditsDetailDO.getTransactionId());
  417. creditsDetailDO.setTaskDO(taskDO);
  418. }
  419. String sqlcount = "SELECT count(1) AS" +
  420. " total FROM " +
  421. " wlyy_health_bank_credits_detail " +
  422. "WHERE" +
  423. " transaction_id IN ( " +
  424. " SELECT " +
  425. " bt.id " +
  426. " FROM " +
  427. " wlyy_health_bank_task bt " +
  428. " WHERE " +
  429. " transaction_id = '"+activityId +"' " +
  430. " ) " +
  431. " and patient_id = '" +patientId+
  432. "'";
  433. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
  434. Long count = 0L;
  435. if(rstotal!=null&&rstotal.size()>0){
  436. count = (Long) rstotal.get(0).get("total");
  437. }
  438. return Envelop.getSuccessListWithPage(HealthBankMapping.api_success,creditsDetailDOS,page,size,count);
  439. }
  440. /**
  441. * 根据活动查找全部排行
  442. *
  443. * @param activityId 活动id
  444. * @param page 页码
  445. * @param size 分页大小
  446. * @return
  447. */
  448. public Envelop<TaskPatientDetailDO> selectByActivityRanking1(String activityId,String patientId,Integer page,Integer size){
  449. String sql = "SELECT " +
  450. " * " +
  451. "FROM " +
  452. " ( " +
  453. " SELECT " +
  454. " SUM(ptpd.total) AS total, " +
  455. " ptpd.patient_openid AS patient_openid, " +
  456. " ptpd.task_id AS task_id, " +
  457. " ptpd.activity_id AS activity_id, " +
  458. " ptpd.create_time as create_time, " +
  459. " ptpd.patient_id AS patient_id " +
  460. " FROM " +
  461. " wlyy_health_bank_task_patient_detail ptpd " +
  462. " WHERE " +
  463. " activity_id = '" + activityId +
  464. "' GROUP BY " +
  465. " patient_openid " +
  466. " ORDER BY ptpd.create_time DESC " +
  467. " )btpd1 " +
  468. " ORDER BY btpd1.total DESC "+" LIMIT " + (page-1)*size+","+size;
  469. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  470. logger.info(taskPatientDetailDOS.toString()+""+taskPatientDetailDOS.size());
  471. for (int i = 0;taskPatientDetailDOS != null&&taskPatientDetailDOS.size()!=0 && i<taskPatientDetailDOS.size();i++){
  472. TaskPatientDetailDO taskPatientDetailDO = taskPatientDetailDOS.get(i);
  473. String accountSql = "select * from wlyy_health_bank_account where patient_id = '"+taskPatientDetailDO.getPatientId()+"'";
  474. List<AccountDO> accountDOS = jdbcTemplate.query(accountSql,new BeanPropertyRowMapper(AccountDO.class));
  475. if (taskPatientDetailDOS.get(i).getPatientId().equalsIgnoreCase(patientId)){
  476. /*String taskSql = "select count(1)+1 as total from (" +
  477. "select * from (SELECT " +
  478. " SUM(ptpd.total) AS total, " +
  479. " ptpd.patient_openid AS patient_openid, " +
  480. " ptpd.task_id AS task_id, " +
  481. " ptpd.activity_id AS activity_id, " +
  482. " ptpd.create_time as create_time, " +
  483. " ptpd.patient_id AS patient_id " +
  484. " FROM " +
  485. " wlyy_health_bank_task_patient_detail ptpd " +
  486. " WHERE " +
  487. " activity_id = '" + activityId + "')ptpd1 where" +
  488. " ptpd1.patient_id = '"+patientId+"' AND ptpd1.total > "+taskPatientDetailDOS.get(i).getTotal()+") ptpd2";
  489. List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(taskSql);
  490. Long count = 0L;
  491. if(rstotal1!=null&&rstotal1.size()>0){
  492. count = (Long) rstotal1.get(0).get("total");
  493. }
  494. accountDOS.get(0).setActivityRanking(count);*/
  495. taskPatientDetailDO.setIsFlag(1);
  496. }else {
  497. taskPatientDetailDO.setIsFlag(0);
  498. }
  499. taskPatientDetailDO.setAccountDO(accountDOS.get(0));
  500. }
  501. String sqlCount = "SELECT " +
  502. " count(1) AS total " +
  503. "FROM " +
  504. " ( " +
  505. " SELECT " +
  506. " SUM(ptpd.total) AS total, " +
  507. " ptpd.patient_openid AS patient_openid, " +
  508. " ptpd.task_id AS task_id, " +
  509. " ptpd.activity_id AS activity_id, " +
  510. " ptpd.create_time as create_time, " +
  511. " ptpd.patient_id AS patient_id " +
  512. " FROM " +
  513. " wlyy_health_bank_task_patient_detail ptpd " +
  514. " WHERE " +
  515. " activity_id = '" + activityId+
  516. "' GROUP BY " +
  517. " patient_openid " +
  518. " ORDER BY ptpd.create_time DESC " +
  519. " )btpd1 " +
  520. " ORDER BY btpd1.total DESC ";
  521. List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
  522. Long count = 0L;
  523. if(rstotal!=null&&rstotal.size()>0){
  524. count = (Long) rstotal.get(0).get("total");
  525. }
  526. return Envelop.getSuccessListWithPage(HealthBankMapping.api_success, taskPatientDetailDOS,page,size,count);
  527. }
  528. /**
  529. * 医生主动加分
  530. *
  531. * @param array 居民信息集合
  532. *
  533. * @param ruleId 规则id
  534. * @return
  535. */
  536. public Envelop<Boolean> doctorAddIntegrate(JSONArray array, String ruleId, String description) throws Exception {
  537. Envelop<Boolean> envelop = new Envelop<>();
  538. for (int i=0;i<array.size();i++){
  539. TaskRuleDO taskRuleDO = taskRuleDao.findOne(ruleId);
  540. JSONObject object = array.getJSONObject(i);
  541. String patientId = object.getString("code");
  542. String idCard = object.getString("idcard");
  543. String unionId = object.getString("unionid");
  544. String openId = object.getString("openid");
  545. String taskSql = "select * from wlyy_health_bank_task bt where type = 'RULE_TASK' AND transaction_id = '"+ruleId +"'";
  546. List<TaskDO> taskDOList = jdbcTemplate.query(taskSql,new BeanPropertyRowMapper(TaskDO.class));
  547. TaskDO taskDO1 = new TaskDO();
  548. if (taskDOList.isEmpty() && taskDOList.size() == 0){
  549. TaskDO taskDO = new TaskDO();
  550. taskDO.setTransactionId(taskRuleDO.getId());
  551. taskDO.setTaskCode("RULE");
  552. taskDO.setStatus(1);
  553. taskDO.setRuleCode(taskRuleDO.getId());
  554. taskDO.setType("RULE_TASK");
  555. taskDO.setCreateTime(new Date());
  556. taskDO.setUpdateTime(new Date());
  557. taskDO.setPeriod(taskRuleDO.getPeriod());
  558. taskDO.setSaasId("dev");
  559. taskDO.setTitle(taskRuleDO.getDescription());
  560. taskDO.setContent(taskRuleDO.getDescription());
  561. taskDO1 = taskDao.save(taskDO);
  562. }else {
  563. taskDO1 = taskDOList.get(0);
  564. }
  565. if (taskRuleDO.getPeriod() == 1){
  566. String sql = "select * from wlyy_health_bank_task_patient_detail where patient_id = '"+patientId+"'AND task_id ='"+taskDO1.getId()+"'";
  567. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  568. if (taskPatientDetailDOS != null && taskPatientDetailDOS.size() != 0){
  569. throw new Exception("已奖励过");
  570. }
  571. }else if (taskRuleDO.getPeriod() == 0){
  572. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  573. Date date = new Date();
  574. String date1 = dateFormat.format(date);
  575. String begin = DateUtils.getMinMonthDate(date1);
  576. String end = DateUtils.getMaxMonthDate(date1);
  577. 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+"'";
  578. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  579. if (taskPatientDetailDOS != null && taskPatientDetailDOS.size() != 0){
  580. throw new Exception("已奖励过");
  581. }
  582. }
  583. String sql1 = "select * from wlyy_health_bank_task_patient_detail where task_id = '"+taskDO1.getId()+"' " +
  584. "AND patient_idcard = '"+idCard+"' AND patient_openid = '"+openId+"' AND union_id = '"+unionId+"'";
  585. List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  586. TaskPatientDetailDO taskPatientDetailDO1 = new TaskPatientDetailDO();
  587. if (taskPatientDetailDOS.isEmpty() && taskPatientDetailDOS.size() == 0){
  588. TaskPatientDetailDO taskPatientDetailDO = new TaskPatientDetailDO();
  589. taskPatientDetailDO.setStatus(1);
  590. taskPatientDetailDO.setTotal(Long.parseLong("0"));
  591. taskPatientDetailDO.setPatientId(patientId);
  592. taskPatientDetailDO.setPatientOpenid(openId);
  593. taskPatientDetailDO.setPatientIdcard(idCard);
  594. taskPatientDetailDO.setUnionId(unionId);
  595. taskPatientDetailDO.setSaasId("dev");
  596. taskPatientDetailDO.setCreateTime(new Date());
  597. taskPatientDetailDO.setUpdateTime(new Date());
  598. taskPatientDetailDO.setTaskId(taskDO1.getId());
  599. taskPatientDetailDO1 = taskPatientDetailDao.save(taskPatientDetailDO);
  600. }else {
  601. taskPatientDetailDO1 = taskPatientDetailDOS.get(0);
  602. }
  603. String sql = "select * from wlyy_health_bank_account where patient_id = '"+patientId+"'";
  604. List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
  605. if (taskRuleDO.getTradeDirection() == -1 && taskRuleDO.getIntegrate() == 0){
  606. String integrateSql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+patientId+"' " +
  607. "AND transaction_id IN (SELECT id FROM wlyy_health_bank_task WHERE task_code IN ('BP_BIND','GLU_BIND','BP_MEASURE','GLU_MEASURE','RULE'))";
  608. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(integrateSql,new BeanPropertyRowMapper(CreditsDetailDO.class));
  609. for (CreditsDetailDO creditsDetailDO:creditsDetailDOS){
  610. if (creditsDetailDO.getTradeDirection()==1&&creditsDetailDO.getStatus()!=0){
  611. AccountDO accountDO = accountDOS.get(0);
  612. int total = accountDO.getTotal() - creditsDetailDO.getIntegrate();
  613. creditsDetailDO.setStatus(0);
  614. creditsDetailDO.setDescription(description);
  615. credittsLogDetailDao.save(creditsDetailDO);
  616. accountDO.setTotal(total);
  617. accountDao.save(accountDO);
  618. }
  619. }
  620. CreditsDetailDO creditsDetailDO1 = new CreditsDetailDO();
  621. creditsDetailDO1.setStatus(1);
  622. creditsDetailDO1.setAccountId(accountDOS.get(0).getId());
  623. creditsDetailDO1.setHospital("350205");
  624. creditsDetailDO1.setPatientId(patientId);
  625. creditsDetailDO1.setIntegrate(taskRuleDO.getIntegrate());
  626. creditsDetailDO1.setTradeDirection(taskRuleDO.getTradeDirection());
  627. creditsDetailDO1.setDescription(description);
  628. creditsDetailDO1.setCreateTime(new Date());
  629. creditsDetailDO1.setUpdateTime(new Date());
  630. creditsDetailDO1.setTransactionId(taskDO1.getId());
  631. creditsDetailDO1.setTradeType("ACTIVITY_TASK");
  632. credittsLogDetailDao.save(creditsDetailDO1);
  633. }else{
  634. CreditsDetailDO creditsDetailDO = new CreditsDetailDO();
  635. creditsDetailDO.setStatus(1);
  636. creditsDetailDO.setAccountId(accountDOS.get(0).getId());
  637. creditsDetailDO.setHospital("350205");
  638. creditsDetailDO.setPatientId(patientId);
  639. creditsDetailDO.setIntegrate(taskRuleDO.getIntegrate());
  640. creditsDetailDO.setTradeDirection(taskRuleDO.getTradeDirection());
  641. creditsDetailDO.setDescription(description);
  642. creditsDetailDO.setCreateTime(new Date());
  643. creditsDetailDO.setUpdateTime(new Date());
  644. creditsDetailDO.setTransactionId(taskDO1.getId());
  645. creditsDetailDO.setTradeType("ACTIVITY_TASK");
  646. credittsLogDetailDao.save(creditsDetailDO);
  647. if (taskRuleDO.getTradeDirection() == -1){
  648. String integrateSql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+patientId+"' " +
  649. "AND transaction_id IN (SELECT id FROM wlyy_health_bank_task WHERE task_code IN ('BP_BIND','GLU_BIND','BP_MEASURE','GLU_MEASURE','RULE'))";
  650. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(integrateSql,new BeanPropertyRowMapper(CreditsDetailDO.class));
  651. for (CreditsDetailDO creditsDetailDO1:creditsDetailDOS){
  652. if (creditsDetailDO1.getTradeDirection()==1&&creditsDetailDO1.getStatus()!=0){
  653. AccountDO accountDO = accountDOS.get(0);
  654. int total = accountDO.getTotal() - creditsDetailDO1.getIntegrate();
  655. creditsDetailDO1.setStatus(0);
  656. creditsDetailDO1.setDescription(description);
  657. credittsLogDetailDao.save(creditsDetailDO1);
  658. accountDO.setTotal(total);
  659. accountDao.save(accountDO);
  660. }
  661. }
  662. }else if (taskRuleDO.getTradeDirection() == 1){
  663. AccountDO accountDO = accountDOS.get(0);
  664. accountDO.setTotal(accountDO.getTotal() + taskRuleDO.getIntegrate());
  665. accountDao.save(accountDO);
  666. }
  667. }
  668. }
  669. envelop.setObj(true);
  670. return envelop;
  671. }
  672. /**
  673. * 固定数据
  674. *
  675. * @param
  676. * @return
  677. *//*
  678. public List<TaskDO> getTasks(String patientId){
  679. List<TaskDO> taskDOList = new ArrayList<>();
  680. TaskDO taskDO = new TaskDO();
  681. *//*taskDO.setPatientId(patientId);*//*
  682. taskDO.setTaskCode("BIND");
  683. taskDO.setPeriod(1);
  684. taskDO.setTaskTitle("首次绑定");
  685. taskDO.setTaskContent("(绑定社区登记发放的设备,可获得各类型设备的首绑奖励。)");
  686. taskDO.setTradeType("activity");
  687. taskDO.setTransactionId("402885e96324a409016324c0a45a0006");
  688. taskDO.setCreateTime(new Date());
  689. taskDO.setUpdateTime(new Date());
  690. taskDOList.add(taskDO);
  691. TaskDO taskDO1 = new TaskDO();
  692. *//*taskDO1.setPatientId(patientId);*//*
  693. taskDO1.setTaskCode("MEASURE");
  694. taskDO1.setPeriod(0);
  695. taskDO1.setTaskTitle("每日测量");
  696. taskDO1.setTaskContent("(使用社区发放的已关联您身份信息的设备,绑定后每天完成测量)");
  697. taskDO1.setTradeType("activity");
  698. taskDO1.setTransactionId("402885e96324a409016324c0a45a0006");
  699. taskDO1.setCreateTime(new Date());
  700. taskDO1.setUpdateTime(new Date());
  701. taskDOList.add(taskDO1);
  702. return taskDOList;
  703. }
  704. */
  705. public Envelop<CreditsDetailDO> stepAddIntegrate(CreditsDetailDO creditsDetailDO){
  706. try {
  707. synchronized (creditsDetailDO.getPatientId()){
  708. String sqlAccount = "select * from wlyy_health_bank_account ba where ba.patient_id = '"+creditsDetailDO.getPatientId() +"'";
  709. List<AccountDO> accountDOList = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
  710. if (accountDOList != null && accountDOList.size() != 0){
  711. creditsDetailDO.setAccountId(accountDOList.get(0).getId());
  712. }else {
  713. AccountDO accountDO1 = new AccountDO();
  714. accountDO1.setPatientId(creditsDetailDO.getPatientId());
  715. accountDO1.setTotal(0);
  716. accountDO1.setAccountName(creditsDetailDO.getName());
  717. accountDO1.setCardNumber("jw");
  718. accountDO1.setHospital("350205");
  719. accountDO1.setPassword("321321312321");
  720. accountDO1.setHospitalName("海沧区");
  721. accountDO1.setCreateTime(new Date());
  722. accountDO1.setUpdateTime(new Date());
  723. accountDao.save(accountDO1);
  724. List<AccountDO> accountDOS = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
  725. creditsDetailDO.setAccountId(accountDOS.get(0).getId());
  726. }
  727. TaskDO taskDO = taskDao.findOne(creditsDetailDO.getTransactionId());
  728. String sql1 = "select * from wlyy_health_bank_task_patient_detail where patient_openid = '"+creditsDetailDO.getOpenId()+"' " +
  729. "AND patient_idcard = '"+creditsDetailDO.getIdCard()+"' AND union_id = '"+creditsDetailDO.getUnionId()+"' AND task_id = '"+creditsDetailDO.getTransactionId()+"'";
  730. List<TaskPatientDetailDO> taskPatientDetailDOList = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
  731. TaskPatientDetailDO taskPatientDetailDO = taskPatientDetailDOList.get(0);
  732. String sql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+creditsDetailDO.getPatientId()+"' AND " +
  733. "transaction_id = '"+creditsDetailDO.getTransactionId()+"' AND create_time > '"+DateUtils.getDayBegin() +"' AND" +
  734. " create_time < '"+DateUtils.getDayEnd()+"'";
  735. List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(CreditsDetailDO.class));
  736. String step = redisTemplate.opsForValue().get(STEP);
  737. if (StringUtils.isEmpty(step)){
  738. throw new Exception("获取步数失败!");
  739. }
  740. JSONObject object = JSONObject.parseObject(step);
  741. int step1 = object.getInteger("step1");
  742. int step2 = object.getInteger("step2");
  743. int step3 = object.getInteger("step3");
  744. if (creditsDetailDOS != null && creditsDetailDOS.size() != 0){
  745. CreditsDetailDO creditsDetailDO1 = creditsDetailDOS.get(0);
  746. TaskRuleDO taskRuleDO = taskRuleDao.findOne(taskDO.getRuleCode());
  747. if (creditsDetailDO.getStepNumber() == step1){
  748. creditsDetailDO1.setIntegrate(1);
  749. creditsDetailDO1.setTradeDirection(1);
  750. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  751. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  752. accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
  753. AccountDO accountDO1 = accountDao.save(accountDO);
  754. creditsDetailDO2.setTotal(accountDO1.getTotal());
  755. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
  756. taskPatientDetailDao.save(taskPatientDetailDO);
  757. creditsDetailDOS.clear();
  758. creditsDetailDOS.add(creditsDetailDO2);
  759. }else if (creditsDetailDO.getStepNumber() == step2){
  760. creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+2);
  761. creditsDetailDO1.setTradeDirection(1);
  762. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  763. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  764. accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
  765. AccountDO accountDO1 = accountDao.save(accountDO);
  766. creditsDetailDO2.setTotal(accountDO1.getTotal());
  767. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
  768. taskPatientDetailDao.save(taskPatientDetailDO);
  769. creditsDetailDOS.clear();
  770. creditsDetailDOS.add(creditsDetailDO2);
  771. }else if (creditsDetailDO.getStepNumber() == step3){
  772. if (creditsDetailDO1.getIntegrate() == 1){
  773. creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+7);
  774. creditsDetailDO1.setTradeDirection(1);
  775. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  776. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  777. accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
  778. AccountDO accountDO1 = accountDao.save(accountDO);
  779. creditsDetailDO2.setTotal(accountDO1.getTotal());
  780. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
  781. taskPatientDetailDao.save(taskPatientDetailDO);
  782. creditsDetailDOS.clear();
  783. creditsDetailDOS.add(creditsDetailDO2);
  784. }else if(creditsDetailDO1.getIntegrate() == 3){
  785. creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+5);
  786. creditsDetailDO1.setTradeDirection(1);
  787. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  788. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  789. accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-3));
  790. AccountDO accountDO1 = accountDao.save(accountDO);
  791. creditsDetailDO2.setTotal(accountDO1.getTotal());
  792. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-3));
  793. taskPatientDetailDao.save(taskPatientDetailDO);
  794. creditsDetailDOS.clear();
  795. creditsDetailDOS.add(creditsDetailDO2);
  796. }
  797. }
  798. }else{
  799. CreditsDetailDO creditsDetailDO1 = new CreditsDetailDO();
  800. if (creditsDetailDO.getStepNumber() == step1){
  801. creditsDetailDO1.setIntegrate(1);
  802. creditsDetailDO1.setTradeDirection(1);
  803. }else if (creditsDetailDO.getStepNumber() == step2){
  804. creditsDetailDO1.setIntegrate(3);
  805. creditsDetailDO1.setTradeDirection(1);
  806. }else if (creditsDetailDO.getStepNumber() == step3){
  807. creditsDetailDO1.setIntegrate(8);
  808. creditsDetailDO1.setTradeDirection(1);
  809. }
  810. creditsDetailDO1.setSaasId("dev");
  811. creditsDetailDO1.setTradeType("ACTIVITY_TASK");
  812. creditsDetailDO1.setPatientId(creditsDetailDO.getPatientId());
  813. creditsDetailDO1.setHospital("350205");
  814. creditsDetailDO1.setAccountId(creditsDetailDO.getAccountId());
  815. creditsDetailDO1.setStatus(1);
  816. creditsDetailDO1.setCreateTime(new Date());
  817. creditsDetailDO1.setUpdateTime(new Date());
  818. creditsDetailDO1.setTransactionId(taskPatientDetailDO.getTaskId());
  819. CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
  820. AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
  821. accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
  822. taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
  823. taskPatientDetailDao.save(taskPatientDetailDO);
  824. creditsDetailDO2.setTotal(accountDO.getTotal());
  825. creditsDetailDOS.add(creditsDetailDO2);
  826. }
  827. try{
  828. activeRecordService.insert("dev",creditsDetailDOS.get(0).getTransactionId(),null,null,null,creditsDetailDOS.get(0).getPatientId());
  829. }catch (Exception e){
  830. logger.error("插入活跃出错:"+e.getMessage());
  831. }
  832. Envelop<CreditsDetailDO> envelop = new Envelop<>();
  833. envelop.setDetailModelList(creditsDetailDOS);
  834. return envelop;
  835. }
  836. }catch (Exception e){
  837. e.printStackTrace();
  838. Envelop<CreditsDetailDO> envelop = new Envelop<>();
  839. return envelop;
  840. }
  841. }
  842. }