package com.nationalelectric.greenH5; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.nationalelectirc.Constant.Constant; import com.nationalelectirc.utils.RestResult; import com.nationalelectric.greenH5.DTO.GreenMealTicketDTO; import com.nationalelectric.greenH5.bizc.IGreenMealTicketBizc; import com.nationalelectric.greenH5.bizc.IGreenOperateLogBizc; import com.nationalelectric.greenH5.po.GreenUserInfo; import com.nationalelectric.greenH5.utils.AesEncryptUtil; import com.nationalelectric.greenH5.utils.DateUtil; import com.nationalelectric.greenH5.utils.JSONUtil; import com.sgcc.uap.persistence.IHibernateDao; import org.springframework.web.bind.annotation.RequestMapping; import java.util.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.RequestBody; /** * 概述
*

* 功能
* * @author bowei */ @Controller @RequestMapping("/greenMealTicket") public class GreenMealTicketController extends GreenBaseController { /** * greenmealticket GreenMealTicket逻辑构件 */ @Resource private IGreenMealTicketBizc greenmealticketBizc; @Resource private IHibernateDao hibernateDao; @Resource private IGreenOperateLogBizc greenOperateLogBizc; /** 餐券领取列表 */ @RequestMapping(value = "/list", method = RequestMethod.POST) @ResponseBody public RestResult list(@RequestBody Object requestBody) { GreenMealTicketDTO greenMealTicketDTO = new ObjectMapper().convertValue(requestBody, new TypeReference() { }); String userId = greenMealTicketDTO.getUserId(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } try { List> list = hibernateDao.queryForListWithSql( "SELECT a.use_id,count(*) AS usenum,tc.ticketCount,a.use_date,b.meal_ticket_variety,any_value (b.apply_date) AS 'apply_date' " + "FROM GREEN_MEAL_TICKET a LEFT JOIN GREEN_MEAL_TICKET_APPLY b ON a.ticket_apply_id = b.id LEFT JOIN " + "( SELECT any_value(a.id) AS 'id', a.use_date, count(*) AS 'ticketCount' FROM GREEN_MEAL_TICKET a LEFT JOIN GREEN_MEAL_TICKET_APPLY b ON a.ticket_apply_id = b.id WHERE b.user_id = ? AND ( a.use_status = '0' OR a.use_status = '1' ) AND STR_TO_DATE(a.use_date, '%Y-%m-%d') >= date_format(now(), '%y-%m-%d') GROUP BY a.use_date ) tc " + "ON a.use_date =tc.use_date WHERE b.user_id = ? AND a.use_status = '0' AND STR_TO_DATE(a.use_date, '%Y-%m-%d') >= date_format(now(), '%y-%m-%d') GROUP BY a.use_date,b.meal_ticket_variety,a.use_id,tc.ticketCount ORDER BY a.use_date ", new Object[] { greenMealTicketDTO.getUserId(),greenMealTicketDTO.getUserId() }); for (Map map : list) { String useId = map.get("use_id").toString(); String encrypt = AesEncryptUtil.encrypt(useId); map.put("use_id", encrypt); } /*greenOperateLogBizc.addLog(Constant.MEAL_TICKET_B, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询餐券领取列表", Constant.LOG_OPERATE, greenMealTicketDTO.getUserId());*/ return new RestResult(Constant.SUCCESS, "成功", list); } catch (Exception e) { e.printStackTrace(); /*greenOperateLogBizc.addLog(Constant.MEAL_TICKET_B, Constant.QUERY, Constant.OPERATE_FAIL, "查询餐券领取列表", Constant.LOG_ERROR, greenMealTicketDTO.getUserId());*/ return new RestResult(Constant.FAILED, "返回异常"); } } /** 获取本月餐券剩余数量 */ @SuppressWarnings("unchecked") @RequestMapping(value = "/getMonthMealNum", method = RequestMethod.POST) @ResponseBody public RestResult getMonthMealNum(@RequestBody Object requestBody) { GreenMealTicketDTO greenMealTicketDTO = new ObjectMapper().convertValue(requestBody, new TypeReference() { }); String userId = greenMealTicketDTO.getUserId(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } try { String sql = " SELECT ANY_value (n.id) AS id,n.department_id,d. NAME AS departmentName, DATE_FORMAT(n.issue_date, '%Y-%m') AS time, if(t.currentNum=NULL,0,t.currentNum) currentNum," + " sum(n.issue_num) AS 'mealNum' FROM GREEN_MEAL_TICKET_NUM n LEFT JOIN green_user_info ui ON n.department_id = ui.department_id " + " LEFT JOIN GREEN_DEPARTMENT d ON n.department_id = d.id LEFT JOIN ( SELECT b.applicant_department_id AS id, " + " count(IF(a.use_status <> '2', TRUE, NULL)) currentNum FROM GREEN_MEAL_TICKET a " + " LEFT JOIN GREEN_MEAL_TICKET_APPLY b ON a.ticket_apply_id = b.id WHERE " + "a.is_deleted = 'N' AND DATE_FORMAT(a.use_date, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') GROUP BY " + " b.applicant_department_id, DATE_FORMAT(a.use_date, '%Y-%m') DESC ) t on t.id = n.department_id " + " where n.is_deleted = 'N' AND DATE_FORMAT(n.issue_date, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')" + " AND ui.id = ? GROUP BY n.department_id,d. NAME,DATE_FORMAT(n.issue_date, '%Y-%m') "; List> list = hibernateDao.queryForListWithSql(sql, new Object[] { greenMealTicketDTO.getUserId()}); if(list.size()<=0){ return new RestResult(Constant.FAILED, "数据为空!"); } Map map = new HashMap(); // if(list.get(0).get("currentNum")!=null && !"".equals(list.get(0).get("currentNum"))){ if(list.get(0).get("mealNum")!=null && !"".equals(list.get(0).get("mealNum"))){ Integer c = 0; if(list.get(0).get("currentNum")!=null && !"".equals(list.get(0).get("currentNum"))){ c = Integer.parseInt(list.get(0).get("currentNum").toString()); } Integer currentNum= Integer.parseInt(list.get(0).get("mealNum").toString())-c; System.out.println("餐券剩余数量111=="+currentNum); map.put("department_id", list.get(0).get("department_id")); map.put("departmentName", list.get(0).get("departmentName")); map.put("currentNum", currentNum); } // } return new RestResult(Constant.SUCCESS, "成功", map); } catch (Exception e) { e.printStackTrace(); /*greenOperateLogBizc.addLog(Constant.MEAL_TICKET_B, Constant.QUERY, Constant.OPERATE_FAIL, "查询餐券领取列表", Constant.LOG_ERROR, greenMealTicketDTO.getUserId());*/ return new RestResult(Constant.FAILED, "返回异常"); } } /** 餐券申请列表 */ @RequestMapping(value = "/applyList", method = RequestMethod.POST) @ResponseBody public RestResult applyList(@RequestBody Object requestBody) { GreenMealTicketDTO greenMealTicketDTO = new ObjectMapper().convertValue(requestBody, new TypeReference() { }); String userId = greenMealTicketDTO.getUserId(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } try { List> list = hibernateDao.queryForListWithSql( "Select meal_ticket_variety,meal_ticket_num,start_date,end_date,apply_date from GREEN_MEAL_TICKET_APPLY where apply_status = '1' and user_id = ? and approval_status = '1' and STR_TO_DATE(end_date, '%Y-%m-%d') >= date_format(now(),'%y-%m-%d') ORDER BY apply_date ", new Object[] { greenMealTicketDTO.getUserId() }); /* greenOperateLogBizc.addLog(Constant.MEAL_TICKET_A, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询餐券领取列表", Constant.LOG_OPERATE, greenMealTicketDTO.getUserId()); */ return new RestResult(Constant.SUCCESS, "成功", list); } catch (Exception e) { e.printStackTrace(); /*greenOperateLogBizc.addLog(Constant.MEAL_TICKET_A, Constant.QUERY, Constant.OPERATE_FAIL, "查询餐券领取列表", Constant.LOG_ERROR, greenMealTicketDTO.getUserId());*/ return new RestResult(Constant.FAILED, "返回异常"); } } /** 餐券扫码 */ @RequestMapping(value = "/scan", method = RequestMethod.POST) @ResponseBody @Transactional(rollbackFor=Exception.class) public RestResult scan(HttpServletRequest request) { Map bodyMap = getBodyStr(request); String bodyData = bodyMap.get("bodyData"); GreenMealTicketDTO greenMealTicketDTO =JSONUtil.json2Object(bodyData, GreenMealTicketDTO.class); try { String useId = greenMealTicketDTO.getUseId(); String desEncrypt = AesEncryptUtil.desEncrypt(useId); String now = DateUtil.now(DateUtil.FORMAT_Y_M_D); List> list = hibernateDao.queryForListWithSql( "Select * from GREEN_MEAL_TICKET where use_id = ? and use_date = ? and use_status = '0' limit 1", new Object[] { desEncrypt.trim(), now }); if (list==null || list.size()<=0) { System.out.println("餐券已用完!"); return new RestResult(Constant.FAILED, "餐券已用完!",false); } hibernateDao.updateWithSql("update GREEN_MEAL_TICKET set use_status = ? where id = ?", new Object[] { Constant.TICKET_USEING, list.get(0).get("id") }); RestResult restResult = new RestResult(Constant.SUCCESS); return restResult; } catch (Exception e) { //设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); e.printStackTrace(); return new RestResult(Constant.FAILED); } } }