package com.ruoyi.project.service.impl;
|
|
import java.io.File;
|
import java.util.HashMap;
|
import java.util.List;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.ruoyi.common.config.RuoYiConfig;
|
import com.ruoyi.common.utils.HttpClientKit;
|
import com.ruoyi.common.utils.bean.DtoConversionUtils;
|
import com.ruoyi.project.domain.*;
|
import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
|
import com.ruoyi.project.domain.vo.SpFinancialExpensesReimbursementOut;
|
import com.ruoyi.project.mapper.*;
|
import com.ruoyi.project.service.IServiceReimbursementSharedService;
|
import com.ruoyi.project.service.IServiceReimbursementdetailSharedService;
|
import com.ruoyi.project.service.IServiceReimbursementpayeeSharedService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import java.util.Map;
|
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.project.service.IServiceReimbursementService;
|
import org.springframework.transaction.annotation.Transactional;
|
|
/**
|
* 报销申请Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2022-01-24
|
*/
|
@Slf4j
|
@Service
|
public class ServiceReimbursementServiceImpl extends ServiceImpl<ServiceReimbursementMapper, ServiceReimbursement> implements IServiceReimbursementService {
|
|
@Autowired
|
ServiceReimbursementMapper serviceReimbursementMapper;
|
|
@Autowired
|
ServiceReimbursementdetailMapper serviceReimbursementdetailMapper;
|
|
@Autowired
|
ServiceReimbursementdetailSharedMapper serviceReimbursementdetailSharedMapper;
|
|
@Autowired
|
ServiceReimbursementpayeeMapper reimbursementpayeeMapper;
|
|
@Autowired
|
ServiceReimbursementpayeeSharedMapper reimbursementpayeeSharedMapper;
|
|
@Autowired
|
IServiceReimbursementdetailSharedService detailSharedService;
|
|
@Autowired
|
IServiceReimbursementSharedService sharedService;
|
|
@Autowired
|
IServiceReimbursementpayeeSharedService payeeSharedService;
|
|
/**
|
* 查询报销申请列表
|
*
|
* @param serviceReimbursement 报销申请
|
* @return 报销申请
|
*/
|
@Override
|
public List<ServiceReimbursement> queryList(ServiceReimbursement serviceReimbursement) {
|
LambdaQueryWrapper<ServiceReimbursement> wrappers = Wrappers.lambdaQuery();
|
if (StringUtils.isNotBlank(serviceReimbursement.getCreateBy())) {
|
wrappers.eq(ServiceReimbursement::getCreateBy, serviceReimbursement.getCreateBy());
|
}
|
if (serviceReimbursement.getCreateTime() != null) {
|
wrappers.eq(ServiceReimbursement::getCreateTime, serviceReimbursement.getCreateTime());
|
}
|
if (StringUtils.isNotBlank(serviceReimbursement.getUsername())) {
|
wrappers.like(ServiceReimbursement::getUsername, serviceReimbursement.getUsername());
|
}
|
if (StringUtils.isNotBlank(serviceReimbursement.getTravelers())) {
|
wrappers.like(ServiceReimbursement::getTravelers, serviceReimbursement.getTravelers());
|
}
|
if (StringUtils.isNotBlank(serviceReimbursement.getDeptmentname())) {
|
wrappers.like(ServiceReimbursement::getDeptmentname, serviceReimbursement.getDeptmentname());
|
}
|
if (StringUtils.isNotBlank(serviceReimbursement.getDonorno())) {
|
wrappers.eq(ServiceReimbursement::getDonorno, serviceReimbursement.getDonorno());
|
}
|
if (serviceReimbursement.getRecordstatus() != null) {
|
wrappers.eq(ServiceReimbursement::getRecordstatus, serviceReimbursement.getRecordstatus());
|
}
|
if (StringUtils.isNotBlank(serviceReimbursement.getUploadflag())) {
|
wrappers.eq(ServiceReimbursement::getUploadflag, serviceReimbursement.getUploadflag());
|
}
|
|
/* if (serviceReimbursement.getStarttime()!=null && serviceReimbursement.getEndtime()!=null){
|
wrappers.between(ServiceReimbursement::getCreateTime ,serviceReimbursement.getStarttime(),serviceReimbursement.getEndtime());
|
}*/
|
|
return this.list(wrappers);
|
}
|
|
@Override
|
public Long getMaxId() {
|
return serviceReimbursementMapper.getMaxId();
|
}
|
|
@Override
|
public List<ServiceReimbursementdetail> getRBDetailList(Long id) {
|
return serviceReimbursementdetailMapper.getRBDetailList(id);
|
}
|
|
@Override
|
@Transactional
|
public Boolean addSharedData(Long id) {
|
ServiceReimbursement serviceReimbursement = serviceReimbursementMapper.selectById(id);
|
Map<String, Object> columnMap = new HashMap<>();
|
columnMap.put("rbid", id);
|
//获取详情数据
|
List<ServiceReimbursementdetail> details = serviceReimbursementdetailMapper.selectByMap(columnMap);
|
//获取支付数据
|
List<ServiceReimbursementpayee> serviceReimbursementpayees = reimbursementpayeeMapper.selectByMap(columnMap);
|
//数据组装
|
ServiceReimbursementShared serviceReimbursementShared = DtoConversionUtils.sourceToTarget(serviceReimbursement, ServiceReimbursementShared.class);
|
serviceReimbursementShared.setReimid(id);
|
serviceReimbursementShared.setId(null);
|
List<ServiceReimbursementdetailShared> serviceReimbursementdetailShareds = DtoConversionUtils.sourceToTarget(details, ServiceReimbursementdetailShared.class);
|
List<ServiceReimbursementpayeeShared> serviceReimbursementpayeeShareds = DtoConversionUtils.sourceToTarget(serviceReimbursementpayees, ServiceReimbursementpayeeShared.class);
|
//将组装好的数据插入到分享表中
|
sharedService.save(serviceReimbursementShared);
|
//上传OA文件
|
uploadOAFileAndUpdateDb(serviceReimbursementShared);
|
//将serviceReimbursementdetail表里的id赋值给Rdid; 将serviceReimbursementShared里的ID赋值给RBID,并将serviceReimbursementdetailShared表里的id置空,由数据库重新生成
|
for (int i = 0; i < details.size(); i++) {
|
serviceReimbursementdetailShareds.get(i).setRdid(serviceReimbursementdetailShareds.get(i).getId());
|
serviceReimbursementdetailShareds.get(i).setRbid(serviceReimbursementShared.getId());
|
serviceReimbursementdetailShareds.get(i).setId(null);
|
}
|
detailSharedService.saveBatch(serviceReimbursementdetailShareds);
|
|
//将serviceReimbursementpayee表里的id赋值给Rpid; 将serviceReimbursementShared里的ID赋值给RBID,并将serviceReimbursementpayeeShared表里的id置空,由数据库重新生成
|
for (int i = 0; i < serviceReimbursementpayees.size(); i++) {
|
serviceReimbursementpayeeShareds.get(i).setRpid(Long.valueOf(serviceReimbursementpayees.get(i).getId()));
|
serviceReimbursementpayeeShareds.get(i).setRbid(serviceReimbursementShared.getId());
|
serviceReimbursementpayeeShareds.get(i).setId(null);
|
}
|
payeeSharedService.saveBatch(serviceReimbursementpayeeShareds);
|
|
return true;
|
}
|
|
@Override
|
public List<ServiceReimbursement> selectSearchList(ServiceReimbursementDto serviceReimbursementdto) {
|
return serviceReimbursementMapper.selectSearchList(serviceReimbursementdto);
|
}
|
|
@Override
|
public List<SpFinancialExpensesReimbursementOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE) {
|
return serviceReimbursementMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE);
|
}
|
|
@Override
|
public List<ServiceReimbursement> getInfoByInfoId(Long infoid) {
|
return serviceReimbursementMapper.getInfoByInfoId(infoid);
|
}
|
|
@Override
|
public List<ServiceReimbursement> getInfoByInfoIdRelatives(Long infoid) {
|
return serviceReimbursementMapper.getInfoByInfoIdRelatives(infoid);
|
}
|
|
@Override
|
public List<ServiceReimbursementEo> getRDInfoByItem(ServiceReimbursementEo serviceReimbursementEo) {
|
return serviceReimbursementMapper.getRDInfoByItem(serviceReimbursementEo);
|
}
|
|
|
int uploadOAFileAndUpdateDb(ServiceReimbursementShared remShare) {
|
//上传OA文件
|
//String strUrl = "http://129.88.242.39:8899/seeyon/rest/token?userName=opo&password=127814f8-84e8-4304-84a5-a71573567efd&loginName=demo3";
|
String strUrl = "http://129.88.242.39:8899/seeyon/rest/token";
|
//String strUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/token";
|
//上传文件成功后,去更新相关的数据库
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
map.put("userName", "opo");
|
map.put("password", "4126407a-9821-4874-be41-6568abd6dbe5");
|
map.put("loginName", "demo3");
|
|
JSONObject jsonObj = new JSONObject(map);
|
|
System.out.println("uploadOAFileAndUpdateDb + jsonObject" + jsonObj.toString() + "\r\n" + jsonObj.toJSONString());
|
String strRes = HttpClientKit.postOpr(strUrl, jsonObj.toString());//
|
//String strRes = HttpClientKit.postMsg(strUrl,jsonObj);//得到返回的token?
|
|
JSONObject json1 = JSONObject.parseObject(strRes);
|
strRes = json1.get("id").toString();
|
|
///if(strRes.isEmpty() || "" == strRes) return -1;// 为空代表失败
|
|
//下面需求调用文件的接口,调用成功返回后,得到filename和fileid 用这二个值去更新数据
|
|
String filePath = RuoYiConfig.getUploadPath();
|
// String strMutfileUrl = remShare.getFileurl();//可能存在多个地址,以,分开
|
String strMutfileUrl = remShare.getAnnexfiles();
|
String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=" + strRes;
|
//String strFUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/attachment?token="+strRes;
|
//strFUrl = String.format(strFUrl, strRes);
|
|
/*File test = null;
|
File file = new File("E:\\YYJQ\\OPO\\WEB\\Upload\\upload\\2023\\02\\17");
|
if (file.exists() && file.isDirectory()) {
|
// 获取所有盲盒文件夹
|
File[] ones = file.listFiles();
|
for (File one : ones) {
|
test = one;
|
}
|
}*/
|
|
String filename = "";
|
String fileid = "";
|
|
String[] urlArray = strMutfileUrl.split(",");
|
for (int i = 0; i < urlArray.length; i++) {
|
String strOneFileName = urlArray[i];
|
String strTemp = strOneFileName.substring(15);
|
String strFile = filePath + strTemp;
|
//FileUploadUtils.getAbsoluteFile(filePath,strOneFileName);
|
String struploadResult = "";
|
File filetest = new File(strFile);
|
try {
|
struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
|
/*CloseableHttpClient httpClient = HttpClients.createDefault();
|
//创建post方法连接实例,在post方法中传入待连接地址
|
HttpPost httpPost = new HttpPost(strFUrl);
|
CloseableHttpResponse response = null;
|
|
String struploadResult = "";
|
try {
|
//设置请求参数(类似html页面中name属性)
|
MultipartEntityBuilder entity = MultipartEntityBuilder.create();
|
//entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
|
entity.setCharset(Charset.forName("UTF-8"));
|
|
byte[] fileBytes = Files.readAllBytes(Paths.get(strFile));
|
if (fileBytes != null) {
|
//内容类型,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件
|
ContentType OCTEC_STREAM = ContentType.create("application/octet-stream", Charset.forName("UTF-8"));
|
//添加文件
|
entity.addBinaryBody("file", fileBytes, OCTEC_STREAM, strTemp);
|
}
|
|
httpPost.setEntity(entity.build());
|
//发起请求,并返回请求响应
|
response = httpClient.execute(httpPost);
|
struploadResult = EntityUtils.toString(response.getEntity(), "utf-8");
|
}
|
catch (Exception e)
|
{
|
e.printStackTrace();
|
}*/
|
|
//String strFRes = HttpClientKit.postMsg(strFUrl,jsonFObj);
|
if (struploadResult == null) return 0;
|
if (struploadResult.isEmpty()) return 0;
|
|
JSONObject jsonR = JSONObject.parseObject(struploadResult);
|
|
JSONArray jsonArr = jsonR.getJSONArray("atts");
|
for (int j = 0; j < jsonArr.size(); j++) {
|
JSONObject jsonRet = jsonArr.getJSONObject(j);
|
String name1 = jsonRet.get("filename").toString();
|
String id1 = jsonRet.get("fileUrl").toString();
|
filename += name1;
|
fileid += id1;
|
if (i != urlArray.length - 1) {
|
filename += ",";
|
fileid += ",";
|
}
|
}
|
|
}
|
|
long nId = remShare.getId();
|
remShare.setId(nId);
|
remShare.setFilename(filename);
|
remShare.setFileid(fileid);
|
log.info("remShare的数据为 : {}:", remShare.toString());
|
boolean bRet = sharedService.updateById(remShare);
|
if (!bRet) return -1;
|
|
return 0;
|
}
|
|
|
}
|