1422 lines
56 KiB
Java
1422 lines
56 KiB
Java
package com.jysoft.card.service;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Objects;
|
|
import java.util.UUID;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.jysoft.card.entity.vo.CardAuditVo;
|
|
import com.jysoft.card.entity.vo.CardVo;
|
|
import com.jysoft.card.entity.vo.CardVo.AuditVo;
|
|
import com.jysoft.card.entity.vo.CardVo.UserInfoVo;
|
|
import com.nationalelectirc.Constant.Constant;
|
|
import com.nationalelectirc.utils.RestResult;
|
|
import com.nationalelectric.greenH5.AliasManageController;
|
|
import com.nationalelectric.greenH5.bizc.BaseServiceImpl;
|
|
import com.nationalelectric.greenH5.utils.DateTimeHelper;
|
|
import com.sgcc.uap.persistence.IHibernateDao;
|
|
import com.sgcc.uap.utils.StringUtils;
|
|
|
|
/**
|
|
* @author 10488 门禁卡办理业务逻辑层-新
|
|
*/
|
|
@Service
|
|
public class NewCardService {
|
|
|
|
@Autowired
|
|
private IHibernateDao iHibernateDao;
|
|
|
|
@Resource
|
|
private AliasManageController aliasManageController;
|
|
|
|
@Autowired
|
|
private BaseServiceImpl baseService;
|
|
|
|
/**
|
|
* 根据选择的卡类型获取审核人
|
|
*
|
|
* @param entity
|
|
* @return
|
|
*/
|
|
@SuppressWarnings("unchecked")
|
|
public RestResult getAuditCheckUser(CardVo vo) {
|
|
try {
|
|
List<Map<String, String>> list = getDeptByUser(vo);
|
|
List<CardAuditVo> dataList = new ArrayList<CardAuditVo>();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = " SELECT ghc.CHECK_ID AS \"checkId\"," + " ghcd.CHECK_ROLE AS \"checkRole\","
|
|
+ " gui.REAL_NAME AS \"userName\"," + " gui.ID AS \"userId\" "
|
|
+ " FROM GREEN_HOUSE_CHECK ghc"
|
|
+ " LEFT JOIN GREEN_HOUSE_CHECK_DETAILS ghcd ON ghc.CHECK_ID = ghcd.CHECK_ID"
|
|
+ " LEFT JOIN GREEN_HOUSE_CHECK_ROLE ghcr ON ghcd.CHECK_ROLE = ghcr.ROLE_ID"
|
|
+ " LEFT JOIN GREEN_USER_INFO gui ON ghcr.USER_ID = gui.ID"
|
|
+ " WHERE ghc.CHECK_NAME = ? AND gui.DEPARTMENT_ID = ? AND CHECK_SORT = '1'";
|
|
System.err.println(sql);
|
|
parameter.add(vo.getCardType());
|
|
parameter.add(list.get(0).get("departmentId"));
|
|
dataList = iHibernateDao.queryForListWithSql(sql.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardAuditVo>(CardAuditVo.class));
|
|
return new RestResult(Constant.SUCCESS, "查询成功", dataList);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 第三方人员/VIP贵宾/临时出入证/施工出入证-根据选择的部门获取获取审核人
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getAuditCheckUser2(CardVo vo) {
|
|
try {
|
|
List<CardAuditVo> dataList = new ArrayList<CardAuditVo>();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = " SELECT ghc.CHECK_ID AS \"checkId\"," + " ghcd.CHECK_ROLE AS \"checkRole\","
|
|
+ " gui.REAL_NAME AS \"userName\"," + " gui.ID AS \"userId\" "
|
|
+ " FROM GREEN_HOUSE_CHECK ghc"
|
|
+ " LEFT JOIN GREEN_HOUSE_CHECK_DETAILS ghcd ON ghc.CHECK_ID = ghcd.CHECK_ID"
|
|
+ " LEFT JOIN GREEN_HOUSE_CHECK_ROLE ghcr ON ghcd.CHECK_ROLE = ghcr.ROLE_ID"
|
|
+ " LEFT JOIN GREEN_USER_INFO gui ON gurr.USER_ID = gui.ID"
|
|
+ " WHERE ghc.CHECK_NAME = ? AND gui.DEPARTMENT_ID = ? AND CHECK_SORT = '1'";
|
|
System.err.println(sql);
|
|
parameter.add(vo.getCardType());
|
|
parameter.add(vo.getXmgkOrgId());
|
|
dataList = iHibernateDao.queryForListWithSql(sql.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardAuditVo>(CardAuditVo.class));
|
|
return new RestResult(Constant.SUCCESS, "查询成功", dataList);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 新增办卡数据
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult addCardData(CardVo vo) {
|
|
switch (vo.getCardType()) {
|
|
case "职工卡":
|
|
return addEmployeeCard(vo);
|
|
case "第三方人员":
|
|
return addThirdPartyPersonnelCard(vo);
|
|
case "VIP贵宾":
|
|
return addVipCard(vo);
|
|
case "临时出入证":
|
|
return addLsCard(vo);
|
|
case "施工出入证":
|
|
return addSgCard(vo);
|
|
default:
|
|
break;
|
|
}
|
|
return new RestResult(Constant.FAILED, "操作失败");
|
|
}
|
|
|
|
/**
|
|
* 新增办卡数据-职工卡
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public RestResult addEmployeeCard(CardVo vo) {
|
|
try {
|
|
// 多人办理门禁卡使用相同的ID
|
|
String dataId = UUID.randomUUID().toString().replace("-", "");
|
|
List<UserInfoVo> userInfoVos = vo.getUserInfoVos();
|
|
String applyTime = DateTimeHelper.getNowDate();
|
|
for (int i = 0; i < userInfoVos.size(); i++) {
|
|
UserInfoVo u = userInfoVos.get(i);
|
|
StringBuilder addSql = new StringBuilder();
|
|
// 数据ID
|
|
String id = UUID.randomUUID().toString().replace("-", "");
|
|
// 保存办卡数据
|
|
addSql.append("INSERT INTO GREEN_CARD (ID, USER_ID, USER_NAME, PHONE, ORG_ID, ORG_NAME,TYPE,"
|
|
+ " UNIT,PERSONNEL,PERSONNEL_PHONE,APPLY_TIME,EXAMINE_BATCH,EXAMINE_STATE,EXAMINE_PERSON_ID,"
|
|
+ " EXAMINE_PERSON_NAME,CARD_TYPE,TYPE_NAME,PHOTO,ID_PHOTO,IS_ENABLE_FACE,CARD_STATUS,"
|
|
+ " DATA_ID,CHECK_ID,CHECK_ROLE,OPER_TYPE)"
|
|
+ " VALUES (?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
|
iHibernateDao.executeSqlUpdate(addSql.toString(),
|
|
new Object[] { id, vo.getUserId(), vo.getUserName(), vo.getPhone(), vo.getOrgId(),
|
|
vo.getOrgName(), vo.getType(), u.getUnit(), u.getPersonnel(), u.getPersonnelPhone(),
|
|
applyTime, '1', '0', vo.getCheckUserId(), vo.getCheckUserName(), vo.getCardType(),
|
|
vo.getTypeName(), u.getPhoto(), u.getIdPhoto(), vo.getIsEnableFace(), '1', dataId,
|
|
vo.getCheckId(), vo.getCheckRole(),"0" });
|
|
}
|
|
// 添加出入区域
|
|
addAreaData(vo, dataId);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
// 手动回滚异常
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return new RestResult(Constant.FAILED, "添加失败");
|
|
}
|
|
pushInfo(vo);
|
|
return new RestResult(Constant.SUCCESS, "添加成功");
|
|
|
|
}
|
|
|
|
/**
|
|
* 新增办卡数据-第三方人员
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public RestResult addThirdPartyPersonnelCard(CardVo vo) {
|
|
try {
|
|
String dataId = UUID.randomUUID().toString().replace("-", "");
|
|
List<UserInfoVo> userInfoVos = vo.getUserInfoVos();
|
|
String applyTime = DateTimeHelper.getNowDate();
|
|
for (int i = 0; i < userInfoVos.size(); i++) {
|
|
UserInfoVo u = userInfoVos.get(i);
|
|
StringBuilder addSql = new StringBuilder();
|
|
// 数据ID
|
|
String id = UUID.randomUUID().toString().replace("-", "");
|
|
// 保存办卡数据
|
|
addSql.append("INSERT INTO GREEN_CARD (ID, USER_ID, USER_NAME, PHONE, ORG_ID, ORG_NAME,TYPE,"
|
|
+ " UNIT,PERSONNEL,PERSONNEL_PHONE,APPLY_TIME,EXAMINE_BATCH,EXAMINE_STATE,EXAMINE_PERSON_ID,"
|
|
+ " EXAMINE_PERSON_NAME,CARD_TYPE,TYPE_NAME,PHOTO,ID_PHOTO,IS_ENABLE_FACE,CARD_STATUS,"
|
|
+ " DATA_ID,CHECK_ID,CHECK_ROLE,XMGK_ORG_ID,XMGK_ORG_NAME,JB_USER_ID,JB_USER_PHONE,JB_USER_NAME,"
|
|
+ " APPLY_TYPE,APPLY_TERM,DOCUMENTATION,OPER_TYPE)"
|
|
+ " VALUES (?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
|
iHibernateDao.executeSqlUpdate(addSql.toString(),
|
|
new Object[] { id, vo.getUserId(), vo.getUserName(), vo.getPhone(), vo.getOrgId(),
|
|
vo.getOrgName(), vo.getType(), u.getUnit(), u.getPersonnel(), u.getPersonnelPhone(),
|
|
applyTime, '1', '0', vo.getCheckUserId(), vo.getCheckUserName(), vo.getCardType(),
|
|
vo.getTypeName(), u.getPhoto(), u.getIdPhoto(), vo.getIsEnableFace(), '1', dataId,
|
|
vo.getCheckId(), vo.getCheckRole(), vo.getXmgkOrgId(), vo.getXmgkOrgName(),
|
|
vo.getJbUserId(), vo.getJbUserPhone(), vo.getJbUserName(), vo.getApplyType(),
|
|
vo.getApplyTerm(), u.getDocumentation(),"0" });
|
|
}
|
|
// 添加出入区域
|
|
addAreaData(vo, dataId);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
// 手动回滚异常
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return new RestResult(Constant.FAILED, "添加失败");
|
|
}
|
|
pushInfo(vo);
|
|
return new RestResult(Constant.SUCCESS, "添加成功");
|
|
}
|
|
|
|
/**
|
|
* 新增办卡数据-VIP贵宾
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public RestResult addVipCard(CardVo vo) {
|
|
try {
|
|
String dataId = UUID.randomUUID().toString().replace("-", "");
|
|
String applyTime = DateTimeHelper.getNowDate();
|
|
StringBuilder addSql = new StringBuilder();
|
|
// 数据ID
|
|
String id = UUID.randomUUID().toString().replace("-", "");
|
|
// 保存办卡数据
|
|
addSql.append("INSERT INTO GREEN_CARD (ID, USER_ID, USER_NAME, PHONE, ORG_ID, ORG_NAME,TYPE,"
|
|
+ " APPLY_TIME,EXAMINE_BATCH,EXAMINE_STATE,EXAMINE_PERSON_ID,EXAMINE_PERSON_NAME,"
|
|
+ " CARD_TYPE,TYPE_NAME,DATA_ID,CHECK_ID,CHECK_ROLE,JB_USER_ID,JB_USER_PHONE,JB_USER_NAME,"
|
|
+ " LEND_TIME,BACK_TIME,DOCUMENTATION,OPER_TYPE,CARD_STATUS)"
|
|
+ " VALUES (?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
|
iHibernateDao.executeSqlUpdate(addSql.toString(),
|
|
new Object[] { id, vo.getUserId(), vo.getUserName(), vo.getPhone(), vo.getOrgId(), vo.getOrgName(),
|
|
vo.getType(), applyTime, "1", "0", vo.getCheckUserId(), vo.getCheckUserName(),
|
|
vo.getCardType(), vo.getTypeName(), dataId, vo.getCheckId(), vo.getCheckRole(),
|
|
vo.getJbUserId(), vo.getJbUserPhone(), vo.getJbUserName(), vo.getLendTime(),
|
|
vo.getBackTime(), vo.getDocumentation(),"0","1" });
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
// 手动回滚异常
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return new RestResult(Constant.FAILED, "添加失败");
|
|
}
|
|
pushInfo(vo);
|
|
return new RestResult(Constant.SUCCESS, "添加成功");
|
|
|
|
}
|
|
|
|
/**
|
|
* 新增办卡数据-临时出入证
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public RestResult addLsCard(CardVo vo) {
|
|
try {
|
|
String dataId = UUID.randomUUID().toString().replace("-", "");
|
|
List<UserInfoVo> userInfoVos = vo.getUserInfoVos();
|
|
String applyTime = DateTimeHelper.getNowDate();
|
|
for (int i = 0; i < userInfoVos.size(); i++) {
|
|
UserInfoVo u = userInfoVos.get(i);
|
|
StringBuilder addSql = new StringBuilder();
|
|
// 数据ID
|
|
String id = UUID.randomUUID().toString().replace("-", "");
|
|
// 保存办卡数据
|
|
addSql.append("INSERT INTO GREEN_CARD (ID, USER_ID, USER_NAME, PHONE, ORG_ID, ORG_NAME,TYPE,"
|
|
+ " APPLY_TIME,EXAMINE_BATCH,EXAMINE_STATE,EXAMINE_PERSON_ID,EXAMINE_PERSON_NAME,"
|
|
+ " CARD_TYPE,TYPE_NAME,DATA_ID,CHECK_ID,CHECK_ROLE,PRO_NAME,PRO_UNIT,PRO_MANAGER,"
|
|
+ " PRO_MANAGER_PHONE,CONTRACT_START_TIME,CONTRACT_END_TIME,BZ_NUM,PERSONNEL,ID_PHOTO,"
|
|
+ " ACCESS_AREA,XMGK_ORG_ID,XMGK_ORG_NAME,"
|
|
+ " JB_USER_ID,JB_USER_PHONE,JB_USER_NAME,OPER_TYPE,CARD_STATUS)"
|
|
+ " VALUES (?, ?, ?, ?, ?, ?,?,?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
|
iHibernateDao.executeSqlUpdate(addSql.toString(),
|
|
new Object[] { id, vo.getUserId(), vo.getUserName(), vo.getPhone(), vo.getOrgId(),
|
|
vo.getOrgName(), vo.getType(), applyTime, "1", "0", vo.getCheckUserId(),
|
|
vo.getCheckUserName(), vo.getCardType(), vo.getTypeName(), dataId, vo.getCheckId(),
|
|
vo.getCheckRole(), vo.getProName(), vo.getProUnit(), vo.getProManager(),
|
|
vo.getProManagerPhone(), vo.getContractStartTime(), vo.getContractEndTime(),
|
|
vo.getBzNum(), u.getPersonnel(), u.getIdPhoto(), vo.getAccessArea(),vo.getXmgkOrgId(),
|
|
vo.getXmgkOrgName(),vo.getJbUserId(),vo.getJbUserPhone(),vo.getJbUserName(),"0","1"});
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
// 手动回滚异常
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return new RestResult(Constant.FAILED, "添加失败");
|
|
}
|
|
pushInfo(vo);
|
|
return new RestResult(Constant.SUCCESS, "添加成功");
|
|
|
|
}
|
|
|
|
/**
|
|
* 新增办卡数据-施工出入证
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public RestResult addSgCard(CardVo vo) {
|
|
try {
|
|
String dataId = UUID.randomUUID().toString().replace("-", "");
|
|
List<UserInfoVo> userInfoVos = vo.getUserInfoVos();
|
|
String applyTime = DateTimeHelper.getNowDate();
|
|
for (int i = 0; i < userInfoVos.size(); i++) {
|
|
UserInfoVo u = userInfoVos.get(i);
|
|
StringBuilder addSql = new StringBuilder();
|
|
// 数据ID
|
|
String id = UUID.randomUUID().toString().replace("-", "");
|
|
// 保存办卡数据
|
|
addSql.append("INSERT INTO GREEN_CARD (ID, USER_ID, USER_NAME, PHONE, ORG_ID, ORG_NAME,TYPE,"
|
|
+ " APPLY_TIME,EXAMINE_BATCH,EXAMINE_STATE,EXAMINE_PERSON_ID,EXAMINE_PERSON_NAME,"
|
|
+ " CARD_TYPE,TYPE_NAME,DATA_ID,CHECK_ID,CHECK_ROLE,XMGK_ORG_ID,XMGK_ORG_NAME,"
|
|
+ " JB_USER_ID,JB_USER_PHONE,JB_USER_NAME,WORK_CONTENT,TICKET_NO,ACCESS_AREA,"
|
|
+ " PRO_UNIT,PRO_MANAGER,PRO_MANAGER_PHONE,CONTRACT_START_TIME,CONTRACT_END_TIME,CAR_NUM,"
|
|
+ " PERSONNEL,ID_PHOTO,ID_NUMBER,OPER_TYPE,CARD_STATUS)"
|
|
+ " VALUES (?, ?, ?, ?, ?, ?,?,?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
|
iHibernateDao.executeSqlUpdate(addSql.toString(),
|
|
new Object[] { id, vo.getUserId(), vo.getUserName(), vo.getPhone(), vo.getOrgId(),
|
|
vo.getOrgName(), vo.getType(), applyTime, "1", "0", vo.getCheckUserId(),
|
|
vo.getCheckUserName(), vo.getCardType(), vo.getTypeName(), dataId, vo.getCheckId(),
|
|
vo.getCheckRole(), vo.getXmgkOrgId(), vo.getXmgkOrgName(), vo.getJbUserId(),
|
|
vo.getJbUserPhone(), vo.getJbUserName(), vo.getWorkContent(), vo.getTicketNo(),
|
|
vo.getAccessArea(), vo.getProUnit(), vo.getProManager(), vo.getProManagerPhone(),
|
|
vo.getContractStartTime(), vo.getContractEndTime(), vo.getCarNum(), u.getPersonnel(),
|
|
u.getIdPhoto(), u.getIdNumber(),"0","1" });
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
// 手动回滚异常
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return new RestResult(Constant.FAILED, "添加失败");
|
|
}
|
|
pushInfo(vo);
|
|
return new RestResult(Constant.SUCCESS, "添加成功");
|
|
}
|
|
|
|
/**
|
|
* 添加出入区域
|
|
*
|
|
* @param vo
|
|
* @param id
|
|
*/
|
|
public void addAreaData(CardVo vo, String id) {
|
|
String[] areaIdsArr = vo.getAccessArea().split(",");
|
|
List<String> dataList = Arrays.asList(areaIdsArr);
|
|
for (int i = 0; i < dataList.size(); i++) {
|
|
String areaId = dataList.get(i);
|
|
String sqlStr = "INSERT INTO CARD_RELA_ACCESS (GREEN_CARD_ID, ACCESS_ID) VALUES (?, ?)";
|
|
iHibernateDao.executeSqlUpdate(sqlStr, new Object[] { id, areaId });
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 推送消息
|
|
*
|
|
* @param vo
|
|
*/
|
|
public void pushInfo(CardVo vo) {
|
|
String title = "" + vo.getCardType() + "申请";
|
|
String text = "您好,您有新的" + vo.getCardType() + "申请需要审批,请点击查看。";
|
|
String url = "/pages/access-card/card-record";
|
|
aliasManageController.pushToSingle(vo.getCheckUserId(), title, text, url);
|
|
}
|
|
|
|
/**
|
|
* 办卡/办证详情接口
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getDetailInfo(CardVo vo) {
|
|
switch (vo.getCardType()) {
|
|
case "职工卡":
|
|
return getEmployeeCardDetail(vo);
|
|
case "第三方人员":
|
|
return getThirdPartyPersonnelCardDetail(vo);
|
|
case "VIP贵宾":
|
|
return getVipCardDetail(vo);
|
|
case "临时出入证":
|
|
return getLsCardDetail(vo);
|
|
case "施工出入证":
|
|
return getSgCardDetail(vo);
|
|
default:
|
|
break;
|
|
}
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
|
|
/**
|
|
* 职工卡详情
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
@SuppressWarnings("unchecked")
|
|
public RestResult getEmployeeCardDetail(CardVo vo) {
|
|
try {
|
|
List<CardVo> dataList = new ArrayList<CardVo>();
|
|
CardVo cardVo = new CardVo();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = " SELECT gc.DATA_ID AS \"dataId\",MAX(gc.CARD_TYPE) AS \"carType\",MAX(gc.TYPE_NAME) AS \"typeName\","
|
|
+ " MAX(gc.IS_ENABLE_FACE) AS \"isEnableFace\",MAX(gc.APPLY_TIME) AS \"applyTime\","
|
|
+ " MAX(gc.EXAMINE_BATCH) AS \"examineBatch\",MAX(gc.EXAMINE_STATE) AS \"examineState\","
|
|
+ " MAX(gc.CHECK_ID) AS \"checkId\",MAX(gc.CHECK_ROLE) AS \"checkRole\",MAX(gc.USER_NAME) AS \"userName\","
|
|
+ " MAX(gc.EXAMINE_PERSON_ID) AS \"checkUserId\",MAX(gc.OPER_TYPE) AS \"operType\""
|
|
+ " FROM GREEN_CARD gc" + " WHERE gc.DATA_ID = ?" + " GROUP BY gc.DATA_ID";
|
|
System.err.println(sql);
|
|
parameter.add(vo.getDataId());
|
|
dataList = iHibernateDao.queryForListWithSql(sql.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo>(CardVo.class));
|
|
if (CollectionUtils.isNotEmpty(dataList)) {
|
|
// 查询基本信息
|
|
cardVo = dataList.get(0);
|
|
// 查询出入区域
|
|
String accessArea = getAreaData(vo);
|
|
cardVo.setAccessArea(accessArea);
|
|
// 查询人员信息
|
|
List<CardVo.UserInfoVo> userInfoVos = new ArrayList<CardVo.UserInfoVo>();
|
|
String sql2 = " SELECT gc.UNIT AS \"unit\",gc.PERSONNEL AS \"personnel\","
|
|
+ " gc.PERSONNEL_PHONE AS \"personnelPhone\",gc.PHOTO AS \"photo\",gc.ID_PHOTO AS \"idPhoto\""
|
|
+ " FROM GREEN_CARD gc WHERE gc.DATA_ID = ? ";
|
|
userInfoVos = iHibernateDao.queryForListWithSql(sql2.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo.UserInfoVo>(CardVo.UserInfoVo.class));
|
|
// 处理人员照片
|
|
for (int i = 0; i < userInfoVos.size(); i++) {
|
|
UserInfoVo vo2 = userInfoVos.get(i);
|
|
String photo = vo2.getPhoto();
|
|
String idPhoto = vo2.getIdPhoto();
|
|
if (StringUtils.isNotBlank(photo)) { // 证件照片
|
|
String newPhoto = "";
|
|
String[] photoArr = photo.split(",");
|
|
for (String str : photoArr) {
|
|
newPhoto += baseService.getImageBase64(str) + ",";
|
|
}
|
|
vo2.setPhoto(newPhoto);
|
|
}
|
|
if (StringUtils.isNotBlank(idPhoto)) { // 人脸照片
|
|
vo2.setIdPhoto(baseService.getImageBase64(idPhoto));
|
|
}
|
|
}
|
|
cardVo.setUserInfoVos(userInfoVos);
|
|
// 查询审核详情
|
|
List<AuditVo> auditVos = getAudits(vo);
|
|
cardVo.setAuditVos(auditVos);
|
|
}
|
|
return new RestResult(Constant.SUCCESS, "查询成功", cardVo);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 第三方人员详情
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getThirdPartyPersonnelCardDetail(CardVo vo) {
|
|
try {
|
|
List<CardVo> dataList = new ArrayList<CardVo>();
|
|
CardVo cardVo = new CardVo();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = " SELECT gc.CARD_TYPE AS \"cardType\",gc.TYPE_NAME AS \"typeName\","
|
|
+ " gc.APPLY_TIME AS \"applyTime\",gc.XMGK_ORG_NAME AS \"xmgkOrgName\","
|
|
+ " gc.JB_USER_NAME AS \"jbUserName\",gc.JB_USER_PHONE AS \"jbUserPhone\","
|
|
+ " gc.APPLY_TYPE AS \"applyType\",gc.APPLY_TERM AS \"applyTerm\",gc.DATA_ID AS \"dataId\","
|
|
+ " gc.EXAMINE_BATCH AS \"examineBatch\",gc.EXAMINE_STATE AS \"examineState\","
|
|
+ " gc.CHECK_ID AS \"checkId\",gc.CHECK_ROLE AS \"checkRole\",gc.EXAMINE_PERSON_ID AS \"checkUserId\","
|
|
+ " gc.OPER_TYPE AS \"operType\",gc.USER_NAME AS \"userName\""
|
|
+ " FROM GREEN_CARD gc" + " WHERE gc.DATA_ID = ?";
|
|
System.err.println(sql);
|
|
parameter.add(vo.getDataId());
|
|
dataList = iHibernateDao.queryForListWithSql(sql.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo>(CardVo.class));
|
|
if (CollectionUtils.isNotEmpty(dataList)) {
|
|
// 查询基本信息
|
|
cardVo = dataList.get(0);
|
|
// 查询出入区域
|
|
String accessArea = getAreaData(vo);
|
|
cardVo.setAccessArea(accessArea);
|
|
// 查询人员信息
|
|
List<CardVo.UserInfoVo> userInfoVos = new ArrayList<CardVo.UserInfoVo>();
|
|
String sql2 = " SELECT gc.UNIT AS \"unit\",gc.PERSONNEL AS \"personnel\","
|
|
+ " gc.PERSONNEL_PHONE AS \"personnelPhone\",gc.PHOTO AS \"photo\",gc.ID_PHOTO AS \"idPhoto\","
|
|
+ " gc.DOCUMENTATION AS \"documentation\"" + " FROM GREEN_CARD gc WHERE gc.DATA_ID = ? ";
|
|
userInfoVos = iHibernateDao.queryForListWithSql(sql2.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo.UserInfoVo>(CardVo.UserInfoVo.class));
|
|
// 处理人员照片
|
|
for (int i = 0; i < userInfoVos.size(); i++) {
|
|
UserInfoVo vo2 = userInfoVos.get(i);
|
|
String photo = vo2.getPhoto();
|
|
String idPhoto = vo2.getIdPhoto();
|
|
String documentation = vo2.getDocumentation();
|
|
if (StringUtils.isNotBlank(photo)) { // 证件照片
|
|
String newPhoto = "";
|
|
String[] photoArr = photo.split(",");
|
|
for (String str : photoArr) {
|
|
newPhoto += baseService.getImageBase64(str) + ",";
|
|
}
|
|
vo2.setPhoto(newPhoto);
|
|
}
|
|
if (StringUtils.isNotBlank(idPhoto)) { // 人脸照片
|
|
vo2.setIdPhoto(baseService.getImageBase64(idPhoto));
|
|
}
|
|
if (StringUtils.isNotBlank(documentation)) { // 情况说明
|
|
vo2.setDocumentation(baseService.getImageBase64(documentation));
|
|
}
|
|
}
|
|
cardVo.setUserInfoVos(userInfoVos);
|
|
// 查询审核详情
|
|
List<AuditVo> auditVos = getAudits(vo);
|
|
cardVo.setAuditVos(auditVos);
|
|
}
|
|
return new RestResult(Constant.SUCCESS, "查询成功", cardVo);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* VIP贵宾详情
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getVipCardDetail(CardVo vo) {
|
|
try {
|
|
List<CardVo> dataList = new ArrayList<CardVo>();
|
|
CardVo cardVo = new CardVo();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = " SELECT gc.CARD_TYPE AS \"cardType\",gc.TYPE_NAME AS \"typeName\","
|
|
+ " gc.APPLY_TIME AS \"applyTime\",gc.DATA_ID AS \"dataId\","
|
|
+ " gc.EXAMINE_BATCH AS \"examineBatch\",gc.EXAMINE_STATE AS \"examineState\","
|
|
+ " gc.DOCUMENTATION AS \"documentation\",gc.XMGK_ORG_NAME AS \"xmgkOrgName\","
|
|
+ " gc.JB_USER_NAME AS \"jbUserName\",gc.JB_USER_PHONE AS \"jbUserPhone\","
|
|
+ " gc.LEND_TIME AS \"lendTime\",gc.BACK_TIME AS \"backTime\","
|
|
+ " gc.ACTUAL_BACK_TIME AS \"actualBackTime\",gc.REMARK AS \"remark\","
|
|
+ " gc.CHECK_ID AS \"checkId\",gc.CHECK_ROLE AS \"checkRole\",gc.EXAMINE_PERSON_ID AS \"checkUserId\","
|
|
+ " gc.OPER_TYPE AS \"operType\",gc.USER_NAME AS \"userName\""
|
|
+ " FROM GREEN_CARD gc"
|
|
+ " WHERE gc.DATA_ID = ?";
|
|
System.err.println(sql);
|
|
parameter.add(vo.getDataId());
|
|
dataList = iHibernateDao.queryForListWithSql(sql.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo>(CardVo.class));
|
|
if (CollectionUtils.isNotEmpty(dataList)) {
|
|
// 查询基本信息
|
|
cardVo = dataList.get(0);
|
|
// 处理附件照片
|
|
String documentation = cardVo.getDocumentation();
|
|
if (StringUtils.isNotBlank(documentation)) {
|
|
cardVo.setDocumentation(baseService.getImageBase64(documentation));
|
|
}
|
|
// 查询审核详情
|
|
List<AuditVo> auditVos = getAudits(vo);
|
|
cardVo.setAuditVos(auditVos);
|
|
}
|
|
return new RestResult(Constant.SUCCESS, "查询成功", cardVo);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 临时出入证详情
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getLsCardDetail(CardVo vo) {
|
|
try {
|
|
List<CardVo> dataList = new ArrayList<CardVo>();
|
|
CardVo cardVo = new CardVo();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = " SELECT MAX(gc.CARD_TYPE) AS \"cardType\",MAX(gc.TYPE_NAME) AS \"typeName\","
|
|
+ " MAX(gc.APPLY_TIME) AS \"applyTime\",MAX(gc.DATA_ID) AS \"dataId\","
|
|
+ " MAX(gc.EXAMINE_BATCH) AS \"examineBatch\",MAX(gc.EXAMINE_STATE) AS \"examineState\","
|
|
+ " MAX(gc.PRO_NAME) AS \"proName\",MAX(gc.PRO_UNIT) AS \"proUnit\",MAX(gc.PRO_MANAGER) AS \"proManager\","
|
|
+ " MAX(gc.PRO_MANAGER_PHONE) AS \"proManagerPhone\",MAX(gc.XMGK_ORG_NAME) AS \"xmgkOrgName\","
|
|
+ " MAX(gc.JB_USER_NAME) AS \"jbUserName\",MAX(gc.JB_USER_PHONE) AS \"jbUserPhone\","
|
|
+ " MAX(gc.CONTRACT_START_TIME) AS \"contractStartTime\",MAX(gc.CONTRACT_END_TIME) AS \"contractEndTime\","
|
|
+ " MAX(gc.CARD_START_TIME) AS \"cardStartTime\",MAX(gc.CARD_END_TIME) AS \"cardEndTime\","
|
|
+ " MAX(gc.ACCESS_AREA) AS \"accessArea\",MAX(gc.BZ_NUM) AS \"bzNum\","
|
|
+ " MAX(gc.CHECK_ID) AS \"checkId\",MAX(gc.CHECK_ROLE) AS \"checkRole\",MAX(gc.USER_NAME) AS \"userName\","
|
|
+ " MAX(gc.EXAMINE_PERSON_ID) AS \"checkUserId\",MAX(gc.OPER_TYPE) AS \"operType\""
|
|
+ " FROM GREEN_CARD gc"
|
|
+ " WHERE gc.DATA_ID = ? GROUP BY gc.DATA_ID";
|
|
parameter.add(vo.getDataId());
|
|
dataList = iHibernateDao.queryForListWithSql(sql.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo>(CardVo.class));
|
|
if (CollectionUtils.isNotEmpty(dataList)) {
|
|
// 查询基本信息
|
|
cardVo = dataList.get(0);
|
|
// 查询人员信息
|
|
List<CardVo.UserInfoVo> userInfoVos = new ArrayList<CardVo.UserInfoVo>();
|
|
String sql2 = " SELECT gc.PERSONNEL AS \"personnel\",gc.ID_PHOTO AS \"idPhoto\""
|
|
+ " FROM GREEN_CARD gc WHERE gc.DATA_ID = ? ";
|
|
userInfoVos = iHibernateDao.queryForListWithSql(sql2.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo.UserInfoVo>(CardVo.UserInfoVo.class));
|
|
// 处理人员照片
|
|
for (int i = 0; i < userInfoVos.size(); i++) {
|
|
UserInfoVo vo2 = userInfoVos.get(i);
|
|
String idPhoto = vo2.getIdPhoto();
|
|
if (StringUtils.isNotBlank(idPhoto)) { // 人脸照片
|
|
vo2.setIdPhoto(baseService.getImageBase64(idPhoto));
|
|
}
|
|
}
|
|
cardVo.setUserInfoVos(userInfoVos);
|
|
// 查询审核详情
|
|
List<AuditVo> auditVos = getAudits(vo);
|
|
cardVo.setAuditVos(auditVos);
|
|
}
|
|
return new RestResult(Constant.SUCCESS, "查询成功", cardVo);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 施工出入证详情
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getSgCardDetail(CardVo vo) {
|
|
try {
|
|
List<CardVo> dataList = new ArrayList<CardVo>();
|
|
CardVo cardVo = new CardVo();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = " SELECT MAX(gc.CARD_TYPE) AS \"cardType\",MAX(gc.TYPE_NAME) AS \"typeName\","
|
|
+ " MAX(gc.APPLY_TIME) AS \"applyTime\",MAX(gc.DATA_ID) AS \"dataId\","
|
|
+ " MAX(gc.EXAMINE_BATCH) AS \"examineBatch\",MAX(gc.EXAMINE_STATE) AS \"examineState\","
|
|
+ " MAX(gc.PRO_UNIT) AS \"proUnit\",MAX(gc.PRO_MANAGER) AS \"proManager\","
|
|
+ " MAX(gc.PRO_MANAGER_PHONE) AS \"proManagerPhone\",MAX(gc.XMGK_ORG_NAME) AS \"xmgkOrgName\","
|
|
+ " MAX(gc.JB_USER_NAME) AS \"jbUserName\",MAX(gc.JB_USER_PHONE) AS \"jbUserPhone\","
|
|
+ " MAX(gc.CONTRACT_START_TIME) AS \"contractStartTime\",MAX(gc.CONTRACT_END_TIME) AS \"contractEndTime\","
|
|
+ " MAX(gc.CARD_START_TIME) AS \"cardStartTime\",MAX(gc.CARD_END_TIME) AS \"cardEndTime\","
|
|
+ " MAX(gc.ACCESS_AREA) AS \"accessArea\",MAX(gc.CAR_NUM) AS \"carNum\",MAX(gc.TICKET_NO) AS \"ticketNo\","
|
|
+ " MAX(gc.WORK_CONTENT) AS \"workContent\",MAX(gc.OPER_TYPE) AS \"operType\","
|
|
+ " MAX(gc.CHECK_ID) AS \"checkId\",MAX(gc.CHECK_ROLE) AS \"checkRole\",MAX(gc.EXAMINE_PERSON_ID) AS \"checkUserId\","
|
|
+ " MAX(gc.USER_NAME) AS \"userName\""
|
|
+ " FROM GREEN_CARD gc WHERE gc.DATA_ID = ? GROUP BY gc.DATA_ID";
|
|
parameter.add(vo.getDataId());
|
|
dataList = iHibernateDao.queryForListWithSql(sql.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo>(CardVo.class));
|
|
if (CollectionUtils.isNotEmpty(dataList)) {
|
|
// 查询基本信息
|
|
cardVo = dataList.get(0);
|
|
// 查询人员信息
|
|
List<CardVo.UserInfoVo> userInfoVos = new ArrayList<CardVo.UserInfoVo>();
|
|
String sql2 = " SELECT gc.PERSONNEL AS \"personnel\",gc.ID_PHOTO AS \"idPhoto\","
|
|
+ " gc.ID_NUMBER AS \"idNumber\"" + " FROM GREEN_CARD gc WHERE gc.DATA_ID = ? ";
|
|
userInfoVos = iHibernateDao.queryForListWithSql(sql2.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo.UserInfoVo>(CardVo.UserInfoVo.class));
|
|
// 处理人员照片
|
|
for (int i = 0; i < userInfoVos.size(); i++) {
|
|
UserInfoVo vo2 = userInfoVos.get(i);
|
|
String idPhoto = vo2.getIdPhoto();
|
|
if (StringUtils.isNotBlank(idPhoto)) { // 人脸照片
|
|
vo2.setIdPhoto(baseService.getImageBase64(idPhoto));
|
|
}
|
|
}
|
|
cardVo.setUserInfoVos(userInfoVos);
|
|
// 查询审核详情
|
|
List<AuditVo> auditVos = getAudits(vo);
|
|
cardVo.setAuditVos(auditVos);
|
|
}
|
|
return new RestResult(Constant.SUCCESS, "查询成功", cardVo);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取区域列表
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public String getAreaData(CardVo vo) {
|
|
String areaSql = "SELECT cra.ACCESS_ID \"id\",gac.ACCESS_NAME AS \"name\"," + " gac.PARENT_ID AS \"parentId\", "
|
|
+ " gac2.ACCESS_NAME AS \"parentName\" " + " FROM CARD_RELA_ACCESS cra"
|
|
+ " INNER JOIN GREEN_ACCESS_CONTROL gac ON cra.ACCESS_ID = gac.ACCESS_ID AND gac.ACCESS_LEVEL = '2' AND gac.IS_DELETE = 'N' "
|
|
+ " INNER JOIN GREEN_ACCESS_CONTROL gac2 ON gac.PARENT_ID = gac2.ACCESS_ID AND gac2.ACCESS_LEVEL = '1' AND gac2.IS_DELETE = 'N' "
|
|
+ " WHERE cra.GREEN_CARD_ID = '" + vo.getDataId() + "' AND gac.IS_DELETE = 'N'";
|
|
List<Map<String, String>> areaList = iHibernateDao.queryForListWithSql(areaSql);
|
|
System.err.println("areaList:" + areaList.size());
|
|
if (areaList != null && areaList.size() > 0) {
|
|
String areaSql2 = "SELECT ACCESS_ID AS \"id\",ACCESS_NAME AS \"name\" FROM GREEN_ACCESS_CONTROL WHERE ACCESS_LEVEL = '1' AND IS_DELETE = 'N'";
|
|
List<Map<String, String>> areaList2 = iHibernateDao.queryForListWithSql(areaSql2);
|
|
// 处理出入区域数据
|
|
System.err.println("areaList2:" + areaList2.size());
|
|
String accessArea = this.setAreaData(areaList, areaList2);
|
|
return accessArea;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
/**
|
|
* 处理出入区域
|
|
*
|
|
* @param list
|
|
* @param list2
|
|
* @return
|
|
*/
|
|
public String setAreaData(List<Map<String, String>> list, List<Map<String, String>> list2) {
|
|
List<Map<String, Object>> returnList = new ArrayList<Map<String, Object>>();
|
|
try {
|
|
for (int i = 0; i < list2.size(); i++) {
|
|
String id = list2.get(i).get("id");
|
|
StringBuffer areaStr = new StringBuffer();
|
|
StringBuffer areaIdStr = new StringBuffer();
|
|
for (int j = 0; j < list.size(); j++) {
|
|
String parentId = list.get(j).get("parentId");
|
|
if (Objects.equals(id, parentId)) {
|
|
areaIdStr.append(list.get(j).get("id") + ",");
|
|
areaStr.append(list.get(j).get("name") + ",");
|
|
}
|
|
}
|
|
String area = areaStr.toString();
|
|
String areaId = areaIdStr.toString();
|
|
if (StringUtils.isNotBlank(areaId)) {
|
|
Map<String, Object> data = new HashMap<String, Object>();
|
|
data.put("address", list2.get(i).get("name"));
|
|
data.put("addressId", id);
|
|
data.put("area", area.substring(0, area.lastIndexOf(",")));
|
|
data.put("areaIds", areaId.substring(0, areaId.lastIndexOf(",")));
|
|
returnList.add(data);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
System.err.println("区域处理");
|
|
}
|
|
return JSON.toJSONString(returnList);
|
|
}
|
|
|
|
/**
|
|
* 查询审核详情
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
@SuppressWarnings("unchecked")
|
|
public List<CardVo.AuditVo> getAudits(CardVo vo) {
|
|
List<CardVo.AuditVo> dataList = new ArrayList<CardVo.AuditVo>();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
parameter.add(vo.getDataId());
|
|
String sql = " SELECT USER_NAME AS \"userName\",EXAMINE_STATE AS \"examineState\","
|
|
+ " EXAMINE_TIME AS \"examineTime\",EXAMINE_BATCH AS \"examineBatch\","
|
|
+ " BATCH_DESCRIPTION AS \"batchDescription\"" + " FROM GREEN_CARD_EXAMINE "
|
|
+ " WHERE DEL_FLAG = '0' and CARD_ID = ? ORDER BY EXAMINE_BATCH ASC";
|
|
dataList = iHibernateDao.queryForListWithSql(sql.toString(), parameter.toArray(),
|
|
new BeanPropertyRowMapper<CardVo.AuditVo>(CardVo.AuditVo.class));
|
|
return dataList;
|
|
}
|
|
|
|
/**
|
|
* 门禁卡办理记录
|
|
*
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getCardList(CardVo vo) {
|
|
try {
|
|
String sql = " SELECT * FROM (SELECT ROWNUM num,A.* FROM ( "
|
|
+ " SELECT * FROM (SELECT MAX(gc.DATA_ID) AS \"dataId\",MAX(gc.CARD_TYPE) AS \"carType\","
|
|
+ " MAX(gc.TYPE_NAME) AS \"typeName\",MAX(gc.APPLY_TIME) AS \"applyTime\","
|
|
+ " MAX(gc.EXAMINE_BATCH) AS \"examineBatch\",MAX(gc.EXAMINE_STATE) AS \"examineState\","
|
|
+ " MAX(CARD_STATUS) AS \"cardStatus\""
|
|
+ " FROM GREEN_CARD gc "
|
|
+ " WHERE gc.USER_ID = ? GROUP BY gc.DATA_ID) B ORDER BY B.\"applyTime\" DESC) " + " A WHERE ROWNUM<=?) WHERE num > ?";
|
|
System.err.println(sql);
|
|
Integer pageSize = vo.getPageSize();
|
|
Integer pageNum = vo.getPageNum();
|
|
Integer page = (pageNum - 1) * pageSize;
|
|
Integer limit = pageNum * pageSize;
|
|
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,
|
|
new Object[] { vo.getUserId(), limit, page });
|
|
return new RestResult(Constant.SUCCESS, "查询成功", list);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取部门
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getDeptList(CardVo vo) {
|
|
try {
|
|
String sql = " SELECT ID AS \"id\",NAME AS \"name\""
|
|
+ " FROM GREEN_DEPARTMENT WHERE IS_DELETED = 'N'";
|
|
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql);
|
|
return new RestResult(Constant.SUCCESS, "查询成功", list);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 根据部门查询部门下的人员
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getUserInfoByDept(CardVo vo) {
|
|
try {
|
|
String sql = " SELECT ID AS \"id\",REAL_NAME AS \"name\",MOBILE AS \"phone\""
|
|
+ " FROM GREEN_USER_INFO WHERE DEPARTMENT_ID = ? AND IS_DELETED = 'N' AND USERTYPE = '0'";
|
|
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,
|
|
new Object[] { vo.getXmgkOrgId()});
|
|
return new RestResult(Constant.SUCCESS, "查询成功", list);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 根据类型编码查询字典数据
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getDictByType(CardVo vo) {
|
|
try {
|
|
String sql = " SELECT ID AS \"id\",DESCRIPTION AS \"value\""
|
|
+ " FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = ? AND IS_DELETED = 'N'";
|
|
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,
|
|
new Object[] { vo.getType()});
|
|
return new RestResult(Constant.SUCCESS, "查询成功", list);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 办卡/办证-审核
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult auditData(CardVo vo) {
|
|
switch (vo.getCardType()) {
|
|
case "职工卡":
|
|
case "第三方人员":
|
|
return auditCard(vo);
|
|
case "VIP贵宾":
|
|
case "临时出入证":
|
|
case "施工出入证":
|
|
return auditCard2(vo);
|
|
default:
|
|
break;
|
|
}
|
|
return new RestResult(Constant.FAILED, "操作失败");
|
|
}
|
|
|
|
/**
|
|
* 职工卡-审批
|
|
* 第三方人员-审批
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public RestResult auditCard(CardVo vo) {
|
|
try {
|
|
// 职工卡的审批流程-申请人所在部门负责人审核->制卡经办人审核->制卡部门负责人审核->制卡经办人抄送
|
|
// 第三方人员的审批流程->项目归口管理部门负责人审核->制卡经办人审核->制卡部门负责人审核->项目归口管理部门分管领导审核->制卡经办人抄送
|
|
// 判断当前登录人是否具有审核权限
|
|
Boolean isHasAuditAuth = isHasAuditAuth(vo);
|
|
if(isHasAuditAuth){
|
|
return new RestResult(Constant.FAILED, "当前登录用户无审核权限");
|
|
}
|
|
// 判断是否重复审核
|
|
Boolean repeatAudit = isRepeatAudit(vo);
|
|
if(repeatAudit){
|
|
return new RestResult(Constant.FAILED, "请勿重复审核,刷新页面重试");
|
|
}
|
|
List<Map<String, String>> auditNodeList = getNextAuditNodeRole(vo);
|
|
vo.setDescription(auditNodeList.get(0).get("checkName"));
|
|
String examineBatch = vo.getExamineBatch();
|
|
String nextExamineBatch =String.valueOf(Integer.parseInt(examineBatch));
|
|
// check_operate -1.已无审核节点 0.无操作人员审核 1.代表制卡经办人审核 2.代表制卡经办人抄送
|
|
String checkOperate = auditNodeList.get(0).get("checkOperate");
|
|
String nextCheckOperate = auditNodeList.get(1).get("checkOperate");
|
|
// 添加审核记录
|
|
addExamineData(vo);
|
|
if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "0")
|
|
&& Objects.equals(nextCheckOperate, "0")){ // 无操作人员审核->无操作人员审核
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("0");
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "0")
|
|
&& Objects.equals(nextCheckOperate, "1")){ // 无操作人员审核->制卡经办人审核
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("0");
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "1")
|
|
&& Objects.equals(nextCheckOperate, "0")){ // 制卡经办人审核->无操作人员审核
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("0");
|
|
// 添加制卡经办人的ID
|
|
vo.setOperCardId(vo.getUserId());
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "0")
|
|
&& Objects.equals(nextCheckOperate, "2")){ // 无操作人员审核->制卡经办人抄送(默认审批流程已结束)
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("1");
|
|
List<Map<String, String>> sendUserInfos = getSendUserInfo(vo);
|
|
vo.setUserId(sendUserInfos.get(0).get("userId"));
|
|
vo.setUserId(sendUserInfos.get(0).get("userName"));
|
|
vo.setDescription(auditNodeList.get(1).get("checkName"));
|
|
// 添加抄送记录
|
|
addExamineData(vo);
|
|
// 发起抄送
|
|
pushInfo2(vo);
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "1")
|
|
&& Objects.equals(nextCheckOperate, "2")){ // 制卡经办人审核->制卡经办人抄送
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("1");
|
|
// 添加制卡经办人的ID
|
|
vo.setOperCardId(vo.getUserId());
|
|
List<Map<String, String>> sendUserInfos = getSendUserInfo(vo);
|
|
vo.setUserId(sendUserInfos.get(0).get("userId"));
|
|
vo.setUserId(sendUserInfos.get(0).get("userName"));
|
|
vo.setDescription(auditNodeList.get(1).get("checkName"));
|
|
// 添加抄送记录
|
|
addExamineData(vo);
|
|
// 发起抄送
|
|
pushInfo2(vo);
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "0")
|
|
&& Objects.equals(nextCheckOperate, "-1")){
|
|
// 无操作人员审核->已无审核节点(审批流程结束)
|
|
vo.setExamineState("1");
|
|
}
|
|
// 更新办卡/办证数据
|
|
updateCardAuditData(vo);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
// 手动回滚异常
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return new RestResult(Constant.FAILED, "操作失败");
|
|
}
|
|
return new RestResult(Constant.SUCCESS, "操作成功");
|
|
}
|
|
|
|
/**
|
|
* VIP贵宾-审批
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult auditCard2(CardVo vo) {
|
|
try {
|
|
// VIP贵宾的审批流程->经办部门负责人审核->制卡经办人审核->制卡部门负责人审核->制卡经办人填写归还时间及备注
|
|
// 临时出入证/施工出入证的审批流程->项目归口管理部门负责人审核->制卡经办人审核->制卡部门负责人审核->制卡经办人填写证件有效期
|
|
// 判断当前登录人是否具有审核权限
|
|
Boolean isHasAuditAuth = isHasAuditAuth(vo);
|
|
if(isHasAuditAuth){
|
|
return new RestResult(Constant.FAILED, "当前登录用户无审核权限");
|
|
}
|
|
Boolean repeatAudit = isRepeatAudit(vo);
|
|
if(repeatAudit){
|
|
return new RestResult(Constant.FAILED, "请勿重复审核,刷新页面重试");
|
|
}
|
|
if(Objects.equals(vo.getOperType(), "2") && Objects.equals(vo.getCardType(), "VIP贵宾")){
|
|
if(StringUtils.isEmpty(vo.getActualBackTime())){
|
|
return new RestResult(Constant.FAILED, "实际归还时间不能为空");
|
|
}
|
|
if(StringUtils.isEmpty(vo.getRemark())){
|
|
return new RestResult(Constant.FAILED, "备注不能为空");
|
|
}
|
|
}
|
|
if(Objects.equals(vo.getOperType(), "2") && (Objects.equals(vo.getCardType(), "临时出入证") || Objects.equals(vo.getCardType(), "施工出入证"))){
|
|
if(StringUtils.isEmpty(vo.getCardStartTime()) || StringUtils.isEmpty(vo.getCardEndTime())){
|
|
return new RestResult(Constant.FAILED, "证件有效期不能为空");
|
|
}
|
|
}
|
|
List<Map<String, String>> auditNodeList = getNextAuditNodeRole(vo);
|
|
vo.setDescription(auditNodeList.get(0).get("checkName"));
|
|
String examineBatch = vo.getExamineBatch();
|
|
String nextExamineBatch =String.valueOf(Integer.parseInt(examineBatch));
|
|
// check_operate -1.代表已无审核流程 0.无操作人员审核 1.代表制卡经办人审核 2.代表制卡经办人抄送
|
|
String checkOperate = auditNodeList.get(0).get("checkOperate");
|
|
String nextCheckOperate = auditNodeList.get(1).get("checkOperate");
|
|
// 添加审核记录
|
|
addExamineData(vo);
|
|
if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "0")
|
|
&& Objects.equals(nextCheckOperate, "0")){ // 无操作人员审核->无操作人员审核
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("0");
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "0")
|
|
&& Objects.equals(nextCheckOperate, "1")){ // 无操作人员审核->制卡经办人审核
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("0");
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "1")
|
|
&& Objects.equals(nextCheckOperate, "0")){ // 制卡经办人审核->无操作人员审核
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("0");
|
|
// 添加制卡经办人的ID
|
|
vo.setOperCardId(vo.getUserId());
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "0")
|
|
&& Objects.equals(nextCheckOperate, "2")){ // 无操作人员审核->制卡经办人填写数据
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("0");
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "1")
|
|
&& Objects.equals(nextCheckOperate, "2")){ // 制卡经办人审核->制卡经办人填写数据
|
|
vo.setExamineBatch(nextExamineBatch);
|
|
vo.setCheckRole(auditNodeList.get(1).get("checkRole"));
|
|
vo.setExamineState("1");
|
|
// 添加制卡经办人的ID
|
|
vo.setOperCardId(vo.getUserId());
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "2")
|
|
&& Objects.equals(nextCheckOperate, "-1")){ // 制卡经办人填写数据->已无审核节点(审批流程结束)
|
|
vo.setExamineState("1");
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "2")
|
|
&& Objects.equals(nextCheckOperate, "0")){ // 制卡经办人填写数据->无操作人员审核(默认审批流程结束)
|
|
vo.setExamineState("1");
|
|
}else if(Objects.equals(vo.getExamineState(), "1") && Objects.equals(checkOperate, "0")
|
|
&& Objects.equals(nextCheckOperate, "-1")){ // 无操作人员审核->已无审核节点(审批流程结束)
|
|
vo.setExamineState("1");
|
|
}
|
|
// 更新办卡/办证数据
|
|
updateCardAuditData(vo);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
// 手动回滚异常
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return new RestResult(Constant.FAILED, "操作失败");
|
|
}
|
|
return new RestResult(Constant.SUCCESS, "操作成功");
|
|
}
|
|
|
|
/**
|
|
* 判断当前用户是否具有审核权限
|
|
* @return
|
|
*/
|
|
public Boolean isHasAuditAuth(CardVo vo){
|
|
try {
|
|
if(Objects.equals(vo.getExamineBatch(), "1")){ // 第一批次审核已经指定了审核人-判断当前登录人和审核人是否一致
|
|
if(!Objects.equals(vo.getUserId(), vo.getCheckUserId())){
|
|
return true;
|
|
}
|
|
}else{
|
|
// 制卡经办人填写备注、证件有效期等操作
|
|
if(Objects.equals(vo.getOperType(), "2")){
|
|
if(!Objects.equals(vo.getUserId(), vo.getCheckUserId())){
|
|
return true;
|
|
}
|
|
}
|
|
// 其余审核批次指定角色
|
|
String sql = "SELECT COUNT(*) FROM GREEN_HOUSE_CHECK_ROLE "
|
|
+ " WHERE USER_ID = ? AND ROLE_ID = ?";
|
|
Integer result = iHibernateDao.queryForIntWithSql(sql,
|
|
new Object[] { vo.getUserId(),vo.getCheckRole()});
|
|
if(Objects.equals(result, 0)){
|
|
return true;
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 判断是否重审核
|
|
* @return
|
|
*/
|
|
public Boolean isRepeatAudit(CardVo vo){
|
|
Boolean isFlag = false;
|
|
try {
|
|
String sql = "SELECT COUNT(*) FROM GREEN_CARD WHERE DATA_ID = ? AND EXAMINE_BATCH > ?";
|
|
Integer result = iHibernateDao.queryForIntWithSql(sql,
|
|
new Object[] { vo.getDataId(),vo.getExamineBatch()});
|
|
if(result > 0){
|
|
isFlag = true;
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return isFlag;
|
|
}
|
|
|
|
/**
|
|
* 查询当前审批节点和下一审批节点
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public List<Map<String, String>> getNextAuditNodeRole(CardVo vo){
|
|
try {
|
|
String examineBatch = vo.getExamineBatch();
|
|
String nextExamineBatch = String.valueOf(Integer.parseInt(examineBatch) + 1);
|
|
String sql = "SELECT ghcd.CHECK_ROLE AS \"checkRole\",ghcd.CHECK_NAME AS \"checkName\","
|
|
+ " ghcd.CHECK_OPERATE AS \"checkOperate\",ghc.CHECK_NUM AS \"checkNum\" "
|
|
+ " FROM GREEN_HOUSE_CHECK_DETAILS ghcd"
|
|
+ " LEFT JOIN GREEN_HOUSE_CHECK ghc ON ghcd.CHECK_ID = ghc.CHECK_ID"
|
|
+ " WHERE ghcd.CHECK_ID = ? AND ghcd.CHECK_SORT IN (?,?) ORDER BY ghcd.CHECK_SORT";
|
|
List<Map<String, String>> list = iHibernateDao.queryForListWithSql(sql,
|
|
new Object[] { vo.getCheckId(),examineBatch,nextExamineBatch});
|
|
if(CollectionUtils.isNotEmpty(list) && list.size() == 1){
|
|
Map<String, String> map = new HashMap<String, String>();
|
|
map.put("checkOperate", "-1");
|
|
list.add(map);
|
|
}
|
|
return list;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* 添加审批节点数据
|
|
* @param vo
|
|
*/
|
|
public void addExamineData(CardVo vo){
|
|
String uuid = UUID.randomUUID().toString().replace("-", "");
|
|
String sql = "INSERT INTO GREEN_CARD_EXAMINE(ID,CARD_ID,USER_ID,USER_NAME,EXAMINE_STATE,EXAMINE_OPINION,"
|
|
+ "EXAMINE_TIME,DEL_FLAG,EXAMINE_BATCH,BATCH_DESCRIPTION) " + "VALUES(?,?,?,?,?,?,?,0,?,?) ";
|
|
iHibernateDao.executeSqlUpdate(sql,new Object[] { uuid, vo.getDataId(), vo.getUserId(), vo.getUserName(),
|
|
vo.getExamineState(), vo.getExamineOpinion(), DateTimeHelper.getNowDate(),
|
|
vo.getExamineBatch(), vo.getDescription() });
|
|
}
|
|
|
|
/**
|
|
* 更新办卡、办证的审批状态、审批节点、及其他数据
|
|
* @param vo
|
|
*/
|
|
public void updateCardAuditData(CardVo vo){
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = "UPDATE GREEN_CARD SET EXAMINE_BATCH = ?,EXAMINE_STATE = ?,CHECK_ROLE = ?";
|
|
parameter.add(vo.getExamineBatch());
|
|
parameter.add(vo.getExamineState());
|
|
parameter.add(vo.getCheckRole());
|
|
if(StringUtils.isNotBlank(vo.getActualBackTime())){ // 实际归还时间
|
|
parameter.add(vo.getActualBackTime());
|
|
sql += ",ACTUAL_BACK_TIME = ?";
|
|
}
|
|
if(StringUtils.isNotBlank(vo.getRemark())){ // 备注
|
|
parameter.add(vo.getRemark());
|
|
sql += ",REMARK = ?";
|
|
}
|
|
if(StringUtils.isNotBlank(vo.getCardStartTime())){ // 证件有效期开始时间
|
|
parameter.add(vo.getCardStartTime());
|
|
sql += ",CARD_START_TIME = ?";
|
|
}
|
|
if(StringUtils.isNotBlank(vo.getCardEndTime())){ // 证件有效期结束时间
|
|
parameter.add(vo.getCardEndTime());
|
|
sql += ",CARD_END_TIME = ?";
|
|
}
|
|
if(StringUtils.isNotBlank(vo.getOperCardId())){ // 制卡经办人
|
|
parameter.add(vo.getOperCardId());
|
|
sql += ",OPER_CARD_ID = ?";
|
|
}
|
|
sql += " WHERE DATA_ID = ?";
|
|
iHibernateDao.executeSqlUpdate(sql,parameter.toArray());
|
|
}
|
|
|
|
/**
|
|
* 获取抄送人信息
|
|
* @param vo
|
|
* @param examineBatch
|
|
* @return
|
|
*/
|
|
public List<Map<String, String>> getSendUserInfo(CardVo vo){
|
|
try {
|
|
String sql = "SELECT USER_ID AS \"userId\",USER_NAME AS \"userName\" "
|
|
+ " FROM GREEN_CARD_EXAMINE "
|
|
+ " WHERE CARD_ID = ? AND USER_ID = ?";
|
|
List<Map<String, String>> list = iHibernateDao.queryForListWithSql(sql,
|
|
new Object[] { vo.getDataId(),vo.getUserId()});
|
|
return list;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* 抄送制卡经办人
|
|
*
|
|
* @param vo
|
|
*/
|
|
public void pushInfo2(CardVo vo) {
|
|
String title = "" + vo.getCardType() + "审批通过";
|
|
String text = "您好," + vo.getCardType() + "申请审批已通过,请点击查看。";
|
|
String url = "/pages/access-card/card-record";
|
|
aliasManageController.pushToSingle(vo.getCheckUserId(), title, text, url);
|
|
}
|
|
|
|
|
|
/**
|
|
* 查询未审批和已审批的数据
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getAuditData(CardVo vo) {
|
|
switch (vo.getType()) {
|
|
case "0":
|
|
return getUnapprovedData(vo);
|
|
case "1":
|
|
return getApprovedData(vo);
|
|
default:
|
|
break;
|
|
}
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
|
|
}
|
|
|
|
/**
|
|
* 未审批数据
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getUnapprovedData(CardVo vo){
|
|
try {
|
|
// 获取当前登录人的角色
|
|
List<String> aduitRoles = new ArrayList<String>();
|
|
String userId = vo.getUserId();
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = " SELECT * FROM (SELECT ROWNUM num,A.* FROM ( "
|
|
+ " SELECT * FROM ("
|
|
+ " SELECT MAX(gc.DATA_ID) AS \"dataId\",MAX(gc.CARD_TYPE) AS \"carType\","
|
|
+ " MAX(gc.TYPE_NAME) AS \"typeName\",MAX(gc.APPLY_TIME) AS \"applyTime\","
|
|
+ " MAX(gc.EXAMINE_BATCH) AS \"examineBatch\",MAX(gc.EXAMINE_STATE) AS \"examineState\","
|
|
+ " MAX(gc.CARD_STATUS) AS \"cardStatus\",MAX(gc.USER_NAME) AS \"userName\""
|
|
+ " FROM GREEN_CARD gc "
|
|
+ " WHERE (gc.EXAMINE_BATCH = '1' AND gc.EXAMINE_STATE = '0' AND gc.EXAMINE_PERSON_ID = ?) OR"
|
|
+ " (gc.EXAMINE_BATCH != '1' AND gc.OPER_TYPE = '2' AND gc.EXAMINE_STATE = '0' AND gc.OPER_CARD_ID = ?) OR"
|
|
+ " (gc.EXAMINE_BATCH != '1' AND gc.OPER_TYPE IN ('0','1') AND gc.EXAMINE_STATE = '0' AND gc.CHECK_ROLE IN ("+handlePlaceholder(aduitRoles)+")) OR"
|
|
+ " GROUP BY gc.DATA_ID"
|
|
+ ") B ORDER BY B.\"applyTime\" DESC) " + " A WHERE ROWNUM <= ?) WHERE num > ?";
|
|
System.err.println(sql);
|
|
Integer pageSize = vo.getPageSize();
|
|
Integer pageNum = vo.getPageNum();
|
|
Integer page = (pageNum - 1) * pageSize;
|
|
Integer limit = pageNum * pageSize;
|
|
parameter.add(userId);
|
|
parameter.add(userId);
|
|
if(CollectionUtils.isEmpty(aduitRoles)){
|
|
parameter.add("-1");
|
|
}else{
|
|
for (int i = 0; i < aduitRoles.size(); i++) {
|
|
parameter.add(aduitRoles.get(i));
|
|
}
|
|
}
|
|
parameter.add(limit);
|
|
parameter.add(page);
|
|
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,parameter.toArray());
|
|
return new RestResult(Constant.SUCCESS, "查询成功", list);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 已审批数据
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getApprovedData(CardVo vo){
|
|
try {
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String userId = vo.getUserId();
|
|
String sql = " SELECT * FROM (SELECT ROWNUM num,A.* FROM ( "
|
|
+ " SELECT * FROM ("
|
|
+ " SELECT MAX(gc.DATA_ID) AS \"dataId\",MAX(gc.CARD_TYPE) AS \"carType\","
|
|
+ " MAX(gc.TYPE_NAME) AS \"typeName\",MAX(gc.APPLY_TIME) AS \"applyTime\","
|
|
+ " MAX(gc.EXAMINE_BATCH) AS \"examineBatch\",MAX(gc.EXAMINE_STATE) AS \"examineState\","
|
|
+ " MAX(gc.CARD_STATUS) AS \"cardStatus\",MAX(gc.USER_NAME) AS \"userName\""
|
|
+ " FROM GREEN_CARD_EXAMINE gce "
|
|
+ " LEFT JOIN GREEN_CARD gc ON gc.ID = gce.CARD_ID "
|
|
+ " WHERE gce.USER_ID = ?"
|
|
// + " (gc.CARD_TYPE IN ('VIP贵宾','临时出入证','施工出入证') AND gc.EXAMINE_BATCH IN ('1','2','3') AND gce.USER_ID = ? ) OR"
|
|
// + " (gc.CARD_TYPE IN ('VIP贵宾','临时出入证','施工出入证') AND gc.EXAMINE_BATCH = '4' AND gc.EXAMINE_STATE = '0' AND gce.USER_ID = '0' ) OR"
|
|
// + " (gc.CARD_TYPE IN ('VIP贵宾','临时出入证','施工出入证') AND gc.EXAMINE_BATCH = '4' AND gc.EXAMINE_STATE = '1' AND gce.USER_ID = ? )"
|
|
+ " GROUP BY gc.DATA_ID"
|
|
+ ") B ORDER BY B.\"applyTime\" DESC) " + " A WHERE ROWNUM <= ?) WHERE num > ?";
|
|
System.err.println(sql);
|
|
Integer pageSize = vo.getPageSize();
|
|
Integer pageNum = vo.getPageNum();
|
|
Integer page = (pageNum - 1) * pageSize;
|
|
Integer limit = pageNum * pageSize;
|
|
parameter.add(userId);
|
|
parameter.add(limit);
|
|
parameter.add(page);
|
|
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,
|
|
parameter.toArray());
|
|
return new RestResult(Constant.SUCCESS, "查询成功", list);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 查询当前登录人的审批角色 ROLE_TYPE为3是审批角色
|
|
* @return
|
|
*/
|
|
public List<String> getCurrentUserRole(CardVo vo){
|
|
List<String> dataList = new ArrayList<String>();
|
|
try {
|
|
String sql = "SELECT ghcr.USER_ID AS \"userId\",ghcr.ROLE_ID AS \"roleId\" "
|
|
+ " FROM GREEN_HOUSE_CHECK_ROLE ghcr"
|
|
+ " LEFT JOIN GREEN_ROLE gr ON ghcr.ROLE_ID = gr.ID AND gr.IS_DELETED = 'N'"
|
|
+ " WHERE ghcr.USER_ID = ? AND gr.IS_DELETED = 'N' AND gr.ROLE_TYPE = '3'";
|
|
List<Map<String, String>> list = iHibernateDao.queryForListWithSql(sql,
|
|
new Object[] { vo.getUserId()});
|
|
if(CollectionUtils.isNotEmpty(list)){
|
|
for (int i = 0; i < list.size(); i++) {
|
|
dataList.add(list.get(i).get("roleId"));
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return dataList;
|
|
}
|
|
|
|
/**
|
|
* 查询历史填写项目
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult getHistoryPros(CardVo vo) {
|
|
try {
|
|
String sql = "SELECT DISTINCT PRO_NAME AS \"proName\""
|
|
+ " FROM GREEN_CARD WHERE PRO_NAME IS NOT NULL";
|
|
List<Map<String, String>> list = iHibernateDao.queryForListWithSql(sql);
|
|
return new RestResult(Constant.SUCCESS, "查询成功", list);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return new RestResult(Constant.FAILED, "查询失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 查询当前登录人所在部门
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public List<Map<String, String>> getDeptByUser(CardVo vo) {
|
|
try {
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = "SELECT ID AS \"id\",DEPARTMENT_ID AS \"departmentId\""
|
|
+ " FROM GREEN_USER_INFO WHERE ID = ? AND IS_DELETED = 'N'";
|
|
parameter.add(vo.getUserId());
|
|
List<Map<String, String>> list = iHibernateDao.queryForListWithSql(sql,parameter.toArray());
|
|
return list;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 处理占位符
|
|
* @return
|
|
*/
|
|
public String handlePlaceholder(List<String> list){
|
|
if(CollectionUtils.isEmpty(list)){
|
|
return "?";
|
|
}
|
|
StringBuffer sb = new StringBuffer();
|
|
for (int i = 0; i < list.size(); i++) {
|
|
sb.append("?").append(",");
|
|
}
|
|
// 检查最后一个字符是否是逗号
|
|
if (sb.length() > 0 && sb.charAt(sb.length() - 1) == ',') {
|
|
// 移除最后一个字符
|
|
sb.deleteCharAt(sb.length() - 1);
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
/**
|
|
* 更新卡状态 2.制卡完成 3.已领卡
|
|
* @param vo
|
|
* @return
|
|
*/
|
|
public RestResult updateCardStatus(CardVo vo) {
|
|
try {
|
|
List<Object> parameter = new ArrayList<Object>();
|
|
String sql = "UPDATE GREEN_CARD SET CARD_STATUS = ? WHERE DATA_ID = ?";
|
|
parameter.add(vo.getCardStatus());
|
|
parameter.add(vo.getDataId());
|
|
iHibernateDao.executeSqlUpdate(sql,parameter.toArray());
|
|
return new RestResult(Constant.SUCCESS, "操作成功");
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
// 手动回滚异常
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return new RestResult(Constant.FAILED, "操作失败");
|
|
}
|
|
}
|
|
|
|
}
|