203 lines
9.4 KiB
Plaintext
203 lines
9.4 KiB
Plaintext
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);
|
||
}
|
||
}
|
||
|
||
}
|