Prechádzať zdrojové kódy

[CMD]健康银行代码

wangzhinan 7 rokov pred
rodič
commit
9a4ef9abf1

+ 70 - 3
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/AccountDO.java

@ -7,6 +7,7 @@ import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.List;
/**
 * Created by wang zhinan on 2018/4/26.
@ -40,11 +41,29 @@ public class AccountDO extends IdEntityWithOperation implements Serializable {
    private String hospital;//社区
    @Transient
    private String sum;//总积分(已用积分和剩余积分)
    private Long sum;//总积分(已用积分和剩余积分)
    @Transient
    private int usedTotal;//已用积分
    @Transient
    private Long nowTotal;//今日获取积分
    @Transient
    private Long activityTotal;//参与活动数;
    @Transient
    private Long taskTotal;//参与任务数;
    @Transient
    private int teamRanking;//团队排名
    @Transient
    private int cityRanking;//全市排名
    @Transient
    private List<String> patientIds;//团队居民id
    public String getSaasId() {
        return saasId;
    }
@ -117,11 +136,59 @@ public class AccountDO extends IdEntityWithOperation implements Serializable {
        this.hospitalName = hospitalName;
    }
    public String getSum() {
    public Long getSum() {
        return sum;
    }
    public void setSum(String sum) {
    public void setSum(Long sum) {
        this.sum = sum;
    }
    public Long getNowTotal() {
        return nowTotal;
    }
    public void setNowTotal(Long nowTotal) {
        this.nowTotal = nowTotal;
    }
    public Long getActivityTotal() {
        return activityTotal;
    }
    public void setActivityTotal(Long activityTotal) {
        this.activityTotal = activityTotal;
    }
    public Long getTaskTotal() {
        return taskTotal;
    }
    public void setTaskTotal(Long taskTotal) {
        this.taskTotal = taskTotal;
    }
    public int getTeamRanking() {
        return teamRanking;
    }
    public void setTeamRanking(int teamRanking) {
        this.teamRanking = teamRanking;
    }
    public int getCityRanking() {
        return cityRanking;
    }
    public void setCityRanking(int cityRanking) {
        this.cityRanking = cityRanking;
    }
    public List<String> getPatientIds() {
        return patientIds;
    }
    public void setPatientIds(List<String> patientIds) {
        this.patientIds = patientIds;
    }
}

+ 44 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/ActivityDO.java

@ -68,12 +68,24 @@ public class ActivityDO extends IdEntityWithOperation implements Serializable {
    @Transient
    private String openId;//微信编码
    @Transient
    private String unionId;
    @Transient
    private String patientIdcard;//身份证号
    @Transient
    private Long total;//参加总数
    @Transient
    private int activityRanking;//活动中的排名
    @Transient
    private List<TaskPatientDetailDO> taskPatientDetailDOS;//参与活动详情
    @Transient
    private Long sum;//活动积分总数
    public String getSaasId() {
        return saasId;
    }
@ -220,4 +232,36 @@ public class ActivityDO extends IdEntityWithOperation implements Serializable {
    public void setTaskPatientDetailDOS(List<TaskPatientDetailDO> taskPatientDetailDOS) {
        this.taskPatientDetailDOS = taskPatientDetailDOS;
    }
    public String getUnionId() {
        return unionId;
    }
    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }
    public String getPatientIdcard() {
        return patientIdcard;
    }
    public void setPatientIdcard(String patientIdcard) {
        this.patientIdcard = patientIdcard;
    }
    public int getActivityRanking() {
        return activityRanking;
    }
    public void setActivityRanking(int activityRanking) {
        this.activityRanking = activityRanking;
    }
    public Long getSum() {
        return sum;
    }
    public void setSum(Long sum) {
        this.sum = sum;
    }
}

+ 44 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/CreditsDetailDO.java

@ -42,9 +42,15 @@ public class CreditsDetailDO extends IdEntityWithOperation implements Serializab
    @Column(name = "hospital")
    private String hospital;//社区
    @Column(name = "description")
    private String description;//积分获取说明
    @Transient
    private TaskDO taskDO;//任务对象
    @Transient
    private String activityId;//活动ID
    @Transient
    private ActivityDO activityDO;//活动对象
@ -63,6 +69,12 @@ public class CreditsDetailDO extends IdEntityWithOperation implements Serializab
    @Transient
    private String openId;//微信编号
    @Transient
    private Long stepNumber;//步数
    @Transient
    private String unionId;
    public String getSaasId() {
        return saasId;
@ -191,4 +203,36 @@ public class CreditsDetailDO extends IdEntityWithOperation implements Serializab
    public void setOpenId(String openId) {
        this.openId = openId;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public Long getStepNumber() {
        return stepNumber;
    }
    public void setStepNumber(Long stepNumber) {
        this.stepNumber = stepNumber;
    }
    public String getActivityId() {
        return activityId;
    }
    public void setActivityId(String activityId) {
        this.activityId = activityId;
    }
    public String getUnionId() {
        return unionId;
    }
    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }
}

+ 11 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/TaskPatientDetailDO.java

@ -42,6 +42,9 @@ public class TaskPatientDetailDO extends IdEntityWithOperation implements Serial
    @Column(name = "total")
    private Long total;//活动中获取的积分
    @Column(name = "union_id")
    private String unionId;
    @Transient
    private AccountDO accountDO;//账户信息
@ -124,4 +127,12 @@ public class TaskPatientDetailDO extends IdEntityWithOperation implements Serial
    public void setAccountDO(AccountDO accountDO) {
        this.accountDO = accountDO;
    }
    public String getUnionId() {
        return unionId;
    }
    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }
}

+ 5 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/health/bank/HealthBankMapping.java

@ -1,5 +1,7 @@
package com.yihu.jw.rm.health.bank;
import javax.print.DocFlavor;
/**
 * Created by Trick on 2018/2/7.
 */
