package cn.gistack.sm.jcsb.service.impl;
|
|
import cn.gistack.pwd.dto.CBCResultDTO;
|
import cn.gistack.pwd.dto.ResultDTO;
|
import cn.gistack.pwd.fegin.IPwdClient;
|
import cn.gistack.sm.jcsb.supo.DangerReportSUPO;
|
import cn.gistack.sm.jcsb.entity.DangerReport;
|
import cn.gistack.sm.jcsb.mapper.DangerReportMapper;
|
import cn.gistack.sm.jcsb.service.IDangerReportService;
|
import cn.gistack.sm.jcsb.vo.DangerReportVO;
|
import cn.gistack.sm.jcsb.vo.StatisticsVO;
|
import cn.gistack.sm.sjztmd.entity.AttResBase;
|
import cn.gistack.sm.sjztmd.service.IAttResBaseService;
|
import cn.gistack.system.user.entity.User;
|
import cn.gistack.system.user.feign.IUserClient;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
import org.springblade.core.secure.utils.AuthUtil;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.core.tool.utils.BeanUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.io.Serializable;
|
import java.net.URLDecoder;
|
import java.net.URLEncoder;
|
import java.util.List;
|
|
/**
|
* @PROJECT_NAME: skjcmanager
|
* @DESCRIPTION:
|
* @USER: aix
|
* @DATE: 2023/5/18 17:47
|
*/
|
@Service
|
public class DangerReportServiceImpl extends BaseServiceImpl<DangerReportMapper, DangerReport> implements IDangerReportService {
|
|
@Autowired
|
private IPwdClient pwdClient;
|
@Autowired
|
private IAttResBaseService attResBaseService;
|
|
@Autowired
|
private IUserClient userClient;
|
|
@Override
|
public List<DangerReportVO> getAll(DangerReport dangerReport) {
|
return baseMapper.getAll(dangerReport);
|
}
|
|
@Override
|
public IPage<DangerReportVO> selectPage(IPage<DangerReportVO> page, DangerReportVO dangerReportVO) {
|
List<DangerReportVO> dangerReportVOS = baseMapper.selectRecordPage(page, dangerReportVO);
|
dangerReportVOS.forEach(item->{
|
R<ResultDTO> res = pwdClient.getDecrypt(item.getSm4iv(), item.getKeyindexs(), item.getEncdata());
|
if (res.getCode() == 200){
|
item.setBase64Data(res.getData().getData());
|
}
|
|
item.setEncdata("");
|
item.setKeyindexs("");
|
item.setSm4iv("");
|
});
|
return page.setRecords(dangerReportVOS);
|
}
|
|
@Override
|
public StatisticsVO getStatistics(String resGuid) {
|
return baseMapper.getStatistics(resGuid);
|
}
|
|
@Override
|
public boolean saveUp(DangerReport dangerReport) {
|
// 填充加密内容
|
DangerReportSUPO dangerReportSUPO = BeanUtil.copy(dangerReport, DangerReportSUPO.class);
|
|
// 获取水库名称
|
AttResBase attResBase = attResBaseService.getDetailByCode(dangerReport.getReservoirId());
|
//转码后的水库名
|
String encodeReservoirName = "";
|
//转码后的上报人
|
String encodeCreateUserName = "";
|
//转码后的处理人
|
String encodeToUserName = "";
|
String encodeDesinfo = "";
|
R<User> userR = userClient.userInfoById(Long.parseLong(dangerReportSUPO.getToUser()));
|
R<User> createUser = userClient.userInfoById(dangerReportSUPO.getCreateUser());
|
|
try {
|
encodeReservoirName= URLEncoder.encode(attResBase.getName(), "UTF-8");
|
encodeCreateUserName = URLEncoder.encode(createUser.getData().getName(), "UTF-8");
|
encodeToUserName=URLEncoder.encode(userR.getData().getName(), "UTF-8");
|
encodeDesinfo = URLEncoder.encode(dangerReport.getDesinfo(), "UTF-8");
|
}catch (Exception e){
|
System.out.println(e);
|
}
|
|
|
dangerReportSUPO.setReservoirName(encodeReservoirName);
|
dangerReport.setReservoirName(attResBase.getName()); // 保存水库名称
|
dangerReport.setReservoirId(attResBase.getGuid());
|
|
// 获取用户
|
dangerReportSUPO.setCreateUserName(encodeCreateUserName);
|
dangerReportSUPO.setToUserName(encodeToUserName);
|
dangerReportSUPO.setDesinfo(encodeDesinfo);
|
|
String message = JSONObject.toJSONString(dangerReportSUPO);
|
R<CBCResultDTO> cbcResultDTOR = pwdClient.getCBCMacEncipher(message);
|
if (cbcResultDTOR.getCode() != 200) {
|
return false;
|
}
|
String maced = cbcResultDTOR.getData().getMaced();
|
String keyIndex = cbcResultDTOR.getData().getKeyIndex();
|
String sm4iv = cbcResultDTOR.getData().getSm4IV();
|
dangerReport.setMaced(maced);
|
dangerReport.setKeyindexs(keyIndex);
|
dangerReport.setSm4iv(sm4iv);
|
R<ResultDTO> resultDTOR = pwdClient.getEncrypt(sm4iv, keyIndex, message);
|
if (resultDTOR.getCode() != 200) {
|
return false;
|
}
|
dangerReport.setEncdata(resultDTOR.getData().getData());
|
|
return this.save(dangerReport);
|
|
}
|
|
@Override
|
public DangerReportVO getVODetail(String id) {
|
DangerReport item = super.getById(id);
|
DangerReportVO newEntity = new DangerReportVO();
|
newEntity.setId(item.getId());
|
|
R<ResultDTO> res = pwdClient.getDecrypt(item.getSm4iv(), item.getKeyindexs(), item.getEncdata());
|
if (res.getCode() == 200){
|
newEntity.setBase64Data(res.getData().getData());
|
newEntity.setCreateTime(item.getCreateTime());
|
}
|
|
return newEntity;
|
}
|
|
}
|