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

203 lines
9.4 KiB
Plaintext
Raw Normal View History

2025-01-21 13:12:35 +08:00
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);
}
}
}