liusheng
2023-06-30 18fd554eb8c17bafedd3d98ec00585df0679a55d
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
@@ -1,34 +1,41 @@
package com.ruoyi.project.service.impl;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.project.domain.ServiceReimbursementEo;
import com.ruoyi.project.domain.ServiceReimbursementdetail;
import com.ruoyi.project.domain.ServiceRelativesconfirmation;
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.ServiceReimbursementdetailMapper;
import com.ruoyi.project.mapper.*;
import com.ruoyi.project.service.IServiceReimbursementSharedService;
import com.ruoyi.project.service.IServiceReimbursementdetailSharedService;
import com.ruoyi.project.service.IServiceReimbursementpayeeSharedService;
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.ArrayList;
import java.util.Map;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.mapper.ServiceReimbursementMapper;
import com.ruoyi.project.domain.ServiceReimbursement;
import com.ruoyi.project.service.IServiceReimbursementService;
import org.springframework.transaction.annotation.Transactional;
/**
 * 报销申请Service业务层处理
 *
 *
 * @author ruoyi
 * @date 2022-01-24
 */
@Service
public class ServiceReimbursementServiceImpl extends ServiceImpl<ServiceReimbursementMapper, ServiceReimbursement> implements IServiceReimbursementService
{
public class ServiceReimbursementServiceImpl extends ServiceImpl<ServiceReimbursementMapper, ServiceReimbursement> implements IServiceReimbursementService {
    @Autowired
    ServiceReimbursementMapper serviceReimbursementMapper;
@@ -36,38 +43,56 @@
    @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 (StringUtils.isNotBlank(serviceReimbursement.getCreateBy())) {
            wrappers.eq(ServiceReimbursement::getCreateBy, serviceReimbursement.getCreateBy());
        }
        if (serviceReimbursement.getCreateTime() != null){
            wrappers.eq(ServiceReimbursement::getCreateTime ,serviceReimbursement.getCreateTime());
        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.getUsername())) {
            wrappers.like(ServiceReimbursement::getUsername, serviceReimbursement.getUsername());
        }
        if (StringUtils.isNotBlank(serviceReimbursement.getTravelers())){
            wrappers.like(ServiceReimbursement::getTravelers ,serviceReimbursement.getTravelers());
        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.getDeptmentname())) {
            wrappers.like(ServiceReimbursement::getDeptmentname, serviceReimbursement.getDeptmentname());
        }
        if (StringUtils.isNotBlank(serviceReimbursement.getDonorno())){
            wrappers.eq(ServiceReimbursement::getDonorno ,serviceReimbursement.getDonorno());
        if (StringUtils.isNotBlank(serviceReimbursement.getDonorno())) {
            wrappers.eq(ServiceReimbursement::getDonorno, serviceReimbursement.getDonorno());
        }
        if (serviceReimbursement.getRecordstatus()!=null){
            wrappers.eq(ServiceReimbursement::getRecordstatus ,serviceReimbursement.getRecordstatus());
        if (serviceReimbursement.getRecordstatus() != null) {
            wrappers.eq(ServiceReimbursement::getRecordstatus, serviceReimbursement.getRecordstatus());
        }
        if (StringUtils.isNotBlank(serviceReimbursement.getUploadflag())){
            wrappers.eq(ServiceReimbursement::getUploadflag ,serviceReimbursement.getUploadflag());
        if (StringUtils.isNotBlank(serviceReimbursement.getUploadflag())) {
            wrappers.eq(ServiceReimbursement::getUploadflag, serviceReimbursement.getUploadflag());
        }
       /* if (serviceReimbursement.getStarttime()!=null && serviceReimbursement.getEndtime()!=null){
@@ -88,13 +113,52 @@
    }
    @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);
    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
@@ -108,8 +172,131 @@
    }
    @Override
   public List<ServiceReimbursementEo> getRDInfoByItem(ServiceReimbursementEo serviceReimbursementEo){
   return serviceReimbursementMapper.getRDInfoByItem(serviceReimbursementEo);
    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 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);
        boolean bRet = sharedService.updateById(remShare);
        if (!bRet) return -1;
        return 0;
    }