package com.jysoft.questionnaire.service; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.jysoft.questionnaire.entity.GreenQuestionnaire; import com.jysoft.questionnaire.entity.GreenQuestionnaireTopIc; import com.nationalelectirc.Constant.Constant; import com.nationalelectirc.utils.RestResult; import com.nationalelectric.greenH5.utils.DateTimeHelper; import com.sgcc.uap.persistence.IHibernateDao; import com.sun.org.apache.bcel.internal.generic.NEW; @Service public class QuestionnaireService { @Autowired private IHibernateDao iHibernateDao; /** * 获取问卷调查列表 * * @param entity * 数据 * @return 响应数据 */ public RestResult getQuestionnaireList(GreenQuestionnaire entity) { try { ArrayList paramList = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append(" SELECT * FROM (SELECT ROWNUM rn ,A.* FROM (SELECT gq.ID,gq.TITLE,gq.START_TIME,gq.END_TIME," + " CASE WHEN A.NUM IS NOT NULL THEN A.NUM ELSE 0 END AS NUM," + " CASE WHEN TO_DATE( START_TIME, 'yyyy-mm-dd' ) >TRUNC( CURRENT_DATE ) THEN '0'" + " WHEN TO_DATE( END_TIME, 'yyyy-mm-dd' ) < TRUNC( CURRENT_DATE ) " + " THEN '1' ELSE '2' END AS STATE " + " FROM GREEN_QUESTIONNAIRE gq " + " LEFT JOIN GREEN_QUESTIONNAIRE_RECORD gqr ON gqr.QUESTIONNAIRE_ID = gq.ID AND gqr.USER_ID = ? " + " LEFT JOIN (SELECT QUESTIONNAIRE_ID ,COUNT(USER_ID) AS NUM FROM GREEN_QUESTIONNAIRE_RECORD WHERE USER_ID IS NOT NULL GROUP BY QUESTIONNAIRE_ID) A ON A.QUESTIONNAIRE_ID = gq.ID" + " WHERE gq.STATE != '0' AND gq.IS_DEL = '0'"); if ("1".equals(entity.getType())) { sql.append(" AND gqr.USER_ID IS NULL "); } else { sql.append(" AND gqr.USER_ID IS NOT NULL "); } sql.append(" ORDER BY gq.RELEASE_TIME DESC)A WHERE ROWNUM <= ?) WHERE rn > ? "); int pageSize = entity.getPageSize(); int pageNum = entity.getPageNum(); int page = (pageNum - 1) * pageSize; int limit = pageNum * pageSize; paramList.add(entity.getUserId()); paramList.add(limit); paramList.add(page); List> list = iHibernateDao.queryForListWithSql(sql.toString(), paramList.toArray()); return new RestResult(Constant.SUCCESS, "查询成功", list); } catch (Exception e) { System.err.println(e.getMessage()); return new RestResult(Constant.FAILED, "查询失败"); } } /** * 获取数据详情 * * @param entity * @return */ public RestResult getQuestionnaireById(GreenQuestionnaire entity) { ArrayList paramList = new ArrayList(); ArrayList paramListTopIc = new ArrayList(); StringBuilder sql = new StringBuilder(); StringBuilder sqlTopIc = new StringBuilder(); try { sql.append("SELECT TITLE,DESCRIBE FROM GREEN_QUESTIONNAIRE WHERE IS_DEL = '0' AND ID = ?"); sqlTopIc.append( "SELECT gqt.ID,gqt.TOPIC,gqp.\"OPTION\" , gqt.\"NUMBER\",gqt.TOPIC_TYPE FROM GREEN_QUESTIONNAIRE_TOPIC gqt " + "LEFT JOIN GREEN_QUESTIONNAIRE_PER gqp ON gqp.TOPIC_ID = gqt.ID and gqp.USER_ID = ?" + "WHERE gqt.QUESTIONNAIRE_ID = ? ORDER BY TO_NUMBER(gqt.\"NUMBER\")"); paramList.add(entity.getId()); paramListTopIc.add(entity.getUserId()); paramListTopIc.add(entity.getId()); Map map = new HashMap(); // 问卷数据 List> list = iHibernateDao.queryForListWithSql(sql.toString(), paramList.toArray()); // 题目数据 List> listTopIc = iHibernateDao.queryForListWithSql(sqlTopIc.toString(), paramListTopIc.toArray()); map.put("list", list); map.put("listTopIc", listTopIc); return new RestResult(Constant.SUCCESS, "查询成功", map); } catch (Exception e) { System.err.println(e.getMessage()); return new RestResult(Constant.FAILED, "查询失败"); } } /** * 获取数据详情 * * @param entity * @return */ public RestResult updateQuestionnaire(GreenQuestionnaire entity) { ArrayList paramList = new ArrayList(); StringBuilder sql = new StringBuilder(); try { List listTopIc = JSONArray.parseArray(entity.getTopIc(), GreenQuestionnaireTopIc.class); sql.append( "INSERT INTO GREEN_QUESTIONNAIRE_RECORD (ID, QUESTIONNAIRE_ID, COMMIT_TIME, USER_ID, USER_NAME) VALUES (?,?,?,?,?)"); String uuid = UUID.randomUUID().toString().replace("-", ""); paramList.add(uuid); paramList.add(entity.getId()); paramList.add(DateTimeHelper.getNowDate1()); paramList.add(entity.getUserId()); paramList.add(entity.getUserName()); iHibernateDao.executeSqlUpdate(sql.toString(), paramList.toArray()); for (GreenQuestionnaireTopIc topIc : listTopIc) { System.err.println(topIc.toString()); ArrayList paramListTopIc = new ArrayList(); StringBuilder sqlTopIc = new StringBuilder(); String uuidPer = UUID.randomUUID().toString().replace("-", ""); sqlTopIc.append( "INSERT INTO GREEN_QUESTIONNAIRE_PER ( ID, TOPIC_ID, \"OPTION\", CREATE_TIME, USER_ID, USER_NAME ) VALUES ( ?,?,?,?,?,? )"); paramListTopIc.add(uuidPer); paramListTopIc.add(topIc.getId()); paramListTopIc.add(topIc.getOption()); paramListTopIc.add(DateTimeHelper.getNowDate1()); paramListTopIc.add(entity.getUserId()); paramListTopIc.add(entity.getUserName()); iHibernateDao.executeSqlUpdate(sqlTopIc.toString(), paramListTopIc.toArray()); } return new RestResult(Constant.SUCCESS, "提交成功"); } catch (Exception e) { System.err.println(e.getMessage()); return new RestResult(Constant.FAILED, "提交失败"); } } }