@ -48,6 +50,7 @@ public class HealthBankMapping {
        public static final String selectByActivity = "/selectByActivity";
        public static final String selectByRanking = "/selectByRanking";
        public static final String selectByActivityRanking = "/selectByActivityRanking";
        public static final String selectByActivityRanking1 = "/selectByActivityRanking1";
        public static final String updateCreditsLogInfo ="/updateCreditsLogInfo";
        public static final String exchangeGoods = "/exchangeGoods";
        public static final String findExchangeGoods="/findExchangeGoods";
@ -56,5 +59,7 @@ public class HealthBankMapping {
        public static final String deleteRule = "/deleteRule";
        public static final String findRules = "/findRules";
        public static final String createActiveRecord="/createActiveRecord";
        public static final String doctorAddIntegrate = "/doctorAddIntegrate";
        public static final String addStepIntegrate = "/addStepIntegrate";
    }
}

+ 66 - 0
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/controller/CreditsDetailController.java

@ -14,6 +14,7 @@ import com.yihu.jw.service.CreditsDetailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import javafx.beans.binding.BooleanExpression;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.web.bind.annotation.*;
@ -167,4 +168,69 @@ public class CreditsDetailController extends EnvelopRestController {
        }
    }
    /**
     * 根据活动id查找全部活动
     *
     * @param activityId 活动ID
     * @param page 页码
     * @param size 分页大小
     * @return
     */
    @PostMapping(value = HealthBankMapping.healthBank.selectByActivityRanking1)
    @ApiOperation(value = "根据活动id查找全部排行")
    public Envelop<TaskPatientDetailDO> selectByActivityRanking1(@ApiParam(name = "activityId",value = "活动id")
                                                     @RequestParam(value = "activityId",required = true)String activityId,
                                                     @ApiParam(name = "page", value = "第几页,从1开始")
                                                     @RequestParam(value = "page", defaultValue = "1",required = false)Integer page,
                                                     @ApiParam(name = "size",defaultValue = "10",value = ",每页分页大小")
                                                     @RequestParam(value = "size", required = false)Integer size){
        try{
            return service.selectByActivityRanking1(activityId,page,size);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }
    @PostMapping(value = HealthBankMapping.healthBank.doctorAddIntegrate)
    @ApiOperation(value = "添加积分记录")
    public Envelop<Boolean> doctorAddIntegrate(@RequestBody JSONObject object){
        try {
            JSONArray array = object.getJSONArray("patientIds");
            String ruleId = object.getString("ruleId");
            String description = object.getString("description");
            List<String> ids = new ArrayList<>();
            for (int i=0;array != null && array.size()!=0&& i<array.size();i++){
                ids.add(array.getString(i));
            }
            return service.doctorAddIntegrate(ids,ruleId,description);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }
    /**
     * 步数获取积分
     *
     * @param creditsDetail 积分对象
     * @return
     */
    @PostMapping(value = HealthBankMapping.healthBank.addStepIntegrate)
    @ApiOperation(value = "步数获取积分")
    public Envelop<CreditsDetailDO> addStepIntegrate(@ApiParam(name = "creditsDetail",value = "积分记录JSON")
                                                 @RequestParam(value = "creditsDetail",required = true)String creditsDetail){
        try {
            CreditsDetailDO creditsDetailDO = toEntity(creditsDetail,CreditsDetailDO.class);
            return service.stepAddIntegrate(creditsDetailDO);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return Envelop.getError(e.getMessage());
        }
    }
}

+ 150 - 1
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/service/AccountService.java

@ -5,8 +5,10 @@ package com.yihu.jw.service;/**
import com.yihu.base.mysql.query.BaseJpaService;
import com.yihu.jw.dao.AccountDao;
import com.yihu.jw.entity.health.bank.AccountDO;
import com.yihu.jw.entity.health.bank.CreditsDetailDO;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.rm.health.bank.HealthBankMapping;
import com.yihu.jw.util.DateUtils;
import com.yihu.jw.util.ISqlUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
@ -15,6 +17,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -58,7 +61,141 @@ public class AccountService extends BaseJpaService<AccountDO,AccountDao> {
    public Envelop<AccountDO> findByCondition(AccountDO accountDO, Integer page, Integer size) throws ParseException {
        String sql = new ISqlUtils().getSql(accountDO,page,size,"*");
        List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
        for (AccountDO accountDO1:accountDOS){
            String sql1 = "select COALESCE(sum(bcd.integrate),0) as total from wlyy_health_bank_credits_detail bcd where bcd.trade_direction = 1" +
                    " AND bcd.create_time > '"+ DateUtils.getDayBegin()+"' AND bcd.create_time < '"+DateUtils.getDayEnd()+"' AND bcd.patient_id = " +
                    " '"+ accountDO1.getPatientId() +"'";
            List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sql1);
            Long count = 0L;
            if(rstotal!=null&&rstotal.size()>0){
                Object object = rstotal.get(0).get("total");
                count = Long.parseLong(object.toString());
            }
            accountDO1.setNowTotal(count);
            String activitySql = "SELECT  COUNT(*) AS total FROM ( SELECT * FROM " +
                    "wlyy_health_bank_task_patient_detail " +
                    " WHERE patient_id = '" + accountDO1.getPatientId()+
                    "' GROUP BY activity_id ) btpd1";
            List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(activitySql);
            Long activityCount = 0L;
            if(rstotal1!=null&&rstotal1.size()>0){
                Object object = rstotal1.get(0).get("total");
                activityCount = Long.parseLong(object.toString());
            }
            accountDO1.setActivityTotal(activityCount);
            String taskSql = "SELECT  COUNT(*) AS total FROM ( SELECT * FROM " +
                    "wlyy_health_bank_task_patient_detail " +
                    " WHERE patient_id = '" + accountDO1.getPatientId()+
                    "' GROUP BY task_id ) btpd1";
            List<Map<String,Object>> rstotal2 = jdbcTemplate.queryForList(taskSql);
            Long taskCount = 0L;
            if(rstotal2!=null&&rstotal2.size()>0){
                Object object = rstotal2.get(0).get("total");
                taskCount = Long.parseLong(object.toString());
            }
            accountDO1.setTaskTotal(taskCount);
            if (accountDO.getPatientIds() != null && accountDO.getPatientIds().size() != 0){
                StringBuffer buffer = new StringBuffer();
                buffer.append(" (");
                for (int i=0;i<accountDO.getPatientIds().size();i++){
                    buffer.append("'"+accountDO.getPatientIds().get(i)+"'").append(",");
                }
                buffer.deleteCharAt(buffer.length()-1);
                buffer.append(") ");
                String accountSql = "select * from wlyy_health_bank_account where patient_id in "+buffer;
                List<AccountDO> accountDOS1 = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(AccountDO.class));
                if (accountDOS1 != null && accountDOS1.size() !=0){
                    String sql2 = " SELECT " +
                            " ba.total + COALESCE (bacd1.sum, 0) AS total " +
                            " FROM " +
                            " wlyy_health_bank_account ba " +
                            " LEFT JOIN ( " +
                            " SELECT " +
                            " COALESCE (SUM(bacd.integrate), 0) AS sum, " +
                            " bacd.account_id " +
                            "  FROM " +
                            " wlyy_health_bank_credits_detail bacd " +
                            " WHERE " +
                            " bacd.trade_direction = - 1 " +
                            " GROUP BY " +
                            " bacd.account_id ) bacd1 ON ba.id = bacd1.account_id " +
                            " WHERE " +
                            " ba.id = '"+accountDO1.getId()+"'";
                    List<Map<String,Object>> rstotal3 = jdbcTemplate.queryForList(sql2);
                    Long Count = 0L;
                    if(rstotal3!=null&&rstotal3.size()>0){
                        Object object = rstotal3.get(0).get("total");
                        Count = Long.parseLong(object.toString());
                    }
                    accountDO1.setSum(Count);
                    StringBuffer buffer1 = new StringBuffer();
                    buffer1.append(" (");
                    for (int i=0;i<accountDOS1.size();i++){
                        buffer1.append("'"+accountDOS1.get(i).getId()+"'").append(",");
                    }
                    buffer1.deleteCharAt(buffer1.length()-1);
                    buffer1.append(") ");
                    String sql3 = "SELECT " +
                            " COUNT(1) + 1 AS total " +
                            "FROM " +
                            " ( " +
                            " SELECT " +
                            " ba.id AS id, " +
                            " ba.total + COALESCE (bacd1.sum, 0) AS sum " +
                            " FROM " +
                            " wlyy_health_bank_account ba " +
                            " LEFT JOIN ( " +
                            " SELECT " +
                            " COALESCE (SUM(bacd.integrate), 0) AS sum, " +
                            " bacd.account_id " +
                            "  FROM " +
                            " wlyy_health_bank_credits_detail bacd " +
                            " WHERE " +
                            " bacd.trade_direction = - 1 " +
                            " GROUP BY " +
                            " bacd.account_id ) bacd1 ON ba.id = bacd1.account_id " +
                            " WHERE " +
                            " ba.id IN " +buffer1+
                            " )ba1 WHERE ba1.sum > "+accountDO1.getSum();
                    List<Map<String,Object>> rstotal4 = jdbcTemplate.queryForList(sql3);
                    Integer Count1 = 0;
                    if(rstotal4!=null&&rstotal4.size()>0){
                        Object object = rstotal4.get(0).get("total");
                        Count1 = Integer.parseInt(object.toString());
                    }
                    accountDO1.setTeamRanking(Count1);
                    String sql4 = "SELECT " +
                            " COUNT(1) + 1 AS total " +
                            "FROM " +
                            " ( " +
                            " SELECT " +
                            " ba.id AS id, " +
                            " ba.total + COALESCE (bacd1.sum, 0) AS sum " +
                            " FROM " +
                            " wlyy_health_bank_account ba " +
                            " LEFT JOIN ( " +
                            " SELECT " +
                            " COALESCE (SUM(bacd.integrate), 0) AS sum, " +
                            " bacd.account_id " +
                            "  FROM " +
                            " wlyy_health_bank_credits_detail bacd " +
                            " WHERE " +
                            " bacd.trade_direction = - 1 " +
                            " GROUP BY " +
                            " bacd.account_id ) bacd1 ON ba.id = bacd1.account_id " +
                            " )ba1 WHERE ba1.sum > "+accountDO1.getSum();
                    List<Map<String,Object>> rstotal5 = jdbcTemplate.queryForList(sql4);
                    Integer Count2 = 0;
                    if(rstotal5!=null&&rstotal5.size()>0){
                        Object object = rstotal5.get(0).get("total");
                        Count2 = Integer.parseInt(object.toString());
                    }
                    accountDO1.setCityRanking(Count2);
                }
            }
        }
        String sqlcount = new ISqlUtils().getSql(accountDO,0,0,"count");
        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
        Long count = 0L;
@ -68,7 +205,19 @@ public class AccountService extends BaseJpaService<AccountDO,AccountDao> {
        return Envelop.getSuccessListWithPage(HealthBankMapping.api_success,accountDOS,page,size,count);
    }
    /**
     * 根据条件活动用户信息
     *
     * @param patientIds 居民id
     * @param bindStatus 绑定状态
     *
     * @param deviceTypes 设备类型
     *
     * @param page 页码
     *
     * @param size 分页大小
     * @return
     */
    public Envelop<AccountDO> findByCondition1(List<String> patientIds ,int bindStatus,List<String> deviceTypes,Integer page,Integer size){
        StringBuffer buffer = new StringBuffer();
        buffer.append(" btpd.patient_id in(");

+ 58 - 2
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/service/ActivityService.java

@ -126,10 +126,66 @@ public class ActivityService extends BaseJpaService<ActivityDO,ActivityDao> {
                " SELECT task_id FROM " +
                "wlyy_health_bank_task_patient_detail" +
                " WHERE " +
                " patient_openid = '"+activityDO.getOpenId()+ "' )" +
                " patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"')" +
                " )" +
                " LIMIT "+(page-1)*size +","+size;
        List<ActivityDO> activityDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(ActivityDO.class));
        for (ActivityDO activityDO1:activityDOS){
            String activitySql ="SELECT btpd1.sum AS total FROM (SELECT " +
                    " SUM(total) AS sum , " +
                    " patient_id, " +
                    " patient_openid, " +
                    " patient_idcard, " +
                    " activity_id," +
                    " union_id " +
                    " FROM " +
                    " wlyy_health_bank_task_patient_detail " +
                    "GROUP BY patient_openid,patient_idcard,union_id)btpd1 " +
                    "WHERE " +
                    " btpd1.activity_id = '"+activityDO1.getId() +"' AND patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"'";
            List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(activitySql);
            Long count = 0L;
            if(rstotal!=null&&rstotal.size()>0){
                Object object =  rstotal.get(0).get("total");
                count = Long.parseLong(object.toString());
            }
            activityDO1.setSum(count);
            String rankingSql = "SELECT count(1)+1 AS total FROM (SELECT " +
                    " SUM(total) AS sum , " +
                    " patient_id, " +
                    " patient_openid, " +
                    " patient_idcard, " +
                    " activity_id " +
                    "FROM " +
                    " wlyy_health_bank_task_patient_detail " +
                    "GROUP BY patient_openid,patient_idcard,union_id)btpd1 " +
                    "WHERE " +
                    " btpd1.activity_id = '"+activityDO1.getId()+"' AND btpd1.sum >" +activityDO1.getSum() ;
            List<Map<String,Object>> rstotal1 = jdbcTemplate.queryForList(rankingSql);
            Integer count1 = 0;
            if(rstotal1!=null&&rstotal1.size()>0){
                Object object =  rstotal1.get(0).get("total");
                count1 = Integer.parseInt(object.toString());
            }
            activityDO1.setActivityRanking(count1);
            String taskSql = "SELECT" +
                    " COUNT(1) AS total1 " +
                    "FROM " +
                    " ( " +
                    " SELECT DISTINCT " +
                    "  (btpd.patient_openid) " +
                    "  FROM " +
                    "  wlyy_health_bank_task_patient_detail btpd " +
                    "  WHERE " +
                    "  activity_id = '" +activityDO1.getId()+
                    "' ) btpd1";
            List<Map<String,Object>> rstotal2 = jdbcTemplate.queryForList(taskSql);
            Long count2 = 0L;
            if(rstotal2!=null&&rstotal2.size()>0){
                count2 = (Long) rstotal2.get(0).get("total1");
            }
            activityDO1.setTotal(count2);
        }
        String sqlcount = "SELECT count(1) AS total" +
                " FROM wlyy_health_bank_activity " +
                "WHERE " +
@ -140,7 +196,7 @@ public class ActivityService extends BaseJpaService<ActivityDO,ActivityDao> {
                " SELECT task_id FROM " +
                "wlyy_health_bank_task_patient_detail" +
                " WHERE " +
                " patient_openid = '"+activityDO.getOpenId()+ "' )" +
                " patient_openid = '"+activityDO.getOpenId()+ "' AND patient_idcard = '"+activityDO.getPatientIdcard()+"' AND union_id = '"+ activityDO.getUnionId()+"' )" +
                " )";
        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlcount);
        Long count = 0L;

+ 228 - 4
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/service/CreditsDetailService.java

@ -56,7 +56,7 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
        String sql = new ISqlUtils().getSql(creditsDetailDO,page,size,"*");
        List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(CreditsDetailDO.class));
        for (CreditsDetailDO creditsDetailDO1 : creditsDetailDOS){
            if (creditsDetailDO1.getTradeType().equalsIgnoreCase("HEALTH_TASK")){
            if (creditsDetailDO1.getTradeType() != null && creditsDetailDO1.getTradeType().equalsIgnoreCase("HEALTH_TASK")){
                TaskDO taskDO = taskDao.findOne(creditsDetailDO1.getTransactionId());
                creditsDetailDO1.setTaskDO(taskDO);
            }
@ -213,9 +213,9 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
                    accountDO1.setTotal(0);
                    accountDO1.setAccountName(creditsDetailDO.getName());
                    accountDO1.setCardNumber("jw");
                    accountDO1.setHospital("海沧区");
                    accountDO1.setHospital("350205");
                    accountDO1.setPassword("321321312321");
                    accountDO1.setHospitalName("haichan");
                    accountDO1.setHospitalName("海沧区");
                    accountDO1.setCreateTime(new Date());
                    accountDO1.setUpdateTime(new Date());
                    accountDao.save(accountDO1);
@ -442,10 +442,132 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
    }
    /**
     * 根据活动查找全部排行
     *
     * @param activityId 活动id
     * @param page 页码
     * @param size 分页大小
     * @return
     */
    public Envelop<TaskPatientDetailDO> selectByActivityRanking1(String activityId,Integer page,Integer size){
        String sql = "SELECT " +
                " * " +
                "FROM " +
                " ( " +
                " SELECT " +
                " SUM(ptpd.total) AS total, " +
                " ptpd.patient_openid AS patient_openid, " +
                " ptpd.task_id AS task_id, " +
                " ptpd.activity_id AS activity_id, " +
                " ptpd.create_time as create_time, " +
                " ptpd.patient_id AS patient_id " +
                " FROM " +
                " wlyy_health_bank_task_patient_detail ptpd " +
                " WHERE " +
                " activity_id = '" + activityId +
                "' GROUP BY " +
                " patient_openid " +
                " ORDER BY ptpd.create_time DESC " +
                " )btpd1 " +
                " ORDER BY btpd1.total DESC "+" LIMIT " + (page-1)*size+","+size;
        List<TaskPatientDetailDO> taskPatientDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
        for (TaskPatientDetailDO taskPatientDetailDO : taskPatientDetailDOS){
            String accountSql = "select * from wlyy_health_bank_account where patient_id = '"+taskPatientDetailDO.getPatientId()+"'";
            List<AccountDO> accountDOS = jdbcTemplate.query(accountSql,new BeanPropertyRowMapper(AccountDO.class));
            taskPatientDetailDO.setAccountDO(accountDOS.get(0));
        }
        String sqlCount =  "SELECT " +
                " count(1) AS total " +
                "FROM " +
                " ( " +
                " SELECT " +
                " SUM(ptpd.total) AS total, " +
                " ptpd.patient_openid AS patient_openid, " +
                " ptpd.task_id AS task_id, " +
                " ptpd.activity_id AS activity_id, " +
                " ptpd.create_time as create_time, " +
                " ptpd.patient_id AS patient_id " +
                " FROM " +
                " wlyy_health_bank_task_patient_detail ptpd " +
                " WHERE " +
                " activity_id = '" + activityId+
                "' GROUP BY " +
                " patient_openid " +
                " ORDER BY ptpd.create_time DESC " +
                " )btpd1 " +
                " ORDER BY btpd1.total DESC ";
        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);
        Long count = 0L;
        if(rstotal!=null&&rstotal.size()>0){
            count = (Long) rstotal.get(0).get("total");
        }
        return Envelop.getSuccessListWithPage(HealthBankMapping.api_success, taskPatientDetailDOS,page,size,count);
    }
    /**
     * 医生主动加分
     *
     * @param patientIds 病人id
     *
     * @param ruleId 规则id
     * @return
     */
    public Envelop<Boolean> doctorAddIntegrate(List<String> patientIds,String ruleId,String description){
        Envelop<Boolean> envelop = new Envelop<>();
        for (int i=0;i<patientIds.size();i++){
            String patientId = patientIds.get(i);
            String sql = "select * from wlyy_health_bank_account where patient_id = '"+patientId+"'";
            List<AccountDO> accountDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(AccountDO.class));
            TaskRuleDO taskRuleDO = taskRuleDao.findOne(ruleId);
            if (taskRuleDO.getTradeDirection() == -1 && taskRuleDO.getIntegrate() == 0){
                String integrateSql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+patientId+"'";
                List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(integrateSql,new BeanPropertyRowMapper(CreditsDetailDO.class));
                for (CreditsDetailDO creditsDetailDO:creditsDetailDOS){
                    creditsDetailDO.setStatus(0);
                    creditsDetailDO.setDescription(description);
                    credittsLogDetailDao.save(creditsDetailDO);
                    AccountDO accountDO = accountDOS.get(0);
                    accountDO.setTotal(0);
                    accountDao.save(accountDO);
                }
            }else{
                CreditsDetailDO creditsDetailDO = new CreditsDetailDO();
                creditsDetailDO.setStatus(1);
                creditsDetailDO.setAccountId(accountDOS.get(0).getId());
                creditsDetailDO.setHospital("350205");
                creditsDetailDO.setPatientId(patientId);
                creditsDetailDO.setIntegrate(taskRuleDO.getIntegrate());
                creditsDetailDO.setTradeDirection(taskRuleDO.getTradeDirection());
                creditsDetailDO.setDescription(description);
                creditsDetailDO.setCreateTime(new Date());
                creditsDetailDO.setUpdateTime(new Date());
                credittsLogDetailDao.save(creditsDetailDO);
                if (taskRuleDO.getTradeDirection() == -1){
                    AccountDO accountDO = accountDOS.get(0);
                    int total = accountDO.getTotal() - taskRuleDO.getIntegrate();
                    if (total<0){
                        accountDO.setTotal(0);
                    }else {
                        accountDO.setTotal(total);
                    }
                    accountDao.save(accountDO);
                }else if (taskRuleDO.getTradeDirection() == 1){
                    AccountDO accountDO = accountDOS.get(0);
                    accountDO.setTotal(accountDO.getTotal() + taskRuleDO.getIntegrate());
                    accountDao.save(accountDO);
                }
            }
        }
        envelop.setObj(true);
        return envelop;
    }
    /**
     * 固定数据
     *
     * @param patientId
     * @param
     * @return
     *//*
    public List<TaskDO> getTasks(String patientId){
@ -475,4 +597,106 @@ public class CreditsDetailService extends BaseJpaService<CreditsDetailDO,Creditt
        return taskDOList;
    }
*/
    public Envelop<CreditsDetailDO> stepAddIntegrate(CreditsDetailDO creditsDetailDO){
        try {
            synchronized (creditsDetailDO.getPatientId()){
                String sqlAccount = "select * from wlyy_health_bank_account ba where ba.patient_id = '"+creditsDetailDO.getPatientId() +"'";
                List<AccountDO> accountDOList = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
                if (accountDOList != null && accountDOList.size() != 0){
                    creditsDetailDO.setAccountId(accountDOList.get(0).getId());
                }else {
                    AccountDO accountDO1 = new AccountDO();
                    accountDO1.setPatientId(creditsDetailDO.getPatientId());
                    accountDO1.setTotal(0);
                    accountDO1.setAccountName(creditsDetailDO.getName());
                    accountDO1.setCardNumber("jw");
                    accountDO1.setHospital("350205");
                    accountDO1.setPassword("321321312321");
                    accountDO1.setHospitalName("海沧区");
                    accountDO1.setCreateTime(new Date());
                    accountDO1.setUpdateTime(new Date());
                    accountDao.save(accountDO1);
                    List<AccountDO> accountDOS = jdbcTemplate.query(sqlAccount,new BeanPropertyRowMapper(AccountDO.class));
                    creditsDetailDO.setAccountId(accountDOS.get(0).getId());
                }
                TaskDO taskDO = taskDao.findOne(creditsDetailDO.getTransactionId());
                String sql1 = "select * from wlyy_health_bank_task_patient_detail where patient_openid = '"+creditsDetailDO.getOpenId()+"' " +
                        "AND patient_idcard = '"+creditsDetailDO.getIdCard()+"' AND union_id = '"+creditsDetailDO.getUnionId()+"' AND task_id = '"+creditsDetailDO.getTransactionId()+"'";
                List<TaskPatientDetailDO> taskPatientDetailDOList = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
                TaskPatientDetailDO taskPatientDetailDO = taskPatientDetailDOList.get(0);
                String sql = "select * from wlyy_health_bank_credits_detail where patient_id = '"+creditsDetailDO.getPatientId()+"' AND " +
                        "transaction_id = '"+creditsDetailDO.getTransactionId()+"' AND create_time > '"+DateUtils.getDayBegin() +"' AND" +
                        " create_time < '"+DateUtils.getDayEnd()+"'";
                List<CreditsDetailDO> creditsDetailDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>());
                if (creditsDetailDOS != null && creditsDetailDOS.size() != 0){
                    CreditsDetailDO creditsDetailDO1 = creditsDetailDOS.get(0);
                    TaskRuleDO taskRuleDO = taskRuleDao.findOne(taskDO.getRuleCode());
                    if (creditsDetailDO.getStepNumber() == 5000){
                        creditsDetailDO1.setIntegrate(1);
                        creditsDetailDO1.setTradeDirection(1);
                        CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
                        AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
                        accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
                        accountDao.save(accountDO);
                        taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
                        taskPatientDetailDao.save(taskPatientDetailDO);
                        creditsDetailDOS.add(creditsDetailDO2);
                    }else if (creditsDetailDO.getStepNumber() == 10000){
                        creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+3);
                        creditsDetailDO1.setTradeDirection(1);
                        CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
                        AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
                        accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
                        accountDao.save(accountDO);
                        taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-1));
                        taskPatientDetailDao.save(taskPatientDetailDO);
                        creditsDetailDOS.add(creditsDetailDO2);
                    }else if (creditsDetailDO.getStepNumber() == 50000){
                        creditsDetailDO1.setIntegrate(creditsDetailDO1.getIntegrate()+4);
                        creditsDetailDO1.setTradeDirection(1);
                        CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
                        AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
                        accountDO.setTotal(accountDO.getTotal()+(creditsDetailDO2.getIntegrate()-3));
                        accountDao.save(accountDO);
                        taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+(creditsDetailDO2.getIntegrate()-3));
                        creditsDetailDOS.add(creditsDetailDO2);
                    }
                }else{
                    CreditsDetailDO creditsDetailDO1 = new CreditsDetailDO();
                    if (creditsDetailDO.getStepNumber() == 5000){
                        creditsDetailDO1.setIntegrate(1);
                        creditsDetailDO1.setTradeDirection(1);
                    }else if (creditsDetailDO.getStepNumber() == 10000){
                        creditsDetailDO1.setIntegrate(3);
                        creditsDetailDO1.setTradeDirection(1);
                    }else if (creditsDetailDO.getStepNumber() == 50000){
                        creditsDetailDO1.setIntegrate(7);
                        creditsDetailDO1.setTradeDirection(1);
                    }
                    creditsDetailDO1.setTradeType("HEALTH_TASK");
                    creditsDetailDO1.setPatientId(creditsDetailDO.getPatientId());
                    creditsDetailDO1.setHospital("350205");
                    creditsDetailDO1.setAccountId(creditsDetailDO1.getAccountId());
                    creditsDetailDO1.setStatus(1);
                    creditsDetailDO1.setCreateTime(new Date());
                    creditsDetailDO1.setUpdateTime(new Date());
                    CreditsDetailDO creditsDetailDO2 = credittsLogDetailDao.save(creditsDetailDO1);
                    AccountDO accountDO = accountDao.findOne(creditsDetailDO2.getAccountId());
                    accountDO.setTotal(accountDO.getTotal()+creditsDetailDO2.getIntegrate());
                    taskPatientDetailDO.setTotal(taskPatientDetailDO.getTotal()+creditsDetailDO2.getIntegrate());
                    taskPatientDetailDao.save(taskPatientDetailDO);
                    creditsDetailDOS.add(creditsDetailDO2);
                }
                Envelop<CreditsDetailDO> envelop = new Envelop<>();
                envelop.setDetailModelList(creditsDetailDOS);
                return envelop;
            }
        }catch (Exception e){
            e.printStackTrace();
            Envelop<CreditsDetailDO> envelop = new Envelop<>();
            return envelop;
        }
    }
}

+ 3 - 2
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/service/TaskPatientDtailService.java

@ -75,13 +75,14 @@ public class TaskPatientDtailService extends BaseJpaService<TaskPatientDetailDO,
        String activitySql = "select * from wlyy_health_bank_task where transaction_id = '" + taskPatientDetailDO.getActivityId() +"'";
        List<TaskDO> taskDOList = jdbcTemplate.query(activitySql,new BeanPropertyRowMapper(TaskDO.class));
        StringBuffer buffer = new StringBuffer();
        buffer.append(" and task_id in (");
        buffer.append(" and task_id IN (");
        for (TaskDO taskDO : taskDOList){
            buffer.append("'"+taskDO.getId()+"'").append(",");
        }
        buffer.deleteCharAt(buffer.length()-1);
        buffer.append(")");
        String sql = "select * from wlyy_health_bank_task_patient_detail where patient_openid = '"+taskPatientDetailDO.getPatientOpenid()+"'"+buffer;
        String sql = "select * from wlyy_health_bank_task_patient_detail where patient_openid = '"+taskPatientDetailDO.getPatientOpenid()+"' " +
                "AND patient_idcard = '"+taskPatientDetailDO.getPatientIdcard()+"' AND union_id = '"+taskPatientDetailDO.getUnionId()+"'"+buffer;
        List<TaskPatientDetailDO> taskPatientDetailDOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper(TaskPatientDetailDO.class));
        if (taskPatientDetailDOList != null && taskPatientDetailDOList.size() !=0){
            throw new Exception("该微信账号已报名过!");