hz-zhhq-app-service/greenH5modul/.svn/pristine/c3/c3e6aeb476c7df0f11361e2d83a...

717 lines
31 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.jysoft.card.service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.apache.commons.collections.CollectionUtils;
import org.hibernate.util.StringHelper;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
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.visitor.util.ArtemisPost;
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.po.GreenAccessControl;
import com.nationalelectric.greenH5.po.GreenRentHouseApply;
import com.nationalelectric.greenH5.po.GreenVisitor;
import com.nationalelectric.greenH5.po.VisitorEventNotify;
import com.nationalelectric.greenH5.po.VisitorEventNotify.ParamsDTO.EventsDTO;
import com.nationalelectric.greenH5.po.VisitorEventNotify.ParamsDTO.EventsDTO.DataDTO;
import com.nationalelectric.greenH5.utils.Base64Utils;
import com.nationalelectric.greenH5.utils.DateTimeHelper;
import com.nationalelectric.greenH5.utils.DateUtil;
import com.sgcc.uap.persistence.IHibernateDao;
import com.sgcc.uap.utils.DateUtils;
import com.sgcc.uap.utils.StringUtils;
/**
* @author bonus
* @date 2023-06-12
* @功能 访客管理
*/
@Service
public class CardService {
@Autowired
private IHibernateDao iHibernateDao;
@Resource
private AliasManageController aliasManageController;
@Autowired
private BaseServiceImpl baseService;
/**
* 添加门禁卡
*
* @param entity
* 数据
* @return 响应数据
*/
@Transactional(rollbackFor = Exception.class)
public RestResult addCard(GreenCard entity) {
StringBuilder sqlString = new StringBuilder();
try {
// 新办卡-门禁卡校验
String sql = "SELECT COUNT(*) FROM GREEN_CARD WHERE PERSONNEL_PHONE = '"+entity.getPersonnelPhone()+"' AND TYPE_NAME = '"+entity.getTypeName()+"'"
+ " AND CARD_TYPE = '"+entity.getCardType()+"' AND TYPE = '1'";
// 新办卡 门卡类型 同一手机号只能限制办理一张
if(Objects.equals("新办卡", entity.getTypeName())){
// 1. 申请的门禁卡处于审批中
String checkSql = sql + " AND EXAMINE_STATE = '0'";
int result = iHibernateDao.queryForIntWithSql(checkSql);
if(result > 0){
return new RestResult(Constant.FAILED, "申请人申请的"+entity.getCardType()+"处于审核中");
}
// 2. 申请的门禁卡处于制卡完成状态(未领取)
String checkSql2 = sql + " AND CARD_STATUS = '2'";
int result2 = iHibernateDao.queryForIntWithSql(checkSql2);
if(result2 > 0){
return new RestResult(Constant.FAILED, "申请人申请的"+entity.getCardType()+"已制卡完成,未领取");
}
// 3. 申请的门禁卡已领取
String checkSql3 = sql + " AND CARD_STATUS = '3'";
int result3 = iHibernateDao.queryForIntWithSql(checkSql3);
if(result3 > 0){
return new RestResult(Constant.FAILED, "申请人申请的"+entity.getCardType()+"已存在");
}
/*// 4. 门禁卡已挂失
String checkSql4 = sql + " AND CARD_STATUS = '4'";
int result4 = iHibernateDao.queryForIntWithSql(checkSql4);
if(result4 > 0){
return new RestResult(Constant.FAILED, "申请人申请的"+entity.getCardType()+"已挂失,后续操作,请在补办卡/卡挂失中进行办理");
}*/
}
String batchSql = "SELECT * FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = 'cardExamSwitch' AND IS_DELETED = 'N' AND DATA_VALUE = 1 ORDER BY DATA_CODE ASC ";
List<Map<String, String>> list = iHibernateDao.queryForListWithSql(batchSql);
String examineBatch = "0";
if (list.size() > 0) {
examineBatch = list.get(0).get("DATA_CODE");
}
if (StringUtils.isBlank(entity.getExaminePersonId())) {
return new RestResult(Constant.FAILED, "请选择审核人");
}
if(Objects.equals("新办证", entity.getTypeName()) && StringUtils.isNotBlank(entity.getAccessArea())){
String accessArea = entity.getAccessArea();
if(accessArea.contains("后勤中心")){
entity.setAccessArea(accessArea.replace("后勤中心", "后勤楼"));
}
}
sqlString.append(
"INSERT INTO GREEN_CARD (ID, USER_ID, USER_NAME, PHONE, ORG_ID, ORG_NAME, TYPE, UNIT, PERSONNEL, PERSONNEL_PHONE, MATTER, ACCESS_AREA, START_TIME, END_TIME, APPLY_TIME, EXAMINE_BATCH, EXAMINE_STATE, EXAMINE_PERSON_ID, EXAMINE_PERSON_NAME,CARD_CODE,CARD_TYPE ,TYPE_NAME,PHOTO,ID_PHOTO,IS_ENABLE_FACE,CARD_STATUS) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?,?,?,?,?,?)");
String uuid = UUID.randomUUID().toString().replace("-", "");
iHibernateDao.executeSqlUpdate(sqlString.toString(),
new Object[] { uuid, entity.getUserId(), entity.getUserName(), entity.getPhone(), entity.getOrgId(),
entity.getOrgName(), entity.getType(), entity.getUnit(), entity.getPersonnel(),
entity.getPersonnelPhone(), entity.getMatter(), entity.getAccessArea(),
entity.getStartTime(), entity.getEndTime(), DateTimeHelper.getNowDate(), examineBatch, "0",
entity.getExaminePersonId(), entity.getExaminePersonName(), entity.getCardCode(),
entity.getCardType(), entity.getTypeName(), entity.getPhoto(), entity.getIdPhoto(),entity.getIsEnableFace(),"0"});
System.err.println("新办卡类型:"+entity.getTypeName());
// 出入区域
if(Objects.equals("新办卡", entity.getTypeName()) && StringUtils.isNotBlank(entity.getAccessArea())){
String[] areaIdsArr = entity.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[] { uuid, areaId});
}
}
String title = ""+entity.getTypeName()+"申请";
String text = "您好,您有新的"+entity.getTypeName()+"申请需要审批,请点击查看。";
String url = "/pages/access-card/card-record?examineBatch=" + examineBatch;
aliasManageController.pushToSingle(entity.getExaminePersonId(), title, text, url);
return new RestResult(Constant.SUCCESS, "添加成功");
} catch (Exception e) {
e.printStackTrace();
// 手动回滚异常
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "添加失败");
}
}
/**
* 通过id获取来访记录
*
* @param entity
* 数据
* @return 响应数据
*/
public RestResult getCard(GreenCard entity) {
try {
System.err.println("门禁卡详情");
List<Object> params = new ArrayList<Object>();
String sql = "SELECT * FROM GREEN_CARD WHERE ID = ? ORDER BY APPLY_TIME desc ";
params.add(entity.getId());
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql, params.toArray());
if (list.size() > 0) {
String id = String.valueOf(list.get(0).get("ID"));
String pictureString = list.get(0).get("PHOTO") == null ? "" : list.get(0).get("PHOTO").toString();
String idPhoto = list.get(0).get("ID_PHOTO") == null ? "" : list.get(0).get("ID_PHOTO").toString();
String[] strs = idPhoto.split(",");
String photo = "";
for (String string : strs) {
photo += baseService.getImageBase64(string)+ ",";
}
photo = photo.substring(0, photo.lastIndexOf(","));
list.get(0).put("PHOTO", baseService.getImageBase64(pictureString));
list.get(0).put("ID_PHOTO", photo);
System.err.println("人脸照片:" + baseService.getImageBase64(pictureString));
System.err.println("身份证照片:" + photo);
System.err.println("-------------------------");
// 获取审核详情
String sqls = "SELECT * from GREEN_CARD_EXAMINE where DEL_FLAG = 0 and CARD_ID = ? order by EXAMINE_BATCH asc ";
List<Map<String, String>> lists = iHibernateDao.queryForListWithSql(sqls,
new Object[] { list.get(0).get("ID").toString() });
if (lists.size() > 0) {
list.get(0).put("detail", lists.toArray());
}
if(Objects.equals("新办卡", String.valueOf(list.get(0).get("TYPE_NAME")))
|| Objects.equals("补办卡", String.valueOf(list.get(0).get("TYPE_NAME")))){
System.err.println("我进出入区域了");
// 出入区域
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 = '"+id+"' 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);
list.get(0).put("ACCESS_AREA", accessArea);
}
}
}
return new RestResult(Constant.SUCCESS, "查询成功", list);
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* @MethodName: setAreaData
* @Description: 出入区域处理
* @author cwchen
* @param list
* @return String
* @date 2024-05-14 03:40:48
*/
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)){
// GreenAccessControl vo = new GreenAccessControl();
Map<String,Object> data = new HashMap<String,Object>();
// vo.setAddress(list2.get(i).get("name"));
data.put("address", list2.get(i).get("name"));
// vo.setAddressId(id);
data.put("addressId", id);
// vo.setArea(area.substring(0,area.lastIndexOf(",")));
data.put("area", area.substring(0,area.lastIndexOf(",")));
// vo.setAreaIds(areaId.substring(0,areaId.lastIndexOf(",")));
data.put("areaIds", areaId.substring(0,areaId.lastIndexOf(",")));
// System.err.println(vo);
System.err.println("hhhh");
returnList.add(data);
System.err.println("集合数量"+returnList.size());
}
}
} catch (Exception e) {
e.printStackTrace();
System.err.println("区域处理");
}
return JSON.toJSONString(returnList);
}
/**
* 修改门禁信息状态
*
* @param entity
* 数据
* @return 响应数据
*/
public RestResult updateCard(GreenCard entity) {
try {
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
if (StringUtils.isBlank(entity.getExamineState())) {
return new RestResult(Constant.FAILED, "审核状态不能为空");
}
if (StringUtils.isBlank(entity.getExamineBatch())) {
return new RestResult(Constant.FAILED, "审核批次不能为空");
}
// 查询下一审核批次
String batchSql = "SELECT * FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = 'cardExamSwitch' "
+ "AND IS_DELETED = 'N' AND DATA_VALUE = 1 AND DATA_CODE > ? ORDER BY DATA_CODE ASC ";
List<Map<String, String>> list = iHibernateDao.queryForListWithSql(batchSql,
new Object[] { entity.getExamineBatch() });
// 更新所要补卡的注销状态
String carTypeSql = "SELECT ID,LAST_CARD_ID FROM GREEN_CARD WHERE ID = '"+entity.getId()+"' ";
List<Map<String, String>> carTypeList = iHibernateDao.queryForListWithSql(carTypeSql);
// 不为空则更改审核批次,否则更改申请单的审核状态
if (list.size() > 0) {
if ("1".equals(entity.getExamineState())) {
String lastExamineBatch = list.get(0).get("DATA_CODE");
// 后勤领导审批通过后,卡状态为待制卡状态
String cardStatusString = "0";
if(Objects.equals("2", entity.getExamineBatch())){
cardStatusString = "1";
}
String updateBatchSql = "UPDATE GREEN_CARD SET EXAMINE_BATCH = ?,CARD_STATUS = ? WHERE ID = ? ";
iHibernateDao.executeSqlUpdate(updateBatchSql, new Object[] { lastExamineBatch,cardStatusString, entity.getId() });
} else if ("2".equals(entity.getExamineState())) {
String updateStateSql = "UPDATE GREEN_CARD SET EXAMINE_STATE = ? WHERE ID = ? ";
iHibernateDao.executeSqlUpdate(updateStateSql,
new Object[] { entity.getExamineState(), entity.getId() });
/*// 补办卡被审批不通过时 重置补办卡状态
if(CollectionUtils.isNotEmpty(carTypeList)){
Map<String, String> mapData = carTypeList.get(0);
String lastCardIdString = mapData.get("LAST_CARD_ID");
if(org.apache.commons.lang3.StringUtils.isNotBlank(lastCardIdString)){
String reissueCardSql = "UPDATE GREEN_CARD SET IS_LOG_OFF = NULL WHERE ID = '"+lastCardIdString+"' ";
iHibernateDao.executeSqlUpdate(reissueCardSql);
}
}*/
}
} else {
String updateStateSql = "UPDATE GREEN_CARD SET EXAMINE_STATE = ?,CARD_STATUS = ? WHERE ID = ? ";
iHibernateDao.executeSqlUpdate(updateStateSql,
new Object[] { entity.getExamineState(),"2", entity.getId() });
// 补办卡制卡完成时 更新补办卡状态
if(CollectionUtils.isNotEmpty(carTypeList)){
Map<String, String> mapData = carTypeList.get(0);
String lastCardIdString = mapData.get("LAST_CARD_ID");
if(org.apache.commons.lang3.StringUtils.isNotBlank(lastCardIdString)){
String reissueCardSql = "UPDATE GREEN_CARD SET IS_LOG_OFF = '1' WHERE ID = '"+lastCardIdString+"' ";
iHibernateDao.executeSqlUpdate(reissueCardSql);
}
}
}
// 查询当前批次描述
String description = "";
String sqls = "SELECT DATA_CODE as \"id\",DATA_VALUE as \"name\",DESCRIPTION as \"description\" FROM GREEN_DICTIONARY_INFO "
+ "WHERE DATA_TYPE = 'cardExamSwitch' AND IS_DELETED = 'N' and DATA_CODE = ? ";
List<Map<String, String>> lists = iHibernateDao.queryForListWithSql(sqls,
new Object[] { entity.getExamineBatch() });
if (lists.size() > 0) {
description = lists.get(0).get("description");
}
// 插入数据
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, entity.getId(), entity.getUserId(), entity.getUserName(),
entity.getExamineState(), entity.getExamineOpinion(), DateTimeHelper.getNowDate(),
entity.getExamineBatch(), description });
return new RestResult(Constant.SUCCESS, "操作成功");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "操作失败");
}
}
/**
* 审核记录
*
* @param entity
* 数据
* @return 响应数据
*/
public RestResult getCardByUserId(GreenCard entity) {
try {
ArrayList<Object> paramList = new ArrayList<Object>();
int pageSize = entity.getPageSize();
int pageNum = entity.getPageNum();
int page = (pageNum - 1) * pageSize;
int limit = pageNum * pageSize;
if (StringUtils.isBlank(entity.getExamineState())) {
return new RestResult(Constant.FAILED, "审核状态不能为空");
}
if (StringUtils.isBlank(entity.getExamineBatch())) {
return new RestResult(Constant.FAILED, "审核批次不能为空");
}
if ("0".equals(entity.getExamineState())) {
String sqlState = "select count(*) from GREEN_DICTIONARY_INFO where data_type = 'cardExamSwitch' and data_code in (?) and data_value = 1 ";
int count = iHibernateDao.queryForIntWithSql(sqlState, new Object[] { entity.getExamineBatch() });
if (count == 0) {
return new RestResult(Constant.SUCCESS, "操作成功", new ArrayList<Map<String, String>>());
}
}
String sql = "select * from (select rn.*,rownum rn from ( " + " SELECT DISTINCT A.*" + " FROM GREEN_CARD A "
+ " LEFT JOIN (select * from GREEN_CARD_EXAMINE where EXAMINE_BATCH in (?) and DEL_FLAG=0) E ON A.ID = E.CARD_ID "
+ " WHERE 1=1 ";
paramList.add(entity.getExamineBatch());
// 当查询审核批次为1时只查询审核人为当前userid的数据
if ("1".equals(entity.getExamineBatch())) {
sql += "AND A.EXAMINE_PERSON_ID = ? ";
paramList.add(entity.getUserId());
}
if ("1".equals(entity.getExamineState())) {// 已审核
sql += "and e.ID is not NULL ";
} else if ("0".equals(entity.getExamineState())) {// 待审核
sql += "AND A.EXAMINE_STATE = 0 AND A.EXAMINE_BATCH in (?) ";
paramList.add(entity.getExamineBatch());
}
sql += " ORDER BY A.APPLY_TIME DESC " + " ) rn )where rn>? and rn<=? ";
paramList.add(page);
paramList.add(limit);
System.err.println(sql);
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql, paramList.toArray());
for (Map<String, Object> map : list) {
String pictureString = map.get("PHOTO") == null ? "" : map.get("PHOTO").toString();
String idPhoto = map.get("ID_PHOTO") == null ? "" : map.get("ID_PHOTO").toString();
String[] strs = idPhoto.split(",");
String photo = "";
for (String string : strs) {
photo += baseService.getImageBase64(string)+ ",";
}
photo = photo.substring(0, photo.lastIndexOf(","));
list.get(0).put("PHOTO", baseService.getImageBase64(pictureString));
list.get(0).put("ID_PHOTO", photo);
}
return new RestResult(Constant.SUCCESS, "查询成功", list);
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* 获取个人发出的申请门禁记录
*
* @param entity
* 数据
* @return 响应数据
*/
public RestResult getIssueCardByUserId(GreenCard entity) {
String sql = "SELECT * FROM (SELECT ROWNUM num,A.* FROM (SELECT gc.* FROM GREEN_CARD gc WHERE gc.USER_ID =? ORDER BY gc.APPLY_TIME DESC ) A WHERE ROWNUM<=?) WHERE num > ? ";
try {
int pageSize = entity.getPageSize();
int pageNum = entity.getPageNum();
int page = (pageNum - 1) * pageSize;
int limit = pageNum * pageSize;
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,
new Object[] { entity.getUserId(), limit, page });
/*String pictureString = list.get(0).get("PHOTO") == null ? "" : list.get(0).get("PHOTO").toString();
String idPhoto = list.get(0).get("ID_PHOTO") == null ? "" : list.get(0).get("ID_PHOTO").toString();
String[] strs = idPhoto.split(",");
String photo = "";
for (String string : strs) {
photo += baseService.getImageBase64(string)+ ",";
}
photo = photo.substring(0, photo.lastIndexOf(","));
list.get(0).put("PHOTO", baseService.getImageBase64(pictureString));
list.get(0).put("ID_PHOTO", photo);*/
return new RestResult(Constant.SUCCESS, "查询成功", list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* 查询出行报备部门拥有审核权限人员
*
* @param map
* @return
*/
public RestResult getDeptExamineAuth(GreenCard entity) {
try {
String depts[] = entity.getDepartmentId().split("/");
String dept = "";
for (String string : depts) {
dept = dept + string + "/";
}
int lastIndex = dept.lastIndexOf("/");
dept = dept.substring(0, lastIndex);
String sql = "SELECT u.id as \"id\",u.REAL_NAME as \"name\" from GREEN_USER_INFO u "
+ "LEFT JOIN GREEN_USER_ROLE_REL urr ON u.ID = urr.USER_ID AND u.IS_DELETED = 'N' "
+ "LEFT JOIN GREEN_ROLE_PERMISSION rp ON urr.ROLE_ID = rp.ROLE_ID AND urr.IS_DELETED = 'N' "
+ "WHERE u.DEPt_ID_url like '%" + dept + "%' AND rp.PERMISSION_ID = '15102' "; // 生产:43418 开发15102
System.err.println(sql);
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 entity
* 数据
* @return 响应数据
*/
public RestResult getCardType(GreenCard entity) {
String sql = "SELECT * FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE ='cardType' AND DATA_CODE = ?";
try {
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,new Object[] { entity.getType()});
return new RestResult(Constant.SUCCESS, "查询成功", list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* @MethodName: getAccessControlList
* @Description: 门禁卡办理-出入区域
* @author cwchen
* @param entity
* @return RestResult
* @date 2024-05-13 04:41:59
*/
public RestResult getAccessControlList(GreenCard entity) {
try {
String sql = "SELECT ACCESS_ID AS \"ACCESSID\",ACCESS_NAME AS \"ACCESSNAME\" FROM GREEN_ACCESS_CONTROL WHERE ACCESS_LEVEL ='1' AND IS_DELETE = 'N' ORDER BY CREATE_TIME ASC";
System.err.println(sql);
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql);
if(CollectionUtils.isNotEmpty(list)){
for (int i = 0; i < list.size(); i++) {
String accessId = String.valueOf(list.get(i).get("accessId"));
String sql2 = "SELECT ACCESS_ID AS \"ACCESSID\",ACCESS_NAME AS \"ACCESSNAME\" FROM GREEN_ACCESS_CONTROL WHERE PARENT_ID = '"+accessId+"' AND ACCESS_LEVEL ='2' AND IS_DELETE = 'N' ORDER BY CREATE_TIME ASC";
System.err.println(sql2);
List<Map<String, Object>> childList = iHibernateDao.queryForListWithSql(sql2);
list.get(i).put("areaList", childList);
}
}
return new RestResult(Constant.SUCCESS, "查询成功", list);
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* @MethodName: updateCardStatusById
* @Description: 申请人更新领卡状态
* @author cwchen
* @param entity
* @return RestResult
* @date 2024-05-15 09:56:08
*/
@Transactional(rollbackFor = Exception.class)
public RestResult updateCardStatusById(GreenCard entity) {
try {
// cardStatus:3 领卡 4.挂失
if(Objects.equals("3", entity.getCardStatus())){
String sql = "UPDATE GREEN_CARD SET CARD_STATUS = '"+entity.getCardStatus()+"' WHERE ID = '"+entity.getId()+"'";
iHibernateDao.executeSqlUpdate(sql);
}else if(Objects.equals("4", entity.getCardStatus())){
String sql = "SELECT * FROM GREEN_GUARD_CARD WHERE UUID='"+entity.getId()+"' AND CARD_STATE = '1'";
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql);
if(CollectionUtils.isNotEmpty(list)){
// 添加挂失卡数据
Map<String, Object> dataMap = list.get(0);
StringBuilder addSql = new StringBuilder();
addSql.append(
"INSERT INTO GREEN_GUARD_LOSS_CARD (UUID, CARD_ID, STAFF_ID, STAFF_NO, NAME, PHONE_NUM, ORG_NAME, CARD_TYPE, CARD_NAME, CARD_ETIME, CARD_STATE, FACE_PHOTO, IS_PUSH) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
iHibernateDao.executeSqlUpdate(addSql.toString(),
new Object[] { dataMap.get("UUID"),dataMap.get("CARD_ID"),dataMap.get("STAFF_ID"),dataMap.get("STAFF_NO"),dataMap.get("NAME"),dataMap.get("PHONE_NUM"),
dataMap.get("ORG_NAME"),dataMap.get("CARD_TYPE"),dataMap.get("CARD_NAME"),dataMap.get("CARD_ETIME"),dataMap.get("CARD_STATE"),null,
"0"});
// 添加补办卡门禁点位
String sql2 = "SELECT * FROM GREEN_MJ_ROLE WHERE CARD_ID='"+entity.getId()+"'";
List<Map<String, Object>> list2 = iHibernateDao.queryForListWithSql(sql2);
if(CollectionUtils.isNotEmpty(list2)){
for (int i = 0; i < list2.size(); i++) {
StringBuilder addSql2 = new StringBuilder();
addSql2.append(
"INSERT INTO GREEN_MJ_ROLE_LOSS (CARD_ID, DEVICE_ID) VALUES (?, ?)");
iHibernateDao.executeSqlUpdate(addSql2.toString(),
new Object[] { list.get(0).get("UUID"),list2.get(i).get("DEVICE_ID")});
}
}
// 更新门禁卡与用户关联的卡状态
String updateSql = "UPDATE GREEN_GUARD_CARD_REAL_USER SET IS_LOSS = '1' WHERE CARD_ID = '"+entity.getId()+"'";
iHibernateDao.executeSqlUpdate(updateSql);
// 更新门禁卡状态为挂失
String updateSql2 = "UPDATE GREEN_GUARD_CARD SET CARD_STATE = '2' WHERE UUID = '"+entity.getId()+"'";
iHibernateDao.executeSqlUpdate(updateSql2);
}
}
return new RestResult(Constant.SUCCESS, "操作成功");
} catch (Exception e) {
e.printStackTrace();
// 手动回滚异常
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "操作失败");
}
}
/**
* @MethodName: getAllCardList
* @Description: 查询卡挂失-列表
* @author cwchen
* @param entity
* @return RestResult
* @date 2024-05-15 11:00:40
*/
public RestResult getAllCardList(GreenCard entity) {
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
try {
// 正常卡
String sql = "SELECT ggc.UUID AS \"id\",ggc.STAFF_NO AS \"staffNo\",ggc.NAME AS \"name\",ggc.CARD_NAME AS \"cardName\",ggc.ORG_NAME AS \"orgName\",'正常' AS \"state\",'-1' AS \"status\",ggc.PHONE_NUM AS \"phone\""
+ " FROM GREEN_GUARD_CARD_REAL_USER ggcru"
+ " LEFT JOIN GREEN_GUARD_CARD ggc ON ggcru.CARD_ID = ggc.UUID AND ggc.CARD_STATE = '1'"
+ " WHERE ggcru.USER_ID = '"+entity.getUserId()+"' AND ggcru.IS_LOSS = '0'";
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql);
// 挂失卡
String sql2 = "SELECT gglc.UUID AS \"id\",gglc.STAFF_NO AS \"staffNo\",gglc.NAME AS \"name\",gglc.CARD_NAME AS \"cardName\",gglc.ORG_NAME AS \"orgName\",CASE gglc.IS_PUSH WHEN '0' THEN '挂失中' WHEN '1' THEN '挂失同步中' WHEN '2' THEN '已挂失' END AS \"state\",gc.CARD_STATUS AS \"status\",gglc.PHONE_NUM AS \"phone\""
+ " FROM GREEN_GUARD_CARD_REAL_USER ggcru"
+ " LEFT JOIN GREEN_GUARD_LOSS_CARD gglc ON ggcru.CARD_ID = gglc.UUID"
+ " LEFT JOIN GREEN_CARD gc ON gglc.UUID = gc.LAST_CARD_ID AND gc.EXAMINE_STATE !='2'"
+ " WHERE ggcru.USER_ID = '"+entity.getUserId()+"' AND ggcru.IS_LOSS = '1'";
List<Map<String, Object>> list2 = iHibernateDao.queryForListWithSql(sql2);
if(CollectionUtils.isNotEmpty(list)){
dataList.addAll(list);
}
if(CollectionUtils.isNotEmpty(list2)){
dataList.addAll(list2);
}
return new RestResult(Constant.SUCCESS, "查询成功", dataList);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* @MethodName: reissueCard
* @Description: 补办卡
* @author cwchen
* @param entity
* @return RestResult
* @date 2024-05-15 04:26:42
*/
public RestResult reissueCard(GreenCard entity) {
StringBuilder sqlString = new StringBuilder();
try {
String reissueSql = "SELECT * FROM GREEN_GUARD_LOSS_CARD WHERE UUID = '"+entity.getId()+"'";
List<Map<String, String>> reissueList = iHibernateDao.queryForListWithSql(reissueSql);
if(CollectionUtils.isEmpty(reissueList)){
return new RestResult(Constant.FAILED, "未匹配到补办卡数据");
}
Map<String, String> dataMap = reissueList.get(0);
String batchSql = "SELECT * FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = 'cardExamSwitch' AND IS_DELETED = 'N' AND DATA_VALUE = 1 ORDER BY DATA_CODE ASC ";
List<Map<String, String>> list = iHibernateDao.queryForListWithSql(batchSql);
String examineBatch = "0";
if (list.size() > 0) {
examineBatch = list.get(0).get("DATA_CODE");
}
if (StringUtils.isBlank(entity.getExaminePersonId())) {
return new RestResult(Constant.FAILED, "请选择审核人");
}
// 补办卡是否开通人脸权限
String isEnableFace = "0";
String facePhoto = dataMap.get("FACE_PHOTO");
if(StringUtils.isNotBlank(facePhoto)){
isEnableFace = "1";
}
// 补办人手机号
/*String phoneNum = dataMap.get("PHONE_NUM");
String phone = null;
if(StringUtils.isNotBlank(phoneNum) && !Objects.equals("null", phoneNum)){
phone = phoneNum;
}*/
sqlString.append(
"INSERT INTO GREEN_CARD (ID, USER_ID, USER_NAME, PHONE, ORG_ID, ORG_NAME, TYPE, UNIT, PERSONNEL, PERSONNEL_PHONE, MATTER, ACCESS_AREA, START_TIME, END_TIME, APPLY_TIME, EXAMINE_BATCH, EXAMINE_STATE, EXAMINE_PERSON_ID, EXAMINE_PERSON_NAME,CARD_CODE,CARD_TYPE ,TYPE_NAME,PHOTO,ID_PHOTO,IS_ENABLE_FACE,IS_REISSUE,LAST_CARD_ID,CARD_STATUS) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?,?,?,?,?,?,?,?)");
String uuid = UUID.randomUUID().toString().replace("-", "");
iHibernateDao.executeSqlUpdate(sqlString.toString(),
new Object[] { uuid, entity.getUserId(), entity.getUserName(), entity.getPhone(), entity.getOrgId(),
entity.getOrgName(), entity.getType(), dataMap.get("ORG_NAME"), dataMap.get("NAME"),
entity.getPersonnelPhone(), "补办卡", null,
null, null, DateTimeHelper.getNowDate(), examineBatch, "0",
entity.getExaminePersonId(), entity.getExaminePersonName(), null,
dataMap.get("CARD_NAME"), entity.getTypeName(), dataMap.get("FACE_PHOTO"), null,isEnableFace,"1",entity.getId(),"0"});
// 出入区域
String areaSql = "SELECT * FROM GREEN_MJ_ROLE_LOSS WHERE CARD_ID = '"+entity.getId()+"'";
List<Map<String, String>> areaList = iHibernateDao.queryForListWithSql(areaSql);
if(CollectionUtils.isNotEmpty(areaList)){
for (int i = 0; i < areaList.size(); i++) {
String sqlStr= "INSERT INTO CARD_RELA_ACCESS (GREEN_CARD_ID, ACCESS_ID) VALUES (?, ?)";
iHibernateDao.executeSqlUpdate(sqlStr,
new Object[] { uuid, areaList.get(i).get("DEVICE_ID")});
}
}
String title = "补办卡申请";
String text = "您好,您有新的补办卡申请需要审批,请点击查看。";
String url = "/pages/access-card/card-record?examineBatch=" + examineBatch;
aliasManageController.pushToSingle(entity.getExaminePersonId(), title, text, url);
return new RestResult(Constant.SUCCESS, "添加成功");
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
// 手动回滚异常
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "添加失败");
}
}
}