diff --git a/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/service/impl/DklSecurityPersonnelServiceImpl.java b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/service/impl/DklSecurityPersonnelServiceImpl.java new file mode 100644 index 0000000..76e99a6 --- /dev/null +++ b/Dkl-Vue-master/dkl-large/src/main/java/com/dkl/large/service/impl/DklSecurityPersonnelServiceImpl.java @@ -0,0 +1,308 @@ +package com.dkl.large.service.impl; + +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.regex.Pattern; + +import com.koal.kms.sdk.ed.KmsSdkException; +import com.dkl.common.exception.ServiceException; +import com.dkl.common.utils.DateUtils; +import com.dkl.common.utils.StringUtils; +import com.dkl.large.domain.DklMonitoringPoints; +import com.dkl.large.domain.DklSecurityEquipment; +import com.dkl.large.mapper.DklMonitoringPointsMapper; +import com.dkl.large.utli.EnciphermentUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.dkl.large.mapper.DklSecurityPersonnelMapper; +import com.dkl.large.domain.DklSecurityPersonnel; +import com.dkl.large.service.IDklSecurityPersonnelService; + +import static com.dkl.common.utils.SecurityUtils.getDeptId; +import static com.dkl.common.utils.SecurityUtils.getUsername; +import static org.springframework.util.SerializationUtils.serialize; + +/** + * 安保力量(人员)Service业务层处理 + * + * @author Falling + * @date 2025-06-16 + */ +@Service +public class DklSecurityPersonnelServiceImpl implements IDklSecurityPersonnelService +{ + @Autowired + private DklSecurityPersonnelMapper dklSecurityPersonnelMapper; + + @Autowired + private DklMonitoringPointsMapper dklMonitoringPointsMapper; + + + //身份证号码正则 + private static final String CODE_REGEX = "^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$"; + + /** + * 查询安保力量(人员) + * + * @param id 安保力量(人员)主键 + * @return 安保力量(人员) + */ + @Override + public DklSecurityPersonnel selectDklSecurityPersonnelById(Long id) throws KmsSdkException { + + DklSecurityPersonnel dklSecurityPersonnelInfo= dklSecurityPersonnelMapper.selectDklSecurityPersonnelById(id); + String code = dklSecurityPersonnelInfo.getCode(); + String phone = dklSecurityPersonnelInfo.getPhone(); + dklSecurityPersonnelInfo.setCode(EnciphermentUtil.kmsDencrypt(code)); + dklSecurityPersonnelInfo.setPhone(EnciphermentUtil.kmsDencrypt(phone)); + return dklSecurityPersonnelInfo; + } + + /** + * 查询安保力量(人员)列表 + * + * @param dklSecurityPersonnel 安保力量(人员) + * @return 安保力量(人员) + */ + @Override + public List selectDklSecurityPersonnelList(DklSecurityPersonnel dklSecurityPersonnel) throws KmsSdkException { + List list = dklSecurityPersonnelMapper.selectDklSecurityPersonnelList(dklSecurityPersonnel); + for (DklSecurityPersonnel dklSecurityPersonnelInfo : list) { + String code = dklSecurityPersonnelInfo.getCode(); + String phone = dklSecurityPersonnelInfo.getPhone(); + dklSecurityPersonnelInfo.setCode(EnciphermentUtil.kmsDencrypt(code)); + dklSecurityPersonnelInfo.setPhone(EnciphermentUtil.kmsDencrypt(phone)); + } + return list; + } + + @Override + public String selectDklSecurityPersonnelListMessage(DklSecurityPersonnel dklSecurityPersonnel) throws KmsSdkException { + StringBuilder successMsg = new StringBuilder(); + List list = dklSecurityPersonnelMapper.selectDklSecurityPersonnelList(dklSecurityPersonnel); + for (DklSecurityPersonnel dklSecurityPersonnelInfo : list) { + String code = dklSecurityPersonnelInfo.getCode(); + String phone = dklSecurityPersonnelInfo.getPhone(); + dklSecurityPersonnelInfo.setCode(EnciphermentUtil.kmsDencrypt(code)); + dklSecurityPersonnelInfo.setPhone(EnciphermentUtil.kmsDencrypt(phone)); + byte[] bytes = serialize(dklSecurityPersonnelInfo.getName()+","+dklSecurityPersonnelInfo.getCode()+","+dklSecurityPersonnelInfo.getPhone()); + String isor = EnciphermentUtil.kmsSign(bytes); + if (!isor.equals(dklSecurityPersonnelInfo.getSigenCode())) { + successMsg.append("名称为"+dklSecurityPersonnelInfo.getName()+"的数据被篡改"); + } + } + return successMsg.toString(); + } + + /** + * 新增安保力量(人员) + * + * @param dklSecurityPersonnel 安保力量(人员) + * @return 结果 + */ + @Override + public int insertDklSecurityPersonnel(DklSecurityPersonnel dklSecurityPersonnel) throws KmsSdkException { + dklSecurityPersonnel.setCreateTime(DateUtils.getNowDate()); + + String code = dklSecurityPersonnel.getCode(); + String phone = dklSecurityPersonnel.getPhone(); + dklSecurityPersonnel.setCode(EnciphermentUtil.kmsEncrypt(code)); + dklSecurityPersonnel.setPhone(EnciphermentUtil.kmsEncrypt(phone)); + // (序列化) + byte[] bytes = serialize(code+","+phone); + String sigenCode = EnciphermentUtil.kmsSign(bytes); + dklSecurityPersonnel.setSigenCode(sigenCode); + return dklSecurityPersonnelMapper.insertDklSecurityPersonnel(dklSecurityPersonnel); + } + + /** + * 修改安保力量(人员) + * + * @param dklSecurityPersonnel 安保力量(人员) + * @return 结果 + */ + @Override + public int updateDklSecurityPersonnel(DklSecurityPersonnel dklSecurityPersonnel) throws KmsSdkException { + dklSecurityPersonnel.setUpdateTime(DateUtils.getNowDate()); + String code = dklSecurityPersonnel.getCode(); + String phone = dklSecurityPersonnel.getPhone(); + dklSecurityPersonnel.setCode(EnciphermentUtil.kmsEncrypt(code)); + dklSecurityPersonnel.setPhone(EnciphermentUtil.kmsEncrypt(phone)); + // (序列化) + byte[] bytes = serialize(code+","+phone); + String sigenCode = EnciphermentUtil.kmsSign(bytes); + dklSecurityPersonnel.setSigenCode(sigenCode); + return dklSecurityPersonnelMapper.updateDklSecurityPersonnel(dklSecurityPersonnel); + } + + /** + * 批量删除安保力量(人员) + * + * @param ids 需要删除的安保力量(人员)主键 + * @return 结果 + */ + @Override + public int deleteDklSecurityPersonnelByIds(Long[] ids) + { + return dklSecurityPersonnelMapper.deleteDklSecurityPersonnelByIds(ids); + } + + /** + * 删除安保力量(人员)信息 + * + * @param id 安保力量(人员)主键 + * @return 结果 + */ + @Override + public int deleteDklSecurityPersonnelById(Long id) + { + return dklSecurityPersonnelMapper.deleteDklSecurityPersonnelById(id); + } + + /** + * 导入数据 + * + * @param list 数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * @return 结果 + */ + @Override + public String importData(List list, Boolean isUpdateSupport, String operName) throws KmsSdkException { + DklMonitoringPoints points = new DklMonitoringPoints(); + List pointsList = dklMonitoringPointsMapper.selectDklMonitoringPointsList(points); + + if (StringUtils.isNull(list) || list.size() == 0) { + throw new ServiceException("导入数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + try + { + //姓名 + if (StringUtils.isEmpty(list.get(i).getName())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据姓名为空"); + }else{ + if (list.get(i).getName().length()>=100){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据姓名长度过长"); + } + } + + //身份证号码 + if (StringUtils.isEmpty(list.get(i).getCode())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据身份证号码为空"); + }else{ + if (list.get(i).getCode().length()>=30){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据身份证号码长度过长"); + }else if (!Pattern.matches(CODE_REGEX, list.get(i).getCode())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据身份证号码有误"); + } + } + + //联系方式 + if (StringUtils.isEmpty(list.get(i).getPhone())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据联系方式为空"); + }else{ + if (list.get(i).getPhone().length()>=30){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据联系方式长度过长"); + } + } + + //入职日期 + if (StringUtils.isEmpty(list.get(i).getEntryTime().toString())){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据入职日期为空,时间应该为yyyy-MM-dd"); + }else if (list.get(i).getEntryTime() == null || list.get(i).getEntryTime().getTime() == 0) { + failureMsg.append("
第" + (i+1) + "条数据入职日期无效,时间应该为yyyy-MM-dd"); + } + + + //岗位 + if (StringUtils.isEmpty(list.get(i).getPost())){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据岗位为空"); + }else{ + if (list.get(i).getPost().length()>=10){ + failureNum++; + failureMsg.append("
第" + (i+1) + "条数据岗位长度过长"); + } + } + + //证书名称 + if (StringUtils.isNotEmpty(list.get(i).getCertificate()) && list.get(i).getCertificate().length()>=30 ){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据证书名称长度过长"); + } + + //证书编号 + if (StringUtils.isNotEmpty(list.get(i).getCertificateCode()) && list.get(i).getCertificateCode().length()>=50 ){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据证书名称长度过长"); + } + + //监控点 + if (StringUtils.isNotEmpty(list.get(i).getPointName())){ + for (DklMonitoringPoints monitoringPoints: pointsList){ + if (monitoringPoints.getPointName().equals(list.get(i).getPointName())){ + list.get(i).setMonitoringPointsId((long) monitoringPoints.getId()); + } + } + if (StringUtils.isNull(String.valueOf(list.get(i).getMonitoringPointsId()))){ + failureNum++; + failureMsg.append("
第" + (i+1)+ "条数据监控点名称找不到"); + } + } + + } + catch (Exception e) + { + failureNum++; + String msg = "
" + failureNum + "导入失败请检查数据类型:"; + failureMsg.append(msg + e.getMessage()); + } + } + if (failureNum > 0) + { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } + else + { + for (DklSecurityPersonnel personnel :list){ + //添加系统信息 + personnel.setDelFlag("0"); + personnel.setCreateTime(new Date()); + personnel.setCreateBy(getUsername()); + personnel.setDeptId(getDeptId()); + personnel.setUpdateTime(new Date()); + personnel.setUpdateBy(getUsername()); + String name = personnel.getName(); + String code = personnel.getCode(); + String phone = personnel.getPhone(); + personnel.setCode(EnciphermentUtil.kmsEncrypt(code)); + personnel.setPhone(EnciphermentUtil.kmsEncrypt(phone)); + // (序列化) + byte[] bytes = serialize(code+","+phone); + String sigenCode = EnciphermentUtil.kmsSign(bytes); + personnel.setSigenCode(sigenCode); + dklSecurityPersonnelMapper.insertDklSecurityPersonnel(personnel); + } + successMsg.insert(0, "恭喜您,数据已全部导入成功!"); + } + + return successMsg.toString(); + } + + +}