hz-zhhq-app-service/greenH5modul/.svn/pristine/25/25382c7618f93ea8b11f21bc2dd...

887 lines
40 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;
import oracle.jdbc.logging.annotations.StringBlinder;
/**
* @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 ID,DATA_TYPE,DATA_CODE,DATA_VALUE 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,DOCUMENTATION) 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", entity.getDocumentation() });
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 documentation = list.get(0).get("DOCUMENTATION") == null ? ""
: list.get(0).get("DOCUMENTATION").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);
list.get(0).put("DOCUMENTATION", baseService.getImageBase64(documentation));
System.err.println("人脸照片:" + baseService.getImageBase64(pictureString));
System.err.println("证明文件:" + baseService.getImageBase64(documentation));
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 ID,DATA_TYPE,DATA_CODE,DATA_VALUE 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 documentation = map.get("DOCUMENTATION") == null ? "" : map.get("DOCUMENTATION").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("DOCUMENTATION", baseService.getImageBase64(documentation));
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 = '43418' "; // 生产: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 ID,DATA_TYPE ,DATA_CODE,DATA_VALUE,DESCRIPTION,DATA_SORT,CREATOR,MODIFIER,IS_DELETED "
+ "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
*/
@SuppressWarnings("unchecked")
public RestResult getAllCardList(GreenCard entity) {
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
try {
String sql = "SELECT ggc.UUID AS \"id\",ggc.CARD_ID AS \"staffNo\",ggc.NAME AS \"name\",ggc.CARD_NAME AS \"cardName\",ggc.ORG_NAME AS \"orgName\",ggc.PHONE_NUM AS \"phone\",IS_LOSS AS \"isLoss\""
+ " FROM GREEN_GUARD_CARD_REAL_USER ggcru"
+ " LEFT JOIN GREEN_GUARD_CARD ggc ON ggcru.CARD_ID = ggc.UUID"
+ " WHERE ggcru.USER_ID = ? ORDER BY IS_LOSS ASC";
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,
new Object[] { entity.getUserId() });
if (CollectionUtils.isNotEmpty(list)) {
dataList.addAll(list);
}
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 ID,DATA_TYPE,DATA_CODE,DATA_VALUE 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, "添加失败");
}
}
/**
* 添加我的卡
*
* @param entity
* @return
*/
@Transactional(rollbackFor = Exception.class)
@SuppressWarnings("unchecked")
public RestResult addMyCard(GreenCard entity) {
try {
if (Objects.equals(entity.getType(), "1")) {
// 新增我的门禁卡
if (StringUtils.isEmpty(entity.getCardNo())) {
return new RestResult(Constant.FAILED, "请输入卡号");
}
String cardSql = "SELECT * FROM GREEN_GUARD_CARD WHERE CARD_ID = ?";
List<Map<String, String>> cardList = iHibernateDao.queryForListWithSql(cardSql,
new Object[] { entity.getCardNo() });
if (CollectionUtils.isEmpty(cardList)) {
return new RestResult(Constant.FAILED, "未查询到卡号");
} else {
Map<String, String> dataMap = cardList.get(0);
String cardState = setNullValue(dataMap.get("CARD_STATE"));
String uuid = setNullValue(dataMap.get("UUID"));
if (!Objects.equals(cardState, "1")) {
return new RestResult(Constant.FAILED, "此卡号已挂失");
}
String isExistSql = "SELECT COUNT(*) FROM GREEN_GUARD_CARD_REAL_USER WHERE CARD_ID = ?";
Integer existNum = iHibernateDao.queryForIntWithSql(isExistSql, new Object[] { uuid });
if (existNum > 0) {
return new RestResult(Constant.FAILED, "请勿重复绑定此卡号");
}
String sql = "INSERT INTO GREEN_GUARD_CARD_REAL_USER (CARD_ID,USER_ID,IS_LOSS) VALUES (?,?,?)";
iHibernateDao.executeSqlUpdate(sql, new Object[] { uuid, entity.getUserId(), "0" });
return new RestResult(Constant.SUCCESS, "操作成功");
}
} else if (Objects.equals(entity.getType(), "2")) {
// 取消我的门禁卡
if (StringUtils.isEmpty(entity.getCardId())) {
return new RestResult(Constant.FAILED, "参数不能为空");
}
String isExistSql = "SELECT COUNT(*) FROM GREEN_GUARD_CARD_REAL_USER WHERE CARD_ID = ? AND IS_LOSS !='0'";
Integer existNum = iHibernateDao.queryForIntWithSql(isExistSql, new Object[] { entity.getCardId() });
if (existNum > 0) {
return new RestResult(Constant.FAILED, "此卡号已挂失,不能解绑");
}
String sql = "DELETE FROM GREEN_GUARD_CARD_REAL_USER WHERE CARD_ID = ?";
iHibernateDao.executeSqlUpdate(sql, new Object[] { entity.getCardId() });
return new RestResult(Constant.SUCCESS, "操作成功");
} else if (Objects.equals(entity.getType(), "3")) {
// 挂失
if (StringUtils.isEmpty(entity.getCardId())) {
return new RestResult(Constant.FAILED, "参数不能为空");
}
String sql = "UPDATE GREEN_GUARD_CARD_REAL_USER SET IS_LOSS = ? WHERE CARD_ID = ?";
iHibernateDao.executeSqlUpdate(sql, new Object[] { "1", entity.getCardId() });
String querySql = "SELECT * FROM GREEN_GUARD_CARD WHERE UUID = ? AND CARD_STATE = ?";
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(querySql,
new Object[] { entity.getCardId(), "1" });
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 updateSql2 = "UPDATE GREEN_GUARD_CARD SET CARD_STATE = ? WHERE UUID = ?";
iHibernateDao.executeSqlUpdate(updateSql2, new Object[] { "2", entity.getCardId() });
}
return new RestResult(Constant.SUCCESS, "操作成功");
}else if(Objects.equals(entity.getType(), "4")){
// 补办卡
if (StringUtils.isEmpty(entity.getCardId())) {
return new RestResult(Constant.FAILED, "参数不能为空");
}
String sql = "UPDATE GREEN_GUARD_CARD_REAL_USER SET IS_LOSS = ? WHERE CARD_ID = ?";
iHibernateDao.executeSqlUpdate(sql, new Object[] { "3", entity.getCardId() });
String querySql = "SELECT * FROM GREEN_GUARD_CARD WHERE UUID = ?";
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(querySql,
new Object[] { entity.getCardId()});
if (CollectionUtils.isNotEmpty(list)) {
// 添加挂失卡数据
Map<String, Object> dataMap = list.get(0);
StringBuffer sqlString = new StringBuffer();
// 补办卡的审核流程:经办人到制卡人
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"),
dataMap.get("PHONE_NUM"), "补办卡", null, null, null, DateTimeHelper.getNowDate(),
"3", "0", null, null, null,
dataMap.get("CARD_NAME"), "补办卡", null, null,
"1", "1", null, "0" });
// 添加出入区域
String areaSql = "SELECT * FROM GREEN_MJ_ROLE WHERE CARD_ID = ? ";
List<Map<String, String>> areaList = iHibernateDao.queryForListWithSql(areaSql,new Object[] {entity.getCardId() });
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") });
}
}
}
return new RestResult(Constant.SUCCESS, "操作成功");
}else if(Objects.equals(entity.getType(), "5")){
// 重置-删除当前登录人所有绑定的卡号
String sql = "DELETE FROM GREEN_GUARD_CARD_REAL_USER WHERE CARD_ID = ?";
iHibernateDao.executeSqlUpdate(sql, new Object[] { entity.getCardId() });
String sql2 = "DELETE FROM GREEN_GUARD_LOSS_CARD WHERE UUID = ?";
iHibernateDao.executeSqlUpdate(sql2, new Object[] { entity.getCardId() });
String sql3 = "UPDATE GREEN_GUARD_CARD SET CARD_STATE = ? WHERE UUID = ?";
iHibernateDao.executeSqlUpdate(sql3, new Object[] { "1", entity.getCardId() });
}
} catch (Exception e) {
e.printStackTrace();
// 手动回滚异常
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "操作失败");
}
return new RestResult(Constant.SUCCESS, "操作成功");
}
public static String setNullValue(Object value) {
if (value != null) {
return String.valueOf(value);
}
return null;
}
/**
* 已挂失卡的列表
*
* @param entity
* @return
*/
@SuppressWarnings("unchecked")
public RestResult getReissueCardList(GreenCard entity) {
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
try {
String sql = "SELECT ggc.UUID AS \"id\",ggc.CARD_ID AS \"staffNo\",ggc.NAME AS \"name\",ggc.CARD_NAME AS \"cardName\",ggc.ORG_NAME AS \"orgName\",ggc.PHONE_NUM AS \"phone\",IS_LOSS AS \"isLoss\""
+ " FROM GREEN_GUARD_CARD_REAL_USER ggcru"
+ " LEFT JOIN GREEN_GUARD_CARD ggc ON ggcru.CARD_ID = ggc.UUID"
+ " WHERE ggcru.USER_ID = ? AND ggcru.IS_LOSS = ?";
List<Map<String, Object>> list = iHibernateDao.queryForListWithSql(sql,
new Object[] { entity.getUserId(), "2" });
if (CollectionUtils.isNotEmpty(list)) {
dataList.addAll(list);
}
return new RestResult(Constant.SUCCESS, "查询成功", dataList);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
}