package com.nationalelectric.greenH5;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.nationalelectirc.Constant.ApplyRoleConstant;
import com.nationalelectirc.Constant.Constant;
import com.nationalelectirc.utils.RestResult;
import com.nationalelectric.greenH5.bizc.BaseServiceImpl;
import com.nationalelectric.greenH5.bizc.IGreenApplyListBizc;
import com.nationalelectric.greenH5.bizc.IGreenOperateLogBizc;
import com.nationalelectric.greenH5.bizc.IGreenStaffCardInfoBizc;
import com.nationalelectric.greenH5.po.GreenApplyList;
import com.nationalelectric.greenH5.po.GreenStaffCardInfo;
import com.nationalelectric.greenH5.po.GreenUserInfo;
import com.nationalelectric.greenH5.utils.AesEncryptUtil;
import com.nationalelectric.greenH5.utils.DateUtil;
import com.sgcc.uap.persistence.IHibernateDao;
import com.sgcc.uap.service.validator.ServiceValidatorBaseException;
import com.sgcc.uap.service.validator.ServiceValidatorUtil;
/**
* 概述:
*
* 功能:
*
* @author dell
*/
@Controller
@RequestMapping("/greenStaffCardInfo")
public class GreenStaffCardInfoController extends GreenBaseController{
/**
* 员工卡service
*/
@Resource
private IGreenStaffCardInfoBizc greenstaffcardinfoBizc;
/**
* 我的申请service
*/
@Resource
private IGreenApplyListBizc greenApplyListBizc;
/**
* 保存图片controller
*/
@Resource
private GreenImageInfoController greenImageInfoController;
/**
* 用户controller
*/
@Resource
private GreenUserInfoController greenUserInfoController;
@Resource
private IGreenOperateLogBizc greenOperateLogBizc;
/**
* HibernateDao逻辑构件
*/
@Autowired
IHibernateDao hibernateDao;
@Autowired
private BaseServiceImpl baseService;
/**
* 保存员工卡申请信息
*
* @param greenStaffCardInfo
* @return
*/
@Transactional(rollbackFor=Exception.class)
@RequestMapping(value = "/saveStaffCardInfo", method = RequestMethod.POST)
public @ResponseBody RestResult saveStaffCardInfo(@RequestBody Object requestBody) {
GreenStaffCardInfo greenStaffCardInfo = new ObjectMapper().convertValue(requestBody, new TypeReference() {});
try {
String userId = greenStaffCardInfo.getUserId();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
//校验
ServiceValidatorUtil.validatorJavaBean(greenStaffCardInfo);
String uuid =greenImageInfoController.saveImage(greenStaffCardInfo.getEntryOrderPic(), userId);
// 入职单/调令照片
boolean flag=baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, greenStaffCardInfo.getEntryOrderPic());
greenStaffCardInfo.setEntryOrderPic(uuid+Constant.IMG_SUFFIX);
// 申请时间
greenStaffCardInfo.setApplyTime(new SimpleDateFormat(DateUtil.Y_M_DH_MI_S).format(new Date()));
// 创建者
greenStaffCardInfo.setCreator(greenStaffCardInfo.getUserId().toString());
// 修改者
greenStaffCardInfo.setModifier(greenStaffCardInfo.getUserId().toString());
// 创建时间
greenStaffCardInfo.setGmtCreated(new Date());
// 修改时间
greenStaffCardInfo.setGmtModified(new Date());
// 删除标记
greenStaffCardInfo.setIsDeleted("N");
//图片外键
greenStaffCardInfo.setEntryOrderPicData(uuid);
//图片状态
greenStaffCardInfo.setImgStatus(flag?1:0);
String cardno = greenStaffCardInfo.getIdcardNo();
try {
cardno = AesEncryptUtil.encrypt(cardno);
} catch (Exception e) {
}
greenStaffCardInfo.setIdcardNo(cardno);
// 添加访客信息到访客信息表
greenstaffcardinfoBizc.add(greenStaffCardInfo);
// 添加员工卡信息到申请信息list表
GreenApplyList list = new GreenApplyList();
// 申请人id
list.setUserId(greenStaffCardInfo.getUserId());
// 申请事项详情ID
list.setDetailId(greenStaffCardInfo.getId());
// 申请类型
list.setApplyType("03");
// 申请类型名称
list.setApplyTypeName("员工卡");
// 申请详情1(所属部门)
list.setApplyInfo1(greenStaffCardInfo.getDeptName());
// 申请详情2(员工姓名)
list.setApplyInfo2(greenStaffCardInfo.getStaffName());
// 一级审批部门
list.setFirstApproval(ApplyRoleConstant.STAFF_CARD_GENERAL);
// 一级审批状态(默认待审批)
// list.setFirstStatus(Constant.APPROVAL_DOING);
// 二级审批部门
list.setSecondApproval(ApplyRoleConstant.STAFF_CARD_SECURITY);
// 二级审批状态(默认待审批)
// list.setSecondStatus(Constant.APPROVAL_DOING);
// 三级审批部门
list.setThirdApproval(ApplyRoleConstant.STAFF_CARD_MAKE);
// 三级审批状态(默认待制卡)
// list.setThirdStatus(Constant.MAKE_CARD_DOING);
// 申请时间
list.setApplyTime(greenStaffCardInfo.getApplyTime());
// 创建者
list.setCreator(greenStaffCardInfo.getUserId().toString());
// 修改者
list.setModifier(greenStaffCardInfo.getUserId().toString());
// 创建时间
list.setGmtCreated(new Date());
// 修改时间
list.setGmtModified(new Date());
// 删除标识
list.setIsDeleted("N");
// 添加申请到申请list表
greenApplyListBizc.add(list);
/*
final ExecutorService taskExecutorService = Executors.newFixedThreadPool(2);
// 根据角色名称查询员工卡申请审批的用户
String staffAppSql = "SELECT user_name userName FROM GREEN_USER_ROLE_REL WHERE role_name='员工卡申请审批'";
List staffAppList = hibernateDao.queryForListWithSql(staffAppSql, new Object[] {},
new BeanPropertyRowMapper(GreenUserRoleRel.class));
final String msgname = "审批通知";
final String tm = "您有一个【员工卡申请】审批";
for (int i = 0; i < staffAppList.size(); i++) {
final String userName = staffAppList.get(i).getUserName();
taskExecutorService.execute(new Runnable() {
public void run() {
System.out.println(userName);
PushMessageUtil.pushMessage(msgname, tm, userName);
}
});
}
*/
//greenOperateLogBizc.addLog(Constant.STAFF_CARD, Constant.STAFF, Constant.OPERATE_SUCCESS, "员工卡申请", Constant.LOG_OPERATE, greenStaffCardInfo.getUserId());
return new RestResult(Constant.SUCCESS, "申请成功");
} catch (ServiceValidatorBaseException e) {
//greenOperateLogBizc.addLog(Constant.STAFF_CARD, Constant.STAFF, Constant.OPERATE_FAIL, "员工卡申请", Constant.LOG_ERROR, greenStaffCardInfo.getUserId());
//设置手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();
return new RestResult(Constant.FAILED,e.getMessage());
} catch (Exception e) {
//greenOperateLogBizc.addLog(Constant.STAFF_CARD, Constant.STAFF, Constant.OPERATE_FAIL, "员工卡申请", Constant.LOG_ERROR, greenStaffCardInfo.getUserId());
//设置手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace();
return new RestResult(Constant.FAILED, "申请失败");
}
}
/**
* 根据id查询员工卡申请详情
*
* @param id
* @param applyType
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public List