liusheng
2023-07-20 43b617a3de865633cc142cee25ac8204e4eea2fe
获取fileid
已添加2个文件
已修改5个文件
669 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementdetailController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/RbDetailFile.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementdetail.java 112 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementdetailVO.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceReimbursementService.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementdetailController.java
@@ -4,11 +4,17 @@
import java.util.Arrays;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.project.domain.ServiceReimbursementdetailVO;
import com.ruoyi.project.service.IServiceReimbursementdetailSharedService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
@@ -95,7 +101,11 @@
    @Log(title = "报销申请明细", businessType = BusinessType.INSERT)
    @PostMapping
    @RepeatSubmit
    public AjaxResult add(@RequestBody ServiceReimbursementdetail serviceReimbursementdetail) {
    public AjaxResult add(@RequestBody ServiceReimbursementdetailVO serviceReimbursementdetailVO) {
        ServiceReimbursementdetail serviceReimbursementdetail = DtoConversionUtils.sourceToTarget(serviceReimbursementdetailVO, ServiceReimbursementdetail.class);
        if (StringUtils.isNotBlank(serviceReimbursementdetailVO.getAnnexfilesList().toString())) {
            serviceReimbursementdetail.setAnnexfiles(JSON.toJSONString(serviceReimbursementdetailVO.getAnnexfilesList()));
        }
        return toAjax(serviceReimbursementdetailService.save(serviceReimbursementdetail));
    }
@@ -122,7 +132,12 @@
    @Log(title = "报销申请明细", businessType = BusinessType.UPDATE)
    @PutMapping
    //@RepeatSubmit
    public AjaxResult edit(@RequestBody ServiceReimbursementdetail serviceReimbursementdetail) {
    public AjaxResult edit(@RequestBody ServiceReimbursementdetailVO serviceReimbursementdetailVO) {
        ServiceReimbursementdetail serviceReimbursementdetail = DtoConversionUtils.sourceToTarget(serviceReimbursementdetailVO, ServiceReimbursementdetail.class);
        if (!CollectionUtils.isEmpty(serviceReimbursementdetailVO.getAnnexfilesList())) {
            //对前端传过来的数组,进行JSON序列化,并赋值给Annexfiles
            serviceReimbursementdetail.setAnnexfiles(JSON.toJSONString(serviceReimbursementdetailVO.getAnnexfilesList()));
        }
        return toAjax(serviceReimbursementdetailService.updateById(serviceReimbursementdetail));
    }
ruoyi-admin/src/main/resources/application.yml
@@ -9,8 +9,10 @@
  # å®žä¾‹æ¼”示开关
  demoEnabled: true
  # æ–‡ä»¶è·¯å¾„ ç¤ºä¾‹ï¼ˆ Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
  # å¼€å‘环境
  profile: D:/lihusoft/OPO/WEB/Upload
  # å¼€å‘环境 window
#  profile: D:/lihusoft/OPO/WEB/Upload
  # å¼€å‘环境 linux
  profile: /home/smartor/uploadFile
  # åŒ»é™¢çŽ¯å¢ƒ
  #profile: E:/OPO/WEB/Upload
  # èŽ·å–ip地址开关
ruoyi-project/src/main/java/com/ruoyi/project/domain/RbDetailFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.project.domain;
import lombok.Data;
@Data
public class RbDetailFile {
    private String name;
    private String url;
    private String fileid;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementdetail.java
@@ -11,118 +11,159 @@
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * æŠ¥é”€ç”³è¯·æ˜Žç»†å¯¹è±¡ service_reimbursementdetail
 *
 *
 * @author ruoyi
 * @date 2022-01-24
 */
@Data
@ApiModel("报销申请明细")
public class ServiceReimbursementdetail extends BaseEntity
{
public class ServiceReimbursementdetail extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /** ä¸»é”®ID */
    /**
     * ä¸»é”®ID
     */
    @ApiModelProperty("主键ID")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /** èµ„金申请主表ID */
    /**
     * èµ„金申请主表ID
     */
    @ApiModelProperty("资金申请主表ID")
    @Excel(name = "资金申请主表ID")
    private Long rbid;
    /** å‡ºå‘æ—¶é—´ */
    /**
     * å‡ºå‘æ—¶é—´
     */
    @ApiModelProperty("出发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "出发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date starttime;
    /** å‡ºå‘地点 */
    /**
     * å‡ºå‘地点
     */
    @ApiModelProperty("出发地点")
    @Excel(name = "出发地点")
    private String departure;
    /** åˆ°è¾¾æ—¶é—´ */
    /**
     * åˆ°è¾¾æ—¶é—´
     */
    @ApiModelProperty("到达时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "到达时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endtime;
    /** åˆ°è¾¾åœ°ç‚¹ */
    /**
     * åˆ°è¾¾åœ°ç‚¹
     */
    @ApiModelProperty("到达地点")
    @Excel(name = "到达地点")
    private String destination;
    /** å¤©æ•° */
    /**
     * å¤©æ•°
     */
    @ApiModelProperty("天数")
    @Excel(name = "天数")
    private Long days;
    /** äº¤é€šè´¹ */
    /**
     * äº¤é€šè´¹
     */
    @ApiModelProperty("交通费")
    @Excel(name = "交通费")
    private BigDecimal trafficexpense;
    /** äº¤é€šå·¥å…· */
    /**
     * äº¤é€šå·¥å…·
     */
    @ApiModelProperty("交通工具")
    @Excel(name = "交通工具")
    private String traffictype;
    /** äº¤é€šå·¥å…· */
    /**
     * äº¤é€šå·¥å…·
     */
    @ApiModelProperty("交通工具")
    @Excel(name = "交通工具")
    private String traffictype2;
    /** å¸‚内交通费 */
    /**
     * å¸‚内交通费
     */
    @ApiModelProperty("市内交通费")
    @Excel(name = "市内交通费")
    private BigDecimal cityfee;
    /** ä½å®¿è´¹ */
    /**
     * ä½å®¿è´¹
     */
    @ApiModelProperty("住宿费")
    @Excel(name = "住宿费")
    private BigDecimal hotelexpense;
    /** å‘票张数 */
    /**
     * å‘票张数
     */
    @ApiModelProperty("发票张数")
    @Excel(name = "发票张数")
    private Long invoicecount;
    /** é™„ä»¶å¼ æ•° */
    /**
     * é™„ä»¶å¼ æ•°
     */
    @ApiModelProperty("附件张数")
    @Excel(name = "附件张数")
    private Long attachcount;
    /** æ‚è´¹ */
    /**
     * æ‚è´¹
     */
    @ApiModelProperty("杂费")
    @Excel(name = "杂费")
    private BigDecimal otherexpense;
    /** ä¼™é£Ÿè´¹ */
    /**
     * ä¼™é£Ÿè´¹
     */
    @ApiModelProperty("伙食费")
    @Excel(name = "伙食费")
    private BigDecimal foodexpenses;
    /** ä¼™é£Ÿè´¹è¡¥åŠ© */
    /**
     * ä¼™é£Ÿè´¹è¡¥åŠ©
     */
    @ApiModelProperty("伙食费补助")
    @Excel(name = "伙食费补助")
    private BigDecimal foodallowance;
    /** é™„件表 */
    /**
     * é™„件表
     */
    @ApiModelProperty("附件表")
    @Excel(name = "附件表")
    private String annexfiles;
    /** ä¸Šä¼ æ ‡è¯† */
    /**
     * ä¸Šä¼ æ ‡è¯†
     */
    @ApiModelProperty("上传标识")
    @Excel(name = "上传标识")
    private String uploadFlag;
    /** ä¸Šä¼ æ—¶é—´ */
    /**
     * ä¸Šä¼ æ—¶é—´
     */
    @ApiModelProperty("上传时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "上传时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@@ -130,32 +171,44 @@
    private String remark;
    /** å·®æ—…地址省代码 */
    /**
     * å·®æ—…地址省代码
     */
    @ApiModelProperty("差旅地址省代码")
    @Excel(name = "差旅地址省代码")
    private String travelprovince;
    /** å·®æ—…地址省名称 */
    /**
     * å·®æ—…地址省名称
     */
    @ApiModelProperty("差旅地址省名称")
    @Excel(name = "差旅地址省名称")
    private String travelprovincename;
    /** å¸‚编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表 */
    /**
     * å¸‚编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("市编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    @Excel(name = "市编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String travelcity;
    /** å¸‚名称 */
    /**
     * å¸‚名称
     */
    @ApiModelProperty("市名称")
    @Excel(name = "市名称")
    private String travelcityname;
    /** æ‰€å±žè¡—道(镇)根据行政区划表 */
    /**
     * æ‰€å±žè¡—道(镇)根据行政区划表
     */
    @ApiModelProperty("所属街道(镇)根据行政区划表")
    @Excel(name = "所属街道(镇)根据行政区划表")
    private String traveltown;
    /** æ‰€å±žè¡—道(镇)名称 */
    /**
     * æ‰€å±žè¡—道(镇)名称
     */
    @ApiModelProperty("所属街道(镇)名称")
    @Excel(name = "所属街道(镇)名称")
    private String traveltownname;
@@ -169,5 +222,6 @@
    private String persontype;
    private String personname;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementdetailVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,231 @@
package com.ruoyi.project.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * æŠ¥é”€ç”³è¯·æ˜Žç»†å¯¹è±¡ service_reimbursementdetail
 *
 * @author ruoyi
 * @date 2022-01-24
 */
@Data
@ApiModel("报销申请明细")
public class ServiceReimbursementdetailVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
     */
    @ApiModelProperty("主键ID")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * èµ„金申请主表ID
     */
    @ApiModelProperty("资金申请主表ID")
    @Excel(name = "资金申请主表ID")
    private Long rbid;
    /**
     * å‡ºå‘æ—¶é—´
     */
    @ApiModelProperty("出发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "出发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date starttime;
    /**
     * å‡ºå‘地点
     */
    @ApiModelProperty("出发地点")
    @Excel(name = "出发地点")
    private String departure;
    /**
     * åˆ°è¾¾æ—¶é—´
     */
    @ApiModelProperty("到达时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "到达时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endtime;
    /**
     * åˆ°è¾¾åœ°ç‚¹
     */
    @ApiModelProperty("到达地点")
    @Excel(name = "到达地点")
    private String destination;
    /**
     * å¤©æ•°
     */
    @ApiModelProperty("天数")
    @Excel(name = "天数")
    private Long days;
    /**
     * äº¤é€šè´¹
     */
    @ApiModelProperty("交通费")
    @Excel(name = "交通费")
    private BigDecimal trafficexpense;
    /**
     * äº¤é€šå·¥å…·
     */
    @ApiModelProperty("交通工具")
    @Excel(name = "交通工具")
    private String traffictype;
    /**
     * äº¤é€šå·¥å…·
     */
    @ApiModelProperty("交通工具")
    @Excel(name = "交通工具")
    private String traffictype2;
    /**
     * å¸‚内交通费
     */
    @ApiModelProperty("市内交通费")
    @Excel(name = "市内交通费")
    private BigDecimal cityfee;
    /**
     * ä½å®¿è´¹
     */
    @ApiModelProperty("住宿费")
    @Excel(name = "住宿费")
    private BigDecimal hotelexpense;
    /**
     * å‘票张数
     */
    @ApiModelProperty("发票张数")
    @Excel(name = "发票张数")
    private Long invoicecount;
    /**
     * é™„ä»¶å¼ æ•°
     */
    @ApiModelProperty("附件张数")
    @Excel(name = "附件张数")
    private Long attachcount;
    /**
     * æ‚è´¹
     */
    @ApiModelProperty("杂费")
    @Excel(name = "杂费")
    private BigDecimal otherexpense;
    /**
     * ä¼™é£Ÿè´¹
     */
    @ApiModelProperty("伙食费")
    @Excel(name = "伙食费")
    private BigDecimal foodexpenses;
    /**
     * ä¼™é£Ÿè´¹è¡¥åŠ©
     */
    @ApiModelProperty("伙食费补助")
    @Excel(name = "伙食费补助")
    private BigDecimal foodallowance;
    /**
     * é™„件表
     */
    @ApiModelProperty("附件表")
    @Excel(name = "附件表")
    private String annexfiles;
    /**
     * é™„件集合表
     */
    private List annexfilesList;
    /**
     * ä¸Šä¼ æ ‡è¯†
     */
    @ApiModelProperty("上传标识")
    @Excel(name = "上传标识")
    private String uploadFlag;
    /**
     * ä¸Šä¼ æ—¶é—´
     */
    @ApiModelProperty("上传时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "上传时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date uploadTime;
    private String remark;
    /**
     * å·®æ—…地址省代码
     */
    @ApiModelProperty("差旅地址省代码")
    @Excel(name = "差旅地址省代码")
    private String travelprovince;
    /**
     * å·®æ—…地址省名称
     */
    @ApiModelProperty("差旅地址省名称")
    @Excel(name = "差旅地址省名称")
    private String travelprovincename;
    /**
     * å¸‚编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("市编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    @Excel(name = "市编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String travelcity;
    /**
     * å¸‚名称
     */
    @ApiModelProperty("市名称")
    @Excel(name = "市名称")
    private String travelcityname;
    /**
     * æ‰€å±žè¡—道(镇)根据行政区划表
     */
    @ApiModelProperty("所属街道(镇)根据行政区划表")
    @Excel(name = "所属街道(镇)根据行政区划表")
    private String traveltown;
    /**
     * æ‰€å±žè¡—道(镇)名称
     */
    @ApiModelProperty("所属街道(镇)名称")
    @Excel(name = "所属街道(镇)名称")
    private String traveltownname;
    private BigDecimal otherfeeamount;
    private String otherfeedesc;
    private Integer orderno;
    private String persontype;
    private String personname;
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceReimbursementService.java
@@ -1,25 +1,23 @@
package com.ruoyi.project.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceReimbursement;
import com.ruoyi.project.domain.ServiceReimbursementEo;
import com.ruoyi.project.domain.ServiceReimbursementdetail;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
import com.ruoyi.project.domain.vo.SpFinancialExpensesReimbursementOut;
/**
 * æŠ¥é”€ç”³è¯·Service接口
 *
 *
 * @author ruoyi
 * @date 2022-01-24
 */
public interface IServiceReimbursementService extends IService<ServiceReimbursement>
{
public interface IServiceReimbursementService extends IService<ServiceReimbursement> {
    /**
     * æŸ¥è¯¢æŠ¥é”€ç”³è¯·åˆ—表
     *
     *
     * @param serviceReimbursement æŠ¥é”€ç”³è¯·
     * @return æŠ¥é”€ç”³è¯·é›†åˆ
     */
@@ -27,10 +25,11 @@
    Long getMaxId();
    List<ServiceReimbursementdetail> getRBDetailList(Long id);
    List<ServiceReimbursementdetailVO> getRBDetailList(Long id);
    /**
     * æ–°å¢žå¤‡ä»½æ•°æ®
     *
     * @param id
     * @return
     */
@@ -39,11 +38,12 @@
    List<ServiceReimbursement> selectSearchList(ServiceReimbursementDto serviceReimbursementdto);
    List<SpFinancialExpensesReimbursementOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT,Integer CHECKFLAG,Integer APPLYTYPE);
    List<SpFinancialExpensesReimbursementOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE);
    List<ServiceReimbursement> getInfoByInfoId(Long infoid);
    List<ServiceReimbursement> getInfoByInfoIdRelatives(Long infoid);
    List<ServiceReimbursementEo> getRDInfoByItem(ServiceReimbursementEo serviceReimbursementEo);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
@@ -1,9 +1,11 @@
package com.ruoyi.project.service.impl;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.config.RuoYiConfig;
@@ -114,8 +116,26 @@
    }
    @Override
    public List<ServiceReimbursementdetail> getRBDetailList(Long id) {
        return serviceReimbursementdetailMapper.getRBDetailList(id);
    public List<ServiceReimbursementdetailVO> getRBDetailList(Long id) {
        List<ServiceReimbursementdetailVO> serviceReimbursementdetailVOS = new ArrayList<>();
        List<ServiceReimbursementdetail> rbDetailList = serviceReimbursementdetailMapper.getRBDetailList(id);
        for (int j = 0; j < rbDetailList.size(); j++) {
            ServiceReimbursementdetail serviceReimbursementdetail = rbDetailList.get(j);
            String annexfiles = serviceReimbursementdetail.getAnnexfiles();
            ServiceReimbursementdetailVO serviceReimbursementdetailVO = DtoConversionUtils.sourceToTarget(serviceReimbursementdetail, ServiceReimbursementdetailVO.class);
            if (StringUtils.isNotBlank(annexfiles)) {
                try {
                    serviceReimbursementdetailVO.setAnnexfilesList(JSON.parseArray(annexfiles));
                } catch (Exception e) {
                    if (e.getMessage().equals("invalid comment")) {
                        log.error("报异常了,老大不让我处理");
                    }
                }
            }
            serviceReimbursementdetailVOS.add(serviceReimbursementdetailVO);
        }
        return serviceReimbursementdetailVOS;
    }
    @Override
@@ -136,14 +156,17 @@
        List<ServiceReimbursementpayeeShared> serviceReimbursementpayeeShareds = DtoConversionUtils.sourceToTarget(serviceReimbursementpayees, ServiceReimbursementpayeeShared.class);
        //将组装好的数据插入到分享表中
        sharedService.save(serviceReimbursementShared);
        //上传OA文件
        uploadOAFileAndUpdateDb(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);
            //上传OA文件
            uploadOAFileAndUpdateDb(serviceReimbursementdetailShareds.get(i));
        }
        detailSharedService.saveBatch(serviceReimbursementdetailShareds);
        //将serviceReimbursementpayee表里的id赋值给Rpid; å°†serviceReimbursementShared里的ID赋值给RBID,并将serviceReimbursementpayeeShared表里的id置空,由数据库重新生成
@@ -182,14 +205,12 @@
        return serviceReimbursementMapper.getRDInfoByItem(serviceReimbursementEo);
    }
    int uploadOAFileAndUpdateDb(ServiceReimbursementShared remShare) {
    public int uploadOAFileAndUpdateDb(ServiceReimbursementdetailShared 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");
@@ -205,106 +226,162 @@
        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 = "";
        List<RbDetailFile> parseArray2 = new ArrayList<>();
        List<RbDetailFile> parseArray = JSON.parseArray(remShare.getAnnexfiles(), RbDetailFile.class);
        for (int i = 0; i < parseArray.size(); i++) {
            RbDetailFile rbDetailFile = parseArray.get(i);
            String strFile = rbDetailFile.getUrl().replaceAll("/profile/upload", filePath);
            File filetest = new File(strFile);
            try {
                struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
                String struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
                if (StringUtils.isEmpty(struploadResult)) {
                    log.info("HttpClientKit.sendPostWithFile è¯·æ±‚为空了 filetest:{},  strFUrl:{} ",filetest,strFUrl);
                    return 0;
                }
                //获取fileid
                JSONObject jsonR = JSONObject.parseObject(struploadResult);
                JSONArray jsonArr = jsonR.getJSONArray("atts");
                for (int j = 0; j < jsonArr.size(); j++) {
                    JSONObject jsonRet = jsonArr.getJSONObject(j);
                    rbDetailFile.setFileid(jsonRet.get("fileUrl").toString());
                }
            } catch (Exception e) {
                e.printStackTrace();
                log.error("HttpClientKit.sendPostWithFile æŠ¥é”™äº† : " + e.getMessage());
            }
            /*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 += ",";
                }
            }
            parseArray2.add(rbDetailFile);
        }
        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;
        remShare.setAnnexfiles(JSON.toJSONString(parseArray2));
        log.info("ServiceReimbursementdetailShared æ˜¯å¦åŠ ä¸Šäº†fileid : {}",remShare);
        return 0;
    }
//    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;
//    }
}