hz-zhhq-app-service/greenH5modul/.svn/pristine/9a/9a6eff63bc07f11311d7862f7db...

203 lines
9.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
/**
* <b>概述</b><br>
* <p>
* <b>功能</b><br>
*
* @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<GreenMealTicketDTO>() {
});
String userId = greenMealTicketDTO.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
try {
List<Map<String, Object>> 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<String, Object> 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<GreenMealTicketDTO>() {
});
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<Map<String, Object>> list = hibernateDao.queryForListWithSql(sql,
new Object[] { greenMealTicketDTO.getUserId()});
if(list.size()<=0){
return new RestResult(Constant.FAILED, "数据为空!");
}
Map<Object, Object> map = new HashMap<Object, Object>();
// 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<GreenMealTicketDTO>() {
});
String userId = greenMealTicketDTO.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
try {
List<Map<String, Object>> 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<String, String> 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<Map<String, Object>> 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);
}
}
}