|  |  | 
 |  |  | package com.ruoyi.web.controller.project; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSONArray; | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; | 
 |  |  | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
 |  |  | import com.ruoyi.common.annotation.Log; | 
 |  |  | import com.ruoyi.common.annotation.NotRepeatCommit; | 
 |  |  | import com.ruoyi.common.annotation.RepeatSubmit; | 
 |  |  | import com.ruoyi.common.config.RuoYiConfig; | 
 |  |  | import com.ruoyi.common.constant.HttpStatus; | 
 |  |  | import com.ruoyi.common.core.controller.BaseController; | 
 |  |  | import com.ruoyi.common.core.domain.AjaxResult; | 
 |  |  | import com.ruoyi.common.core.domain.entity.SysDept; | 
 |  |  | import com.ruoyi.common.core.domain.entity.SysUser; | 
 |  |  | import com.ruoyi.common.core.domain.model.LoginUser; | 
 |  |  | import com.ruoyi.common.core.page.TableDataInfo; | 
 |  |  | import com.ruoyi.common.enums.BusinessType; | 
 |  |  | import com.ruoyi.common.exception.ServiceException; | 
 |  |  | import com.ruoyi.common.utils.HttpClientKit; | 
 |  |  | import com.ruoyi.common.exception.base.BaseException; | 
 |  |  | import com.ruoyi.common.tax.TaxtUtils; | 
 |  |  | import com.ruoyi.common.utils.SecurityUtils; | 
 |  |  | import com.ruoyi.common.utils.StringUtils; | 
 |  |  | import com.ruoyi.common.utils.bean.DtoConversionUtils; | 
 |  |  | import com.ruoyi.common.utils.poi.ExcelUtil; | 
 |  |  | import com.ruoyi.project.domain.*; | 
 |  |  | import com.ruoyi.project.domain.vo.*; | 
 |  |  | import com.ruoyi.project.mapper.ServiceFunddetailMapper; | 
 |  |  | import com.ruoyi.project.service.*; | 
 |  |  | import com.ruoyi.system.service.ISysDeptService; | 
 |  |  | import com.ruoyi.system.service.ISysPostService; | 
 |  |  | import freemarker.template.Configuration; | 
 |  |  | import freemarker.template.Template; | 
 |  |  | import freemarker.template.TemplateException; | 
 |  |  | import io.swagger.annotations.Api; | 
 |  |  | import io.swagger.annotations.ApiOperation; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.ibatis.annotations.Options; | 
 |  |  | import org.apache.poi.ss.formula.functions.T; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.jdbc.datasource.DataSourceTransactionManager; | 
 |  |  | import org.springframework.transaction.TransactionDefinition; | 
 |  |  | import org.springframework.transaction.TransactionStatus; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.util.CollectionUtils; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.io.*; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.time.LocalDate; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | import static com.ruoyi.web.controller.project.ServiceReimbursementController.convert; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 费用申请主Controller | 
 |  |  |  *  | 
 |  |  |  * | 
 |  |  |  * @author ruoyi | 
 |  |  |  * @date 2022-01-24 | 
 |  |  |  */ | 
 |  |  | @Slf4j | 
 |  |  | @Api("费用申请主") | 
 |  |  | @RestController | 
 |  |  | @RequestMapping("/project/fund") | 
 |  |  | public class ServiceFundController extends BaseController | 
 |  |  | { | 
 |  |  | public class ServiceFundController extends BaseController { | 
 |  |  |     private static Configuration configuration = null; | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceFundService serviceFundService; | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceFundSharedService fundSharedService; | 
 |  |  |     @Autowired | 
 |  |  |     private ServiceFunddetailMapper serviceFunddetailMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceFunddetailService serviceFunddetailService; | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceFunddetailSharedService funddetailSharedService; | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceFundflowruleService serviceFundflowruleService; | 
 |  |  |     @Autowired | 
 |  |  | 
 |  |  |     private IServiceSystemmessageService ServiceSystemmessage; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceFundSharedService fundServiceShare; | 
 |  |  |     private IBaseOnlyvalueService baseOnlyvalueService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private IServiceExternalpersonService externalpersonService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ISysPostService postService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private DataSourceTransactionManager transactionManager; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private TransactionDefinition transactionDefinition; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ISysDeptService sysDeptService; | 
 |  |  |  | 
 |  |  |     public ServiceFundController() { | 
 |  |  |         configuration = new Configuration(); | 
 |  |  | 
 |  |  |     @ApiOperation("查询费用申请主列表") | 
 |  |  |     //@PreAuthorize("@ss.hasPermi('project:fund:list')") | 
 |  |  |     @GetMapping("/list") | 
 |  |  |     public TableDataInfo list(ServiceFund serviceFund) | 
 |  |  |     { | 
 |  |  |     public TableDataInfo list(ServiceFund serviceFund) { | 
 |  |  |         startPage(); | 
 |  |  |         //List<ServiceFund> list = serviceFundService.queryList(serviceFund); | 
 |  |  |         SysUser user = SecurityUtils.getLoginUser().getUser(); | 
 |  |  |         serviceFund.setUsername(user.getNickName()); | 
 |  |  |         List<ServiceFund> list = serviceFundService.selectServiceFundList(serviceFund); | 
 |  |  |         return getDataTable(list); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @GetMapping("/listnew") | 
 |  |  |     public TableDataInfo listnew(FundVO fundVO){ | 
 |  |  |     public TableDataInfo listnew(FundVO fundVO) { | 
 |  |  |         startPage(); | 
 |  |  |         List<FundVO> list = serviceFundService.selectVOList(fundVO); | 
 |  |  |         return getDataTable(list); | 
 |  |  | 
 |  |  |     @ApiOperation("根据权限显示审核列表") | 
 |  |  |     @Log(title = "根据权限显示审核列表", businessType = BusinessType.OTHER) | 
 |  |  |     @GetMapping("/listbypower") | 
 |  |  |     public TableDataInfo getListBypower(SpFinancialExpensesIn spFinancialExpensesIn) | 
 |  |  |     { | 
 |  |  |     public TableDataInfo getListBypower(SpFinancialExpensesIn spFinancialExpensesIn) { | 
 |  |  |         LoginUser loginUser = getLoginUser(); | 
 |  |  |  | 
 |  |  |         String APPLICANT=spFinancialExpensesIn.getAPPLICANT(); | 
 |  |  |         String APPLICATIONBEGTIME=spFinancialExpensesIn.getAPPLICATIONBEGTIME(); | 
 |  |  |         String APPLICATIONENDTIME=spFinancialExpensesIn.getAPPLICATIONENDTIME(); | 
 |  |  |         Integer CHECKFLAG=spFinancialExpensesIn.getCHECKFLAG(); | 
 |  |  |         Integer APPLYTYPE=spFinancialExpensesIn.getAPPLYTYPE(); | 
 |  |  |         Integer pageNum=spFinancialExpensesIn.getPageNum(); | 
 |  |  |         Integer pageSize=spFinancialExpensesIn.getPageSize(); | 
 |  |  |         String APPLICANT = spFinancialExpensesIn.getAPPLICANT(); | 
 |  |  |         String APPLICATIONBEGTIME = spFinancialExpensesIn.getAPPLICATIONBEGTIME(); | 
 |  |  |         String APPLICATIONENDTIME = spFinancialExpensesIn.getAPPLICATIONENDTIME(); | 
 |  |  |         Integer CHECKFLAG = spFinancialExpensesIn.getCHECKFLAG(); | 
 |  |  |         Integer APPLYTYPE = spFinancialExpensesIn.getAPPLYTYPE(); | 
 |  |  |         Integer pageNum = spFinancialExpensesIn.getPageNum(); | 
 |  |  |         Integer pageSize = spFinancialExpensesIn.getPageSize(); | 
 |  |  |         Integer checkstatus = spFinancialExpensesIn.getCheckstatus(); | 
 |  |  |  | 
 |  |  |         if(pageNum==null) | 
 |  |  |         { | 
 |  |  |             pageNum=1; | 
 |  |  |         String donorname = spFinancialExpensesIn.getDonorname(); | 
 |  |  |         if (StringUtils.isEmpty(donorname)) { | 
 |  |  |             donorname = null; | 
 |  |  |         } | 
 |  |  |         if (pageNum == null) { | 
 |  |  |             pageNum = 1; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if(pageSize==null) | 
 |  |  |         { | 
 |  |  |             pageSize=10; | 
 |  |  |         if (pageSize == null) { | 
 |  |  |             pageSize = 10; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if(APPLICANT==null) | 
 |  |  |         { | 
 |  |  |             APPLICANT=""; | 
 |  |  |         if (APPLICANT == null) { | 
 |  |  |             APPLICANT = ""; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if(APPLICATIONBEGTIME==null) | 
 |  |  |         { | 
 |  |  |             APPLICATIONBEGTIME=""; | 
 |  |  |         if (APPLICATIONBEGTIME == null) { | 
 |  |  |             APPLICATIONBEGTIME = ""; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if(APPLICATIONENDTIME==null) | 
 |  |  |         { | 
 |  |  |             APPLICATIONENDTIME=""; | 
 |  |  |         if (APPLICATIONENDTIME == null) { | 
 |  |  |             APPLICATIONENDTIME = ""; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //startPage(); | 
 |  |  |         List<SpFinancialExpensesFundOut> list = serviceFundService.getListBypower(loginUser.getUsername(),2,APPLICANT,APPLICATIONBEGTIME,APPLICATIONENDTIME,loginUser.getDeptId().toString(),CHECKFLAG,APPLYTYPE); | 
 |  |  |         //return getDataTable(list); | 
 |  |  |         return getCustomDataTable(list,pageNum,pageSize); | 
 |  |  |         List<SpFinancialExpensesFundOut> list = serviceFundService.getListBypower(loginUser.getUsername(), 2, APPLICANT, APPLICATIONBEGTIME, APPLICATIONENDTIME, loginUser.getDeptId().toString(), CHECKFLAG, APPLYTYPE, checkstatus, donorname); | 
 |  |  |         //通过捐献者过滤 | 
 |  |  |         if (StringUtils.isNotEmpty(spFinancialExpensesIn.getDonorname())) { | 
 |  |  |             list = list.stream().filter(obj -> obj.getDonorname().contains(spFinancialExpensesIn.getDonorname())).collect(Collectors.toList()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //通过金额过滤 | 
 |  |  |         if (spFinancialExpensesIn.getMoney() != null) { | 
 |  |  |             list = list.stream().filter(reimbursementOut -> new BigDecimal(reimbursementOut.getPretaxcost()).compareTo(new BigDecimal(spFinancialExpensesIn.getMoney())) == 0).collect(Collectors.toList()); | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Collections.sort(list, new Comparator<SpFinancialExpensesFundOut>() { | 
 |  |  |             @Override | 
 |  |  |             public int compare(SpFinancialExpensesFundOut o1, SpFinancialExpensesFundOut o2) { | 
 |  |  |                 return o1.getCreateTime().compareTo(o2.getCreateTime()); | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |         return getCustomDataTable(list, pageNum, pageSize); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation("查询费用申请主列表") | 
 |  |  |     //@PreAuthorize("@ss.hasPermi('project:fund:list')") | 
 |  |  |     @GetMapping(value = "/getInfo/{infoid}") | 
 |  |  |     public AjaxResult getInfoByInfoId(@PathVariable("infoid") Long infoid) | 
 |  |  |     { | 
 |  |  |     public AjaxResult getInfoByInfoId(@PathVariable("infoid") Long infoid) { | 
 |  |  |         return AjaxResult.success(serviceFundService.getInfoByInfoId(infoid)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @GetMapping("/getFundId/{infoid}") | 
 |  |  |     public AjaxResult getFundId(@PathVariable("infoid") Long infoid){ | 
 |  |  |     public AjaxResult getFundId(@PathVariable("infoid") Long infoid) { | 
 |  |  |         return AjaxResult.success(serviceFundService.getFundId(infoid)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @GetMapping("/getFundDetail/{id}") | 
 |  |  |     public AjaxResult getFundDetail(@PathVariable("id") Long id){ | 
 |  |  |         return AjaxResult.success(serviceFundService.getFundDetail(id)); | 
 |  |  |     } | 
 |  |  | //    @GetMapping("/addFundSharedInfo/{id}") | 
 |  |  | //    public AjaxResult addFundSharedInfo(@PathVariable("id") Long id) { | 
 |  |  | //        return AjaxResult.success(serviceFundService.addFundSharedInfo(id)); | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 导出费用申请主列表 | 
 |  |  | 
 |  |  |     //@PreAuthorize("@ss.hasPermi('project:fund:export')") | 
 |  |  |     @Log(title = "费用申请主", businessType = BusinessType.EXPORT) | 
 |  |  |     @GetMapping("/export") | 
 |  |  |     public AjaxResult export(ServiceFund serviceFund) | 
 |  |  |     { | 
 |  |  |     public AjaxResult export(ServiceFund serviceFund) { | 
 |  |  |         List<ServiceFund> list = serviceFundService.queryList(serviceFund); | 
 |  |  |         ExcelUtil<ServiceFund> util = new ExcelUtil<ServiceFund>(ServiceFund.class); | 
 |  |  |         return util.exportExcel(list, "费用申请主数据"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |     @ApiOperation("获取费用申请主详细信息") | 
 |  |  |     //@PreAuthorize("@ss.hasPermi('project:fund:query')") | 
 |  |  |     @GetMapping(value = "/{id}") | 
 |  |  |     public AjaxResult getInfo(@PathVariable("id") Long id) | 
 |  |  |     { | 
 |  |  |     public AjaxResult getInfo(@PathVariable("id") Long id) { | 
 |  |  |         return AjaxResult.success(serviceFundService.getById(id)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     @ApiOperation("新增费用申请主") | 
 |  |  |     //@PreAuthorize("@ss.hasPermi('project:fund:add')") | 
 |  |  |     @Log(title = "费用申请主", businessType = BusinessType.INSERT) | 
 |  |  |     @PostMapping | 
 |  |  |     @PostMapping("/add") | 
 |  |  |     @RepeatSubmit | 
 |  |  |     @Options(useGeneratedKeys = true, keyProperty = "id") | 
 |  |  |     public AjaxResult add(@RequestBody ServiceFund serviceFund) | 
 |  |  |     { | 
 |  |  |     public AjaxResult add(@RequestBody ServiceFund serviceFund) { | 
 |  |  |         boolean b = serviceFundService.save(serviceFund); | 
 |  |  |         Long id = serviceFund.getId(); | 
 |  |  |         if(b) | 
 |  |  |         { | 
 |  |  |             addReiSharedDatd(serviceFund,1); | 
 |  |  |         } | 
 |  |  | //        if (b) { | 
 |  |  | //            addReiSharedDatd(serviceFund, 1); | 
 |  |  | //        } | 
 |  |  |         return AjaxResult.success(id); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public  int addReiSharedDatd(ServiceFund serviceFund,int nType) | 
 |  |  |     { | 
 |  |  |         //remShare = ; | 
 |  |  |         ServiceFundShared remShare = null; | 
 |  |  |         if(nType == 1) | 
 |  |  |         { | 
 |  |  |             remShare = new ServiceFundShared(); | 
 |  |  |             remShare.setSerfunid(serviceFund.getId()); | 
 |  |  |         } | 
 |  |  |         else //modify | 
 |  |  |         { | 
 |  |  |             List<ServiceFundShared> remlist = fundServiceShare.getFundShareInfoById(serviceFund.getId()); | 
 |  |  |             if(remlist!=null) | 
 |  |  |                 remShare =remlist.get(0); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         remShare.setDonorno(serviceFund.getDonorno()); | 
 |  |  |         remShare.setDonorname(serviceFund.getDonorname()); | 
 |  |  |         remShare.setUserno(serviceFund.getUserno()); | 
 |  |  |         remShare.setUsername(serviceFund.getUsername()); | 
 |  |  |         remShare.setUnitname(serviceFund.getUnitname()); | 
 |  |  |         remShare.setUnitno(serviceFund.getUnitno()); | 
 |  |  |         remShare.setUnituserno(serviceFund.getUnituserno()); | 
 |  |  |         remShare.setPhone(serviceFund.getPhone()); | 
 |  |  |         remShare.setAnnexbankcard(serviceFund.getAnnexbankcard()); | 
 |  |  |         remShare.setAnnexregistform(serviceFund.getAnnexregistform()); | 
 |  |  |         Double nTemp= serviceFund.getPretaxcost(); | 
 |  |  |         if( nTemp == null) nTemp = 0d; | 
 |  |  |         remShare.setPretaxcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |         //remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles()); | 
 |  |  |         // remShare.setAmountrequested(BigDecimal.valueOf(serviceReimbursement.getAmountrequested())); | 
 |  |  |  | 
 |  |  |         nTemp= serviceFund.getTaxedcost(); | 
 |  |  |         if( nTemp == null) nTemp = 0d; | 
 |  |  |         remShare.setTaxedcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getTotalcost(); | 
 |  |  |         if( nTemp == null) nTemp = 0d; | 
 |  |  |         remShare.setTotalcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getExpertcost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setExpertcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getEthicscost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setEthicscost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getMedicalcost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setMedicalcost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getFamilycost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setFamilycost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getAftercarecost(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setAftercarecost(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getAmountrequested(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setAmountrequested(BigDecimal.valueOf(nTemp)); | 
 |  |  | //    public int addReiSharedDatd(ServiceFund serviceFund, int nType) { | 
 |  |  | //        //remShare = ; | 
 |  |  | //        ServiceFundShared remShare = null; | 
 |  |  | //        if (nType == 1) { | 
 |  |  | //            remShare = new ServiceFundShared(); | 
 |  |  | //            remShare.setSerfunid(serviceFund.getId()); | 
 |  |  | //        } else //modify | 
 |  |  | //        { | 
 |  |  | //            List<ServiceFundShared> remlist = fundServiceShare.getFundShareInfoById(serviceFund.getId()); | 
 |  |  | //            if (remlist != null) remShare = remlist.get(0); | 
 |  |  | //        } | 
 |  |  | // | 
 |  |  | //        remShare.setDonorno(serviceFund.getDonorno()); | 
 |  |  | //        remShare.setDonorname(serviceFund.getDonorname()); | 
 |  |  | //        remShare.setUserno(serviceFund.getUserno()); | 
 |  |  | //        remShare.setUsername(serviceFund.getUsername()); | 
 |  |  | //        remShare.setUnitname(serviceFund.getUnitname()); | 
 |  |  | //        remShare.setUnitno(serviceFund.getUnitno()); | 
 |  |  | //        remShare.setUnituserno(serviceFund.getUnituserno()); | 
 |  |  | //        remShare.setPhone(serviceFund.getPhone()); | 
 |  |  | //        remShare.setAnnexbankcard(serviceFund.getAnnexbankcard()); | 
 |  |  | //        remShare.setAnnexregistform(serviceFund.getAnnexregistform()); | 
 |  |  | //        Double nTemp = serviceFund.getPretaxcost(); | 
 |  |  | //        if (nTemp == null) nTemp = 0d; | 
 |  |  | //        remShare.setPretaxcost(BigDecimal.valueOf(nTemp)); | 
 |  |  | //        //remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles()); | 
 |  |  | //        // remShare.setAmountrequested(BigDecimal.valueOf(serviceReimbursement.getAmountrequested())); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getTaxedcost(); | 
 |  |  | //        if (nTemp == null) nTemp = 0d; | 
 |  |  | //        remShare.setTaxedcost(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getTotalcost(); | 
 |  |  | //        if (nTemp == null) nTemp = 0d; | 
 |  |  | //        remShare.setTotalcost(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getExpertcost(); | 
 |  |  | //        if (nTemp == null) nTemp = 0.0; | 
 |  |  | //        remShare.setExpertcost(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getEthicscost(); | 
 |  |  | //        if (nTemp == null) nTemp = 0.0; | 
 |  |  | //        remShare.setEthicscost(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getMedicalcost(); | 
 |  |  | //        if (nTemp == null) nTemp = 0.0; | 
 |  |  | //        remShare.setMedicalcost(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getFamilycost(); | 
 |  |  | //        if (nTemp == null) nTemp = 0.0; | 
 |  |  | //        remShare.setFamilycost(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getAftercarecost(); | 
 |  |  | //        if (nTemp == null) nTemp = 0.0; | 
 |  |  | //        remShare.setAftercarecost(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getAmountrequested(); | 
 |  |  | //        if (nTemp == null) nTemp = 0.0; | 
 |  |  | //        remShare.setAmountrequested(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | // | 
 |  |  | //        remShare.setApplytype(serviceFund.getApplytype()); | 
 |  |  | // | 
 |  |  | //        nTemp = serviceFund.getPrepaidamount(); | 
 |  |  | //        if (nTemp == null) nTemp = 0.0; | 
 |  |  | //        remShare.setPrepaidamount(BigDecimal.valueOf(nTemp)); | 
 |  |  | // | 
 |  |  | //        remShare.setInvoicecount(serviceFund.getInvoicecount()); | 
 |  |  | //        remShare.setAttachcount(serviceFund.getAttachcount()); | 
 |  |  | //        remShare.setManagerno(serviceFund.getManagerno()); | 
 |  |  | //        remShare.setManagername(serviceFund.getManagername()); | 
 |  |  | //        remShare.setDeptmentno(serviceFund.getDeptmentno()); | 
 |  |  | //        remShare.setDeptmentname(serviceFund.getDeptmentname()); | 
 |  |  | //        remShare.setOpochecker(serviceFund.getOpochecker()); | 
 |  |  | //        remShare.setFinvicepresident(serviceFund.getFinvicepresident()); | 
 |  |  | //        remShare.setBusvicepresident(serviceFund.getBusvicepresident()); | 
 |  |  | //        remShare.setOfficedirector(serviceFund.getOfficedirector()); | 
 |  |  | //        remShare.setFinancedirector(serviceFund.getFinancedirector()); | 
 |  |  | //        remShare.setFinancechecher(serviceFund.getFinancechecher()); | 
 |  |  | //        //remShare.setIsdistribute(serviceFund.getIsdistribute()); | 
 |  |  | //        remShare.setRecordstatus(serviceFund.getRecordstatus()); | 
 |  |  | //        remShare.setUploadflag(serviceFund.getUploadflag()); | 
 |  |  | //        remShare.setUploadtime(serviceFund.getUploadtime()); | 
 |  |  | //        long nLevel = serviceFund.getFlowlevel(); | 
 |  |  | //        remShare.setFlowlevel(nLevel); | 
 |  |  | // | 
 |  |  | //        remShare.setInfoid(serviceFund.getInfoid()); | 
 |  |  | // | 
 |  |  | //        //remShare.setOaid(serviceReimbursement.getOaid()); | 
 |  |  | //        //remShare.setDonorno(serviceReimbursement.getDonorno()); | 
 |  |  | // | 
 |  |  | //        boolean bRet = false; | 
 |  |  | //        if (nType == 1) { | 
 |  |  | //            bRet = fundServiceShare.save(remShare); | 
 |  |  | //        } else { | 
 |  |  | //            //remShare.setId(serviceReimbursement.); | 
 |  |  | //            bRet = fundServiceShare.updateById(remShare); | 
 |  |  | //        } | 
 |  |  | // | 
 |  |  | //        //if(!bRet) return -1; | 
 |  |  | //        String strMutfileUrl = remShare.getAnnexbankcard(); | 
 |  |  | //        //有附件时才调用第三方进行上传 | 
 |  |  | //        if (strMutfileUrl == null) return 0; | 
 |  |  | //        if (strMutfileUrl.isEmpty()) return 0; | 
 |  |  | // | 
 |  |  | //        try { | 
 |  |  | //            uploadOAFileAndUpdateDb(remShare); | 
 |  |  | //        } catch (Exception e) { | 
 |  |  | //            logger.error("调用第三方接口出错!"); | 
 |  |  | //            e.printStackTrace(); | 
 |  |  | //        } | 
 |  |  | // | 
 |  |  | //        //此处保存成功后要上传OA,保存返回值 | 
 |  |  | // | 
 |  |  | //        return 0; | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         remShare.setApplytype(serviceFund.getApplytype()); | 
 |  |  |  | 
 |  |  |         nTemp = serviceFund.getPrepaidamount(); | 
 |  |  |         if(nTemp == null) nTemp = 0.0; | 
 |  |  |         remShare.setPrepaidamount(BigDecimal.valueOf(nTemp)); | 
 |  |  |  | 
 |  |  |         remShare.setInvoicecount(serviceFund.getInvoicecount()); | 
 |  |  |         remShare.setAttachcount(serviceFund.getAttachcount()); | 
 |  |  |         remShare.setManagerno(serviceFund.getManagerno()); | 
 |  |  |         remShare.setManagername(serviceFund.getManagername()); | 
 |  |  |         remShare.setDeptmentno(serviceFund.getDeptmentno()); | 
 |  |  |         remShare.setDeptmentname(serviceFund.getDeptmentname()); | 
 |  |  |         remShare.setOpochecker(serviceFund.getOpochecker()); | 
 |  |  |         remShare.setFinvicepresident(serviceFund.getFinvicepresident()); | 
 |  |  |         remShare.setBusvicepresident(serviceFund.getBusvicepresident()); | 
 |  |  |         remShare.setOfficedirector(serviceFund.getOfficedirector()); | 
 |  |  |         remShare.setFinancedirector(serviceFund.getFinancedirector()); | 
 |  |  |         remShare.setFinancechecher(serviceFund.getFinancechecher()); | 
 |  |  |         //remShare.setIsdistribute(serviceFund.getIsdistribute()); | 
 |  |  |         remShare.setRecordstatus(serviceFund.getRecordstatus()); | 
 |  |  |         remShare.setUploadflag(serviceFund.getUploadflag()); | 
 |  |  |         remShare.setUploadtime(serviceFund.getUploadtime()); | 
 |  |  |         long nLevel = serviceFund.getFlowlevel(); | 
 |  |  |         remShare.setFlowlevel(nLevel); | 
 |  |  |  | 
 |  |  |         remShare.setInfoid(serviceFund.getInfoid()); | 
 |  |  |  | 
 |  |  |         //remShare.setOaid(serviceReimbursement.getOaid()); | 
 |  |  |         //remShare.setDonorno(serviceReimbursement.getDonorno()); | 
 |  |  |  | 
 |  |  |         boolean bRet = false; | 
 |  |  |         if(nType==1) | 
 |  |  |         { | 
 |  |  |             bRet = fundServiceShare.save(remShare); | 
 |  |  |         } | 
 |  |  |         else | 
 |  |  |         { | 
 |  |  |             //remShare.setId(serviceReimbursement.); | 
 |  |  |             bRet = fundServiceShare.updateById(remShare); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //if(!bRet) return -1; | 
 |  |  |         String strMutfileUrl = remShare.getAnnexbankcard(); | 
 |  |  |         //有附件时才调用第三方进行上传 | 
 |  |  |         if(strMutfileUrl == null) return 0; | 
 |  |  |         if(strMutfileUrl.isEmpty()) return 0; | 
 |  |  |  | 
 |  |  |         try | 
 |  |  |         { | 
 |  |  |             uploadOAFileAndUpdateDb(remShare); | 
 |  |  |         } | 
 |  |  |         catch (Exception e) | 
 |  |  |         { | 
 |  |  |             logger.error("调用第三方接口出错!"); | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //此处保存成功后要上传OA,保存返回值 | 
 |  |  |  | 
 |  |  |         return  0; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     int uploadOAFileAndUpdateDb(ServiceFundShared 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.getAnnexbankcard();//可能存在多个地址,以,分开 | 
 |  |  |  | 
 |  |  |         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(); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             //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 = fundServiceShare.updateById(remShare); | 
 |  |  |         if(!bRet) return -1; | 
 |  |  |  | 
 |  |  |         return 0; | 
 |  |  |     } | 
 |  |  | //    int uploadOAFileAndUpdateDb(ServiceFundShared 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.getAnnexbankcard();//可能存在多个地址,以,分开 | 
 |  |  | // | 
 |  |  | //        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(); | 
 |  |  | //            } | 
 |  |  | // | 
 |  |  | // | 
 |  |  | //            //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 = fundServiceShare.updateById(remShare); | 
 |  |  | //        if (!bRet) return -1; | 
 |  |  | // | 
 |  |  | //        return 0; | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 新增费用汇总 | 
 |  |  |      */ | 
 |  |  |     @ApiOperation("新增费用汇总") | 
 |  |  |     @Log(title = "新增费用汇总", businessType = BusinessType.INSERT) | 
 |  |  |     @PostMapping("/addnew") | 
 |  |  |     @PostMapping("/addOrUpdateNew") | 
 |  |  |     @RepeatSubmit | 
 |  |  |     @Options(useGeneratedKeys = true, keyProperty = "id") | 
 |  |  |     public AjaxResult addnew(@RequestBody ServiceFundVO serviceFundVO) | 
 |  |  |     { | 
 |  |  |         boolean b = serviceFundService.save(serviceFundVO); | 
 |  |  |         Long id = serviceFundVO.getId(); | 
 |  |  |         if(b) | 
 |  |  |         { | 
 |  |  |             addReiSharedDatd(serviceFundVO,1); | 
 |  |  |         } | 
 |  |  |         List<ServiceFunddetail> serviceFunddetails=serviceFundVO.getServiceFunddetails(); | 
 |  |  |         serviceFunddetails.forEach(item->item.setFundid(id)); | 
 |  |  |         serviceFunddetailService.saveBatch(serviceFunddetails); | 
 |  |  |         return AjaxResult.success(id); | 
 |  |  |     public AjaxResult addOrUpdateNew(@RequestBody ServiceFundVO serviceFundVO) { | 
 |  |  |  | 
 |  |  |         return AjaxResult.success(serviceFundService.addOrUpdateNew(serviceFundVO)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 审核费用 | 
 |  |  |      */ | 
 |  |  |     @ApiOperation("审核费用") | 
 |  |  |     @Log(title = "审核费用", businessType = BusinessType.OTHER) | 
 |  |  |     @RepeatSubmit | 
 |  |  | //    @Log(title = "审核费用", businessType = BusinessType.OTHER) | 
 |  |  |     @PostMapping("/checkfund") | 
 |  |  |     public AjaxResult checkFund(@RequestBody CheckFundVO checkFundVO) | 
 |  |  |         { | 
 |  |  |             ServiceFund serviceFund= serviceFundService.getById(checkFundVO.getFundid()); | 
 |  |  |             if(serviceFund!=null) | 
 |  |  |             { | 
 |  |  |                 Integer TotalLevel=0; | 
 |  |  |                 LoginUser loginUser = getLoginUser(); | 
 |  |  |                 ServiceFundflowrule serviceFundflowrule=new ServiceFundflowrule(); | 
 |  |  |                 serviceFundflowrule.setFundtype(2); | 
 |  |  |                 serviceFundflowrule.setApplytype(serviceFund.getApplytype()); | 
 |  |  |                 serviceFundflowrule.setCheckuserno(loginUser.getUsername()); | 
 |  |  |                 List<ServiceFundflowrule> serviceFundflowrules= serviceFundflowruleService.queryList(serviceFundflowrule); | 
 |  |  |     public AjaxResult checkFund(@RequestBody CheckFundVO checkFundVO) { | 
 |  |  |         log.info("serviceFundController---checkFund的入参值checkFundVO :{}", checkFundVO); | 
 |  |  |         ServiceFund serviceFund = serviceFundService.getById(checkFundVO.getFundid()); | 
 |  |  |         if (serviceFund != null) { | 
 |  |  |             Integer TotalLevel = 0; | 
 |  |  |             LoginUser loginUser = getLoginUser(); | 
 |  |  |             ServiceFundflowrule serviceFundflowrule = new ServiceFundflowrule(); | 
 |  |  |             serviceFundflowrule.setFundtype(2); | 
 |  |  |             serviceFundflowrule.setApplytype(serviceFund.getApplytype()); | 
 |  |  |             serviceFundflowrule.setCheckuserno(loginUser.getUsername()); | 
 |  |  |             log.info("serviceFundController---checkFund---queryList的入参值serviceFundflowrule:{}", serviceFundflowrule); | 
 |  |  |             List<ServiceFundflowrule> serviceFundflowrules = serviceFundflowruleService.queryList(serviceFundflowrule); | 
 |  |  |  | 
 |  |  |                 if(serviceFundflowrules==null || serviceFundflowrules.stream().count()==0) | 
 |  |  |                 { | 
 |  |  |                     return AjaxResult.error(HttpStatus.ERROR,"当前人员无此记录审核权限"); | 
 |  |  |                 } | 
 |  |  |             if (serviceFundflowrules == null || serviceFundflowrules.stream().count() == 0) { | 
 |  |  |                 return AjaxResult.error(HttpStatus.ERROR, "当前人员无此记录审核权限"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |                 if(serviceFundflowrules.get(0).getFlowlevel()-1!=serviceFund.getFlowlevel()) | 
 |  |  |                 { | 
 |  |  |                     return AjaxResult.error(HttpStatus.ERROR,"当前人员与此记录的审核级别不符"); | 
 |  |  |                 } | 
 |  |  |             if (serviceFundflowrules.get(0).getFlowlevel() - 1 != serviceFund.getFlowlevel()) { | 
 |  |  |                 return AjaxResult.error(HttpStatus.ERROR, "当前人员与此记录的审核级别不符"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |                 if(serviceFundflowrules!=null && serviceFundflowrules.stream().count()>0) | 
 |  |  |                 { | 
 |  |  |                     TotalLevel=serviceFundflowrules.get(0).getTotallevel(); | 
 |  |  |                 } | 
 |  |  |             if (serviceFundflowrules != null && serviceFundflowrules.stream().count() > 0) { | 
 |  |  |                 TotalLevel = serviceFundflowrules.get(0).getTotallevel(); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |                 Integer CheckFlag=0; | 
 |  |  |                 Integer RecordStatus=serviceFund.getRecordstatus(); | 
 |  |  |                 Integer FlowLevel=serviceFund.getFlowlevel(); | 
 |  |  |                 Integer OriginalFlowLevel=FlowLevel; | 
 |  |  |                 if(checkFundVO.getFlowconclusion()==1) | 
 |  |  |                 { | 
 |  |  |                     CheckFlag=1; | 
 |  |  |                     if(TotalLevel==0) | 
 |  |  |                     { | 
 |  |  |                         RecordStatus=99; | 
 |  |  |                     } | 
 |  |  |                     else | 
 |  |  |                     { | 
 |  |  |                         if(TotalLevel==FlowLevel+1) | 
 |  |  |                         { | 
 |  |  |                             RecordStatus=99; | 
 |  |  |                         } | 
 |  |  |                         else | 
 |  |  |                         { | 
 |  |  |                             RecordStatus = (FlowLevel+1)*2; | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     FlowLevel=FlowLevel+1; | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 { | 
 |  |  |                     CheckFlag=2; | 
 |  |  |                     RecordStatus = (FlowLevel+1)*2 - 1; | 
 |  |  |                     FlowLevel=(FlowLevel-1); | 
 |  |  |                     if(FlowLevel<0) | 
 |  |  |                     { | 
 |  |  |                         FlowLevel=0; | 
 |  |  |             Integer CheckFlag = 0; | 
 |  |  |             Integer RecordStatus = serviceFund.getRecordstatus(); | 
 |  |  |             Integer FlowLevel = serviceFund.getFlowlevel().intValue(); | 
 |  |  |             Integer OriginalFlowLevel = FlowLevel; | 
 |  |  |             if (checkFundVO.getFlowconclusion() == 1) { | 
 |  |  |                 CheckFlag = 1; | 
 |  |  |                 if (TotalLevel == 0) { | 
 |  |  |                     RecordStatus = 99; | 
 |  |  |                 } else { | 
 |  |  |                     if (TotalLevel == FlowLevel + 1) { | 
 |  |  |                         RecordStatus = 99; | 
 |  |  |                     } else { | 
 |  |  |                         RecordStatus = (FlowLevel + 1) * 2; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 FlowLevel = FlowLevel + 1; | 
 |  |  |  | 
 |  |  |                 serviceFund.setRecordstatus(RecordStatus); | 
 |  |  |                 serviceFund.setFlowlevel(FlowLevel); | 
 |  |  |                 if (serviceFund.getFlowlevel() == Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1) && serviceFund.getBackflowlevel() == 100) { | 
 |  |  |                     log.info("财务退回再提交,出纳再次审批,之后提交到财务"); | 
 |  |  |                     //说明是财务退回再提交的.需要出纳再看一遍,没问题之后,往分享表里新增 | 
 |  |  | //                    serviceFundService.addFundSharedInfo(serviceFund.getId()); | 
 |  |  |                     serviceFund.setFlowlevel(serviceFundflowrules.get(0).getTotallevel().longValue()); | 
 |  |  |                     serviceFund.setRecordstatus(99); | 
 |  |  |                     serviceFund.setUploadStates(1); | 
 |  |  |                     serviceFundService.updateById(serviceFund); | 
 |  |  |  | 
 |  |  |                 ServiceFundflow serviceFundflow=new ServiceFundflow(); | 
 |  |  |                 SysUser user = loginUser.getUser(); | 
 |  |  |                 serviceFundflow.setFundid(serviceFund.getId()); | 
 |  |  |                 serviceFundflow.setCheckuserno(user.getUserName()); | 
 |  |  |                 serviceFundflow.setCheckusername(user.getNickName()); | 
 |  |  |                 serviceFundflow.setFundtype(2); | 
 |  |  |                 serviceFundflow.setApplytype(serviceFund.getApplytype()); | 
 |  |  |                 serviceFundflow.setFlowconclusion(CheckFlag); | 
 |  |  |                     //保存审批流程表 | 
 |  |  |                     ServiceFundflow serviceFundflow = new ServiceFundflow(); | 
 |  |  |                     SysUser user = loginUser.getUser(); | 
 |  |  |                     serviceFundflow.setFundid(serviceFund.getId()); | 
 |  |  |                     serviceFundflow.setCheckuserno(user.getUserName()); | 
 |  |  |                     serviceFundflow.setCheckusername(user.getNickName()); | 
 |  |  |                     serviceFundflow.setFundtype(2); | 
 |  |  |                     serviceFundflow.setApplytype(serviceFund.getApplytype()); | 
 |  |  |                     serviceFundflow.setFlowconclusion(CheckFlag); | 
 |  |  |                     serviceFundflow.setFlowcontent("通过"); | 
 |  |  |                     Boolean aBoolean = serviceFundflowService.saveData(serviceFundflow); | 
 |  |  |                     return AjaxResult.success(); | 
 |  |  |                 } | 
 |  |  |                 //记录一下,下一级的审批,以便于下一级退回后,发起者提交时,能再提到当前审批层级 | 
 |  |  |                 serviceFund.setBackflowlevel(FlowLevel); | 
 |  |  |             } else { | 
 |  |  |                 CheckFlag = 2; | 
 |  |  |                 if (CheckFlag == 2) { | 
 |  |  |                     //应医院要求如果出现退回,直接退到发起者 | 
 |  |  |                     FlowLevel = 0; | 
 |  |  |                     RecordStatus = -1; | 
 |  |  |                     logger.info("serviceFund进来了吗?????? :{},{}", RecordStatus, FlowLevel); | 
 |  |  |                     System.out.println("serviceFund进来了吗??????"); | 
 |  |  |                 } else { | 
 |  |  |                     RecordStatus = (FlowLevel + 1) * 2 - 1; | 
 |  |  |                     FlowLevel = (FlowLevel - 1); | 
 |  |  |                     if (FlowLevel < 0) { | 
 |  |  |                         FlowLevel = 0; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             serviceFund.setRecordstatus(RecordStatus); | 
 |  |  |             serviceFund.setFlowlevel(FlowLevel.longValue()); | 
 |  |  |             //  serviceFund.setBackflowlevel(serviceFund.getFlowlevel()); | 
 |  |  |  | 
 |  |  |             ServiceFundflow serviceFundflow = new ServiceFundflow(); | 
 |  |  |             SysUser user = loginUser.getUser(); | 
 |  |  |             serviceFundflow.setFundid(serviceFund.getId()); | 
 |  |  |             serviceFundflow.setCheckuserno(user.getUserName()); | 
 |  |  |             serviceFundflow.setCheckusername(user.getNickName()); | 
 |  |  |             serviceFundflow.setFundtype(2); | 
 |  |  |             serviceFundflow.setApplytype(serviceFund.getApplytype()); | 
 |  |  |             serviceFundflow.setFlowconclusion(CheckFlag); | 
 |  |  |             if (org.apache.commons.lang.StringUtils.isNotBlank(checkFundVO.getFlowcontent())) { | 
 |  |  |                 serviceFundflow.setFlowcontent(checkFundVO.getFlowcontent()); | 
 |  |  |                 serviceFundflow.setFlowlevel(OriginalFlowLevel+1); | 
 |  |  |                 serviceFundflowService.save(serviceFundflow); | 
 |  |  |                 serviceFundService.updateById(serviceFund); | 
 |  |  |  | 
 |  |  |                 ServiceSystemmessage serviceSystemmessage=new ServiceSystemmessage(); | 
 |  |  |                 serviceSystemmessage.setFundtype(2); | 
 |  |  |                 serviceSystemmessage.setApplytype(serviceFund.getApplytype()); | 
 |  |  |                 serviceSystemmessage.setSenduserno(user.getUserName()); | 
 |  |  |                 serviceSystemmessage.setSendusername(user.getNickName()); | 
 |  |  |                 serviceSystemmessage.setReceiveuserno(serviceFund.getUserno()); | 
 |  |  |                 serviceSystemmessage.setReceiveusername(serviceFund.getUsername()); | 
 |  |  |                 serviceSystemmessage.setIsread(0); | 
 |  |  |                 serviceSystemmessage.setMessagetype(1); | 
 |  |  |                 serviceSystemmessage.setRelevantno(serviceFund.getId()); | 
 |  |  |  | 
 |  |  |                 if(CheckFlag==1) | 
 |  |  |                 { | 
 |  |  |                     //通过 | 
 |  |  |                     serviceSystemmessage.setMessagetitle(""+(OriginalFlowLevel+1)+"级审核通过"); | 
 |  |  |                     serviceSystemmessage.setMessagecontent("您"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime())+"提交的关于捐献案例【"+serviceFund.getDonorname()+"】的费用申请已通过"+(OriginalFlowLevel+1)+"级审核"); | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 { | 
 |  |  |                     //驳回 | 
 |  |  |                     serviceSystemmessage.setMessagetitle(""+(OriginalFlowLevel+1)+"级审核驳回"); | 
 |  |  |                     serviceSystemmessage.setMessagecontent("您"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime())+"提交的关于捐献案例【"+serviceFund.getDonorname()+"】的费用申请已被"+(OriginalFlowLevel+1)+"级审核驳回,原因为"+checkFundVO.getFlowcontent()+""); | 
 |  |  |                 } | 
 |  |  |                 ServiceSystemmessage.save(serviceSystemmessage); | 
 |  |  |                 return AjaxResult.success(); | 
 |  |  |             } else { | 
 |  |  |                 serviceFundflow.setFlowcontent(checkFundVO.getFlowconclusion() == 1 ? "通过" : "不通过"); | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                 return AjaxResult.error(HttpStatus.NO_CONTENT,"费用编号不正确"); | 
 |  |  |             serviceFundflow.setFlowlevel(OriginalFlowLevel + 1); | 
 |  |  |  | 
 |  |  |             Boolean aBoolean = serviceFundflowService.saveData(serviceFundflow); | 
 |  |  |             log.info("sserviceFund保存的的值是-------- :{}", aBoolean); | 
 |  |  |  | 
 |  |  |             //001审批通过之后,就需要把“办公室主任”的名字填上 | 
 |  |  |             if (checkFundVO.getFlowconclusion() == 1 && user.getUserName().equals("001")) { | 
 |  |  |                 serviceFund.setOfficedirector(user.getNickName()); | 
 |  |  |                 serviceFund.setUploadStates(2); | 
 |  |  |             } | 
 |  |  |             System.out.println("serviceFund的值是--------:" + serviceFund); | 
 |  |  |             log.info("开始更新的的值是--------"); | 
 |  |  | //            ServiceFund updateServiceFund = new ServiceFund(); | 
 |  |  | //            updateServiceFund.setRecordstatus(serviceFund.getRecordstatus()); | 
 |  |  | //            updateServiceFund.setFlowlevel(serviceFund.getFlowlevel()); | 
 |  |  |  | 
 |  |  |             Boolean aBoolean1 = serviceFundService.updateById(serviceFund); | 
 |  |  |             log.info("integer更新的的值是-------- :{}", aBoolean1); | 
 |  |  |             ServiceSystemmessage serviceSystemmessage = new ServiceSystemmessage(); | 
 |  |  |             serviceSystemmessage.setFundtype(2); | 
 |  |  |             serviceSystemmessage.setApplytype(serviceFund.getApplytype()); | 
 |  |  |             serviceSystemmessage.setSenduserno(user.getUserName()); | 
 |  |  |             serviceSystemmessage.setSendusername(user.getNickName()); | 
 |  |  |             serviceSystemmessage.setReceiveuserno(serviceFund.getUserno()); | 
 |  |  |             serviceSystemmessage.setReceiveusername(serviceFund.getUsername()); | 
 |  |  |             serviceSystemmessage.setIsread(0); | 
 |  |  |             serviceSystemmessage.setMessagetype(1); | 
 |  |  |             serviceSystemmessage.setRelevantno(serviceFund.getId()); | 
 |  |  |  | 
 |  |  |             if (CheckFlag == 1) { | 
 |  |  |                 //通过 | 
 |  |  |                 serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核通过"); | 
 |  |  |                 serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的关于捐献案例【" + serviceFund.getDonorname() + "】的费用申请已通过" + (OriginalFlowLevel + 1) + "级审核"); | 
 |  |  | //                if (TotalLevel == OriginalFlowLevel + 1) { | 
 |  |  | //                    serviceFundService.addFundSharedInfo(checkFundVO.getFundid()); | 
 |  |  | //                } | 
 |  |  |  | 
 |  |  |             } else { | 
 |  |  |                 //驳回 | 
 |  |  |                 serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核驳回"); | 
 |  |  |                 serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的关于捐献案例【" + serviceFund.getDonorname() + "】的费用申请已被" + (OriginalFlowLevel + 1) + "级审核驳回,原因为" + checkFundVO.getFlowcontent() + ""); | 
 |  |  |             } | 
 |  |  |             ServiceSystemmessage.save(serviceSystemmessage); | 
 |  |  |             return AjaxResult.success(); | 
 |  |  |         } else { | 
 |  |  |             return AjaxResult.error(HttpStatus.NO_CONTENT, "费用编号不正确"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 修改费用申请主 | 
 |  |  |      * 费用上报 | 
 |  |  |      */ | 
 |  |  |     @ApiOperation("修改费用申请主") | 
 |  |  |     //@PreAuthorize("@ss.hasPermi('project:fund:edit')") | 
 |  |  |     @Log(title = "费用申请主", businessType = BusinessType.UPDATE) | 
 |  |  |     @PutMapping | 
 |  |  |     @RepeatSubmit     | 
 |  |  |     public AjaxResult edit(@RequestBody ServiceFund serviceFund) | 
 |  |  |     { | 
 |  |  |         boolean bret = serviceFundService.updateById(serviceFund); | 
 |  |  |         if(bret) | 
 |  |  |         { | 
 |  |  |             addReiSharedDatd(serviceFund,2); | 
 |  |  |     @ApiOperation("费用上报") | 
 |  |  |     @Log(title = "费用上报", businessType = BusinessType.UPDATE) | 
 |  |  |     @PostMapping("/fundEdit") | 
 |  |  |     @RepeatSubmit | 
 |  |  |     public AjaxResult fundEdit(@RequestBody ServiceFundVO serviceFundVO) { | 
 |  |  |         ServiceFund serviceFund = DtoConversionUtils.sourceToTarget(serviceFundVO, ServiceFund.class); | 
 |  |  |         log.info("修改费用申请入参:{}", serviceFund); | 
 |  |  |         List<ServiceFund> infoByInfoIdList = serviceFundService.queryInfoById(serviceFund); | 
 |  |  |         log.info("修改费用申请,通过入参查询 serviceFundService.queryInfoById数据为空,入参:{}", infoByInfoIdList.size()); | 
 |  |  |         if (CollectionUtils.isEmpty(infoByInfoIdList)) { | 
 |  |  |             Long id = serviceFundService.addOrUpdateNew(serviceFundVO); | 
 |  |  |             serviceFund.setId(id); | 
 |  |  |         } | 
 |  |  |         return toAjax(bret); | 
 |  |  |  | 
 |  |  |         Long flowLavel = null; | 
 |  |  |  | 
 |  |  |         LoginUser loginUser = getLoginUser(); | 
 |  |  |  | 
 |  |  |         //查询必审人 | 
 |  |  |         ServiceFundflowrule serviceFundflowrule = new ServiceFundflowrule(); | 
 |  |  |         serviceFundflowrule.setApplytype(serviceFund.getApplytype()); | 
 |  |  |         serviceFundflowrule.setMustAudite(1); | 
 |  |  |         List<ServiceFundflowrule> serviceFundflowrules = serviceFundflowruleService.queryList(serviceFundflowrule); | 
 |  |  |         log.info("fund必审人的等级为:{}", serviceFundflowrules.get(0).getFlowlevel()); | 
 |  |  |  | 
 |  |  |         for (ServiceFund sf : infoByInfoIdList) { | 
 |  |  |             sf.setApplyTime(new Date()); | 
 |  |  |             //如果等于100,说明已经走到医院财务那边了;财务那边取数据是从分享表取,所以,这里直接往分享表里添加数据就行了 | 
 |  |  |             if (sf.getBackflowlevel() != null && sf.getBackflowlevel() == 199) { | 
 |  |  |                 //将fund表的审核状态改成100 | 
 |  |  |                 sf.setBackflowlevel(100); | 
 |  |  |  | 
 |  |  |                 //退回再提交,需要再到出纳那里 | 
 |  |  |                 sf.setFlowlevel(Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1)); | 
 |  |  |                 sf.setRecordstatus(0); | 
 |  |  |                 serviceFundService.updateById(sf); | 
 |  |  |  | 
 |  |  | //                //往分享表里新增 | 
 |  |  | //                serviceFundService.addFundSharedInfo(serviceFund.getId()); | 
 |  |  |  | 
 |  |  |                 return success(); | 
 |  |  |             } else if (sf.getBackflowlevel() != null && sf.getBackflowlevel() == 100) { | 
 |  |  |                 //财务退回的数据再提交,到出纳那里没有过,再退回,导致backflowlevel是100, | 
 |  |  |                 //退回再提交,需要再到出纳那里 | 
 |  |  |                 sf.setFlowlevel(Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1)); | 
 |  |  |                 sf.setRecordstatus(2); | 
 |  |  |                 serviceFundService.updateById(sf); | 
 |  |  |             } else if (sf.getBackflowlevel() != null && sf.getBackflowlevel() >= serviceFundflowrules.get(0).getFlowlevel()) { | 
 |  |  |                 //聂科退回的,也需要先到出纳那里 | 
 |  |  |                 sf.setFlowlevel(Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1)); | 
 |  |  |                 sf.setRecordstatus(2); | 
 |  |  |                 serviceFundService.updateById(sf); | 
 |  |  |             } else { | 
 |  |  |  | 
 |  |  |                 Integer TotalLevel = 0; | 
 |  |  |                 List<Integer> postids = postService.selectPostListByUserId(loginUser.getUserId()); | 
 |  |  |                 if (!postids.contains(2)) { | 
 |  |  |                     serviceFund.setRecordstatus(2); | 
 |  |  |                     if (serviceFund.getBackflowlevel() != null) { | 
 |  |  |                         serviceFund.setFlowlevel(serviceFund.getBackflowlevel().longValue()); | 
 |  |  |                     } else { | 
 |  |  |                         serviceFund.setBackflowlevel(serviceFundflowrules.get(0).getFlowlevel() - 1); | 
 |  |  |                         serviceFund.setFlowlevel(Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1)); | 
 |  |  |                     } | 
 |  |  |                 } else { | 
 |  |  |                     serviceFund.setRecordstatus(0); | 
 |  |  |                     if (serviceFund.getBackflowlevel() != null) { | 
 |  |  |                         serviceFund.setFlowlevel(serviceFund.getBackflowlevel().longValue()); | 
 |  |  |                     } else { | 
 |  |  |                         serviceFund.setFlowlevel(0L); | 
 |  |  |                         serviceFund.setBackflowlevel(0); | 
 |  |  |                     } | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |                 //   serviceFund.setFlowlevel(sf.getBackflowlevel()); | 
 |  |  |                 boolean bret = serviceFundService.updateById(serviceFund); | 
 |  |  |                 log.info("serviceFundService.updateById返参:{}", bret); | 
 |  |  |  | 
 |  |  |                 return toAjax(bret); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return toAjax(false); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 删除费用申请主 | 
 |  |  | 
 |  |  |     @ApiOperation("删除费用申请主") | 
 |  |  |     //@PreAuthorize("@ss.hasPermi('project:fund:remove')") | 
 |  |  |     @Log(title = "费用申请主", businessType = BusinessType.DELETE) | 
 |  |  |     @DeleteMapping("/{ids}") | 
 |  |  |     public AjaxResult remove(@PathVariable Long[] ids) | 
 |  |  |     { | 
 |  |  |     @GetMapping("/remove/{ids}") | 
 |  |  |     public AjaxResult remove(@PathVariable Long[] ids) { | 
 |  |  |         return toAjax(serviceFundService.removeByIds(Arrays.asList(ids))); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     @GetMapping(value = "/downloadLW/{id}") | 
 |  |  |     public Map downloadInfoLW(@PathVariable("id") Long id) throws IOException { | 
 |  |  |         Map dataMap = new HashMap(); | 
 |  |  |         getDataLW(dataMap,id); | 
 |  |  |         getDataLW(dataMap, id); | 
 |  |  |         String filePath = getClass().getResource("/template/").getPath(); | 
 |  |  |         System.out.println(filePath); | 
 |  |  |         //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, | 
 |  |  |         configuration.setDirectoryForTemplateLoading(new File(filePath)); | 
 |  |  |  | 
 |  |  |         Template t=null; | 
 |  |  |         Template t = null; | 
 |  |  |         try { | 
 |  |  |             //捐献表.ftl为要装载的模板 | 
 |  |  |             t = configuration.getTemplate("专家劳务费发放申请单.ftl"); | 
 |  |  |             t = configuration.getTemplate("专家劳务费发放申请单(1).ftl"); | 
 |  |  |         } catch (IOException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); | 
 |  |  |         String name = "专家劳务费发放申请单_"+dataMap.get("XM")+"_"+ newTime; | 
 |  |  |         String name = "专家劳务费发放申请单_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |  | 
 |  |  |         //输出文档路径及名称 | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         Writer out = null; | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); | 
 |  |  |  | 
 |  |  |         } catch (FileNotFoundException e1) { | 
 |  |  |             e1.printStackTrace(); | 
 |  |  | 
 |  |  |         } catch (TemplateException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         Map<String ,Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/"+name+".doc"); | 
 |  |  |         Map<String, Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         map.put("downloadName", name + ".doc"); | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         String date = formatter.format(dt); | 
 |  |  |         String time = date.substring(0, 10); | 
 |  |  |  | 
 |  |  |         dataMap.put("TBYYMMDD",time); | 
 |  |  |         dataMap.put("BXDFJ", serviceFund.getAttachcount() == 0 ? "   " : serviceFund.getAttachcount()); | 
 |  |  |         dataMap.put("XZBH", serviceFund.getBh() == null ? "" : serviceFund.getBh()); | 
 |  |  |         dataMap.put("ZB", serviceFund.getDeptmentname() == null ? "" : serviceFund.getDeptmentname()); | 
 |  |  |         dataMap.put("TBYYMMDD", time); | 
 |  |  |         dataMap.put("BXDFJ", serviceFund.getAttachcount() == null ? "   " : serviceFund.getAttachcount()); | 
 |  |  |         dataMap.put("JXZXM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname()); | 
 |  |  |         dataMap.put("JSR", serviceFund.getUsername() == null ? "" : serviceFund.getUsername()); | 
 |  |  |         dataMap.put("FYXM1", "支付专家费用,其中税前金额" + serviceFund.getPretaxcost() + "元,税后金额" + serviceFund.getTaxedcost() + "元。"); | 
 |  |  | //        dataMap.put("FYXM1", "支付专家费用,其中税前金额" + serviceFund.getPretaxcost() + "元,税后金额" + serviceFund.getTaxedcost() + "元。"); | 
 |  |  |         dataMap.put("FYXM1", "人体器官捐献专家劳务费:" + serviceFund.getPretaxcost() + "元 (其中税后费用由中心承担税费)。"); | 
 |  |  |         dataMap.put("FYXM2", ""); | 
 |  |  |         dataMap.put("FYXM3", ""); | 
 |  |  |         dataMap.put("JEXS", serviceFund.getAmountrequested()); | 
 |  |  |         dataMap.put("JEDS", convert(serviceFund.getAmountrequested()) + "整"); | 
 |  |  |         dataMap.put("JEXS", serviceFund.getPretaxcost()); | 
 |  |  |         dataMap.put("JEDS", convert(serviceFund.getPretaxcost()) + "整"); | 
 |  |  |         dataMap.put("BXBZ", serviceFund.getRemark() == null ? "" : serviceFund.getRemark()); | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (fd == null) { | 
 |  |  |             throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT); | 
 |  |  |         } | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String,Object>>(); | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String, Object>>(); | 
 |  |  |         int count = 0; | 
 |  |  |         double sq = 0; | 
 |  |  |         double ks = 0; | 
 |  |  |         double sh = 0; | 
 |  |  |  | 
 |  |  |         for(ServiceFunddetail f : fd){ | 
 |  |  |             Map<String, Object> map=new HashMap<String, Object>(); | 
 |  |  |         for (ServiceFunddetail f : fd) { | 
 |  |  |             Map<String, Object> map = new HashMap<String, Object>(); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             map.put("XH", f.getItemcode() == null ? "" : f.getItemcode()); | 
 |  |  |             String itemName = f.getItemname() == null ? "" : f.getItemname(); | 
 |  |  | 
 |  |  |             newsList.add(map); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         dataMap.put("list",newsList); | 
 |  |  |         //  专家劳务费统计表 | 
 |  |  |         List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>(); | 
 |  |  |  | 
 |  |  |         dataMap.put("SQHJ",sq); | 
 |  |  |         dataMap.put("KSHJ",ks); | 
 |  |  |         dataMap.put("SHHJ",sh); | 
 |  |  |         List<Double> sqljList = new ArrayList<>(); | 
 |  |  |         List<Double> ksljList = new ArrayList<>(); | 
 |  |  |         List<Double> shljList = new ArrayList<>(); | 
 |  |  |  | 
 |  |  |         //根据”科目类型名称“,来计算税前总和,税金总和,税后总和 | 
 |  |  |         Map<String, ServiceFunddetailAssort> funddetailMap = new HashMap<>(); | 
 |  |  |         for (ServiceFunddetail serviceFunddetail : fd) { | 
 |  |  |             boolean b = funddetailMap.containsKey(serviceFunddetail.getSubjecttypename()); | 
 |  |  |             if (b == true) { | 
 |  |  |                 ServiceFunddetailAssort serviceFunddetailAssort = funddetailMap.get(serviceFunddetail.getSubjecttypename()); | 
 |  |  |                 serviceFunddetailAssort.setKSXJ(serviceFunddetailAssort.getKSXJ() + serviceFunddetail.getTaxamount()); | 
 |  |  |                 serviceFunddetailAssort.setSQXJ(serviceFunddetailAssort.getSQXJ() + serviceFunddetail.getAmount()); | 
 |  |  |                 serviceFunddetailAssort.setSHXJ(serviceFunddetailAssort.getSHXJ() + serviceFunddetail.getTaxedamount()); | 
 |  |  |             } else { | 
 |  |  |                 funddetailMap.put(serviceFunddetail.getSubjecttypename(), new ServiceFunddetailAssort()); | 
 |  |  |                 ServiceFunddetailAssort serviceFunddetailAssort = funddetailMap.get(serviceFunddetail.getSubjecttypename()); | 
 |  |  |                 serviceFunddetailAssort.setKSXJ(serviceFunddetailAssort.getKSXJ() + serviceFunddetail.getTaxamount()); | 
 |  |  |                 serviceFunddetailAssort.setSQXJ(serviceFunddetailAssort.getSQXJ() + serviceFunddetail.getAmount()); | 
 |  |  |                 serviceFunddetailAssort.setSHXJ(serviceFunddetailAssort.getSHXJ() + serviceFunddetail.getTaxedamount()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         funddetailMap.forEach((FWFL, serviceFunddetailAssort) -> { | 
 |  |  |             Map<String, Object> map1 = new HashMap<String, Object>(); | 
 |  |  |             map1.put("FWFL", FWFL); | 
 |  |  |             map1.put("SQXJ", serviceFunddetailAssort.getSQXJ()); | 
 |  |  |             map1.put("KSXJ", serviceFunddetailAssort.getKSXJ()); | 
 |  |  |             map1.put("SHXJ", serviceFunddetailAssort.getSHXJ()); | 
 |  |  |             sqljList.add(serviceFunddetailAssort.getSQXJ()); | 
 |  |  |             ksljList.add(serviceFunddetailAssort.getKSXJ()); | 
 |  |  |             shljList.add(serviceFunddetailAssort.getSHXJ()); | 
 |  |  |             lists.add(map1); | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         double sqxj = 0; | 
 |  |  |         double kslj = 0; | 
 |  |  |         double shlj = 0; | 
 |  |  |         for (Double sqx : sqljList) { | 
 |  |  |             sqxj += sqx; | 
 |  |  |         } | 
 |  |  |         for (Double ksl : ksljList) { | 
 |  |  |             kslj += ksl; | 
 |  |  |         } | 
 |  |  |         for (Double shl : shljList) { | 
 |  |  |             shlj += shl; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //数据封装 | 
 |  |  |         dataMap.put("list", newsList); | 
 |  |  |         for (int i = 0; i < lists.size(); i++) { | 
 |  |  |             Map<String, Object> map = lists.get(i); | 
 |  |  |             map.put("XH", i + 1); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         dataMap.put("item", lists); | 
 |  |  |  | 
 |  |  |         dataMap.put("SQHJ", sq); | 
 |  |  |         dataMap.put("KSHJ", ks); | 
 |  |  |         dataMap.put("SHHJ", sh); | 
 |  |  |  | 
 |  |  |         dataMap.put("SQLJ", sqxj); | 
 |  |  |         dataMap.put("KSLJ", kslj); | 
 |  |  |         dataMap.put("SHLJ", shlj); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     @GetMapping(value = "/downloadSH/{id}") | 
 |  |  |     public Map downloadInfoSH(@PathVariable("id") Long id) throws IOException { | 
 |  |  |         Map dataMap = new HashMap(); | 
 |  |  |         getDataSH(dataMap,id); | 
 |  |  |         getDataSH(dataMap, id); | 
 |  |  |         String filePath = getClass().getResource("/template/").getPath(); | 
 |  |  |         System.out.println(filePath); | 
 |  |  |         //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, | 
 |  |  |         configuration.setDirectoryForTemplateLoading(new File(filePath)); | 
 |  |  |  | 
 |  |  |         Template t=null; | 
 |  |  |         Template t = null; | 
 |  |  |         try { | 
 |  |  |             //捐献表.ftl为要装载的模板 | 
 |  |  |             t = configuration.getTemplate("捐献者善后成本表.ftl"); | 
 |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); | 
 |  |  |         String name = "捐献者善后成本表_"+dataMap.get("XM")+"_"+ newTime; | 
 |  |  |         String name = "捐献者善后成本表_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |  | 
 |  |  |         //输出文档路径及名称 | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         Writer out = null; | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); | 
 |  |  |  | 
 |  |  |         } catch (FileNotFoundException e1) { | 
 |  |  |             e1.printStackTrace(); | 
 |  |  | 
 |  |  |         } catch (TemplateException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         Map<String ,Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/"+name+".doc"); | 
 |  |  |         Map<String, Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (fd == null) { | 
 |  |  |             throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT); | 
 |  |  |         } | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String,Object>>(); | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String, Object>>(); | 
 |  |  |         int count = 0; | 
 |  |  |         double sq = 0; | 
 |  |  |         double ks = 0; | 
 |  |  |         double sh = 0; | 
 |  |  |  | 
 |  |  |         for(ServiceFunddetail f : fd){ | 
 |  |  |             Map<String, Object> map=new HashMap<String, Object>(); | 
 |  |  |         for (ServiceFunddetail f : fd) { | 
 |  |  |             Map<String, Object> map = new HashMap<String, Object>(); | 
 |  |  |             count++; | 
 |  |  |             map.put("XH", count); | 
 |  |  |             map.put("FWNR", f.getItemname() == null ? "" : f.getItemname()); | 
 |  |  | 
 |  |  |             newsList.add(map); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         dataMap.put("list",newsList); | 
 |  |  |         dataMap.put("list", newsList); | 
 |  |  |  | 
 |  |  |         dataMap.put("SQHJ",sq); | 
 |  |  |         dataMap.put("KSHJ",ks); | 
 |  |  |         dataMap.put("SHHJ",sh); | 
 |  |  |         dataMap.put("SQHJ", sq); | 
 |  |  |         dataMap.put("KSHJ", ks); | 
 |  |  |         dataMap.put("SHHJ", sh); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     @GetMapping(value = "/downloadSS/{id}") | 
 |  |  |     public Map downloadInfoSS(@PathVariable("id") Long id) throws IOException { | 
 |  |  |         Map dataMap = new HashMap(); | 
 |  |  |         getDataSS(dataMap,id); | 
 |  |  |         getDataSS(dataMap, id); | 
 |  |  |         String filePath = getClass().getResource("/template/").getPath(); | 
 |  |  |         System.out.println(filePath); | 
 |  |  |         //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, | 
 |  |  |         configuration.setDirectoryForTemplateLoading(new File(filePath)); | 
 |  |  |  | 
 |  |  |         Template t=null; | 
 |  |  |         Template t = null; | 
 |  |  |         try { | 
 |  |  |             //捐献表.ftl为要装载的模板 | 
 |  |  |             t = configuration.getTemplate("捐献者家属交通食宿费用表.ftl"); | 
 |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); | 
 |  |  |         String name = "捐献者家属交通食宿费用表_"+dataMap.get("XM")+"_"+ newTime; | 
 |  |  |         String name = "捐献者家属交通食宿费用表_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |  | 
 |  |  |         //输出文档路径及名称 | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         Writer out = null; | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); | 
 |  |  |  | 
 |  |  |         } catch (FileNotFoundException e1) { | 
 |  |  |             e1.printStackTrace(); | 
 |  |  | 
 |  |  |         } catch (TemplateException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         Map<String ,Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/"+name+".doc"); | 
 |  |  |         Map<String, Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         map.put("downloadName", name + ".doc"); | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void getDataSS(Map dataMap, Long id) { | 
 |  |  |         ServiceFund serviceFund = serviceFundService.getById(id); | 
 |  |  |         log.info("通过id查询数据的结果:{}", serviceFund); | 
 |  |  |         if (serviceFund == null) { | 
 |  |  |             throw new ServiceException("下载失败,用户信息出错", HttpStatus.NO_CONTENT); | 
 |  |  |         } | 
 |  |  | 
 |  |  |         if (fd == null) { | 
 |  |  |             throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT); | 
 |  |  |         } | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String,Object>>(); | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String, Object>>(); | 
 |  |  |         int count = 0; | 
 |  |  |         double hj = 0; | 
 |  |  |  | 
 |  |  |         for(ServiceFunddetail f : fd){ | 
 |  |  |             Map<String, Object> map=new HashMap<String, Object>(); | 
 |  |  |         for (ServiceFunddetail f : fd) { | 
 |  |  |             Map<String, Object> map = new HashMap<String, Object>(); | 
 |  |  |             count++; | 
 |  |  |             map.put("XH", count); | 
 |  |  |             map.put("FWNR", f.getItemname() == null ? "" : f.getItemname()); | 
 |  |  | 
 |  |  |             newsList.add(map); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         dataMap.put("list",newsList); | 
 |  |  |         dataMap.put("JEHJ",hj); | 
 |  |  |         dataMap.put("list", newsList); | 
 |  |  |         dataMap.put("JEHJ", hj); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 下载捐献者医学成本统计表 | 
 |  |  |      * 下载捐献者医学、办公、绩效成本统计表 | 
 |  |  |      */ | 
 |  |  |     @ApiOperation("捐献者医学成本统计表") | 
 |  |  |     @ApiOperation("捐献者医学、办公、绩效成本统计表") | 
 |  |  |     @GetMapping(value = "/downloadYX/{id}") | 
 |  |  |     public Map downloadInfoYX(@PathVariable("id") Long id) throws IOException { | 
 |  |  |         Map dataMap = new HashMap(); | 
 |  |  |         getDataYX(dataMap,id); | 
 |  |  |         String dataYX = getDataYX(dataMap, id); | 
 |  |  |         String filePath = getClass().getResource("/template/").getPath(); | 
 |  |  |         System.out.println(filePath); | 
 |  |  |         //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, | 
 |  |  |         configuration.setDirectoryForTemplateLoading(new File(filePath)); | 
 |  |  |  | 
 |  |  |         Template t=null; | 
 |  |  |         Template t = null; | 
 |  |  |         try { | 
 |  |  |             //捐献表.ftl为要装载的模板 | 
 |  |  |             t = configuration.getTemplate("医学成本费用申请单.ftl"); | 
 |  |  |             //专家劳务费申请 1    伦理评估劳务费申请 2    医学成本费用申请 3     办公费用报销申请 4   绩效费用报销申请 5 | 
 |  |  |             if (dataYX.equals("3")) { | 
 |  |  |                 t = configuration.getTemplate("医学成本费用申请单.ftl"); | 
 |  |  |             } else if (dataYX.equals("4")) { | 
 |  |  |                 t = configuration.getTemplate("办公费用申请单.ftl"); | 
 |  |  |             } else if (dataYX.equals("5")) { | 
 |  |  |                 t = configuration.getTemplate("绩效费用申请单.ftl"); | 
 |  |  |             } | 
 |  |  |         } catch (IOException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); | 
 |  |  |         String name = "医学成本费用申请单_"+dataMap.get("XM")+"_"+ newTime; | 
 |  |  |  | 
 |  |  |         String name = null; | 
 |  |  |         if (dataYX.equals("3")) { | 
 |  |  |             name = "医学成本费用申请单_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |         } else if (dataYX.equals("4")) { | 
 |  |  |             name = "办公费用申请单_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |         } else if (dataYX.equals("5")) { | 
 |  |  |             name = "绩效费用申请单_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |         } | 
 |  |  |         //输出文档路径及名称 | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         Writer out = null; | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); | 
 |  |  |  | 
 |  |  |         } catch (FileNotFoundException e1) { | 
 |  |  |             e1.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         try { | 
 |  |  |  | 
 |  |  |             t.process(dataMap, out); | 
 |  |  |         } catch (TemplateException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         Map<String ,Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/"+name+".doc"); | 
 |  |  |         Map<String, Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         map.put("downloadName", name + ".doc"); | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void getDataYX(Map dataMap, Long id) { | 
 |  |  |     private String getDataYX(Map dataMap, Long id) { | 
 |  |  |         ServiceFund serviceFund = serviceFundService.getById(id); | 
 |  |  |         log.info("通过id获取医学、办公、绩效成本的fund信息为:{}", serviceFund); | 
 |  |  |         if (serviceFund == null) { | 
 |  |  |             throw new ServiceException("下载失败,用户信息出错", HttpStatus.NO_CONTENT); | 
 |  |  |         } | 
 |  |  |         ServiceExternalperson infoByUserNo = null; | 
 |  |  |         if (StringUtils.isNotBlank(serviceFund.getUserno())) { | 
 |  |  |             infoByUserNo = externalpersonService.getInfoByUserNo(serviceFund.getUserno()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         List<ServiceFunddetail> fd = serviceFunddetailService.getAllDetailsByFDIDHZ(id); | 
 |  |  |         if (serviceFund.getApplytype().equals("5")) { | 
 |  |  |             //绩效的详情如果小于3行,默认要等于3行 | 
 |  |  |             if (fd.size() < 3) { | 
 |  |  |                 for (int i = 0; i <= 3 - fd.size(); i++) { | 
 |  |  |                     ServiceFunddetail serviceFunddetail = new ServiceFunddetail(); | 
 |  |  |                     serviceFunddetail.setQuantity(0.00); | 
 |  |  |                     serviceFunddetail.setPrice(0.00); | 
 |  |  |                     serviceFunddetail.setAmount(0.00); | 
 |  |  |                     fd.add(serviceFunddetail); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (fd == null) { | 
 |  |  |             throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Date dt = serviceFund.getCreateTime(); | 
 |  |  | //        Date dt = serviceFund.getCreateTime(); | 
 |  |  |         Date dt = serviceFund.getApplyTime(); | 
 |  |  |         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
 |  |  |         String date = formatter.format(dt); | 
 |  |  |         String time = date.substring(0, 10); | 
 |  |  |  | 
 |  |  |         List<Map<String, Object>> newList = new ArrayList<Map<String,Object>>(); | 
 |  |  |         List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>(); | 
 |  |  |         int seqno = 0; | 
 |  |  |  | 
 |  |  |         dataMap.put("TBYYMMDD",time); | 
 |  |  |         dataMap.put("ZB", serviceFund.getDeptmentname() == null ? "" : serviceFund.getDeptmentname()); | 
 |  |  |         dataMap.put("XZBH", serviceFund.getBh() == null ? "" : serviceFund.getBh()); | 
 |  |  |         dataMap.put("TBYYMMDD", time); | 
 |  |  |         dataMap.put("BXDFJ", serviceFund.getAttachcount() == 0 ? "   " : serviceFund.getAttachcount()); | 
 |  |  |         dataMap.put("JXZXM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname()); | 
 |  |  |         dataMap.put("JSR", serviceFund.getUsername() == null ? "" : serviceFund.getUsername()); | 
 |  |  |         dataMap.put("YWZ", serviceFund.getDeptmentname() == null ? "" : serviceFund.getDeptmentname()); | 
 |  |  |         dataMap.put("ZHUZANG", serviceFund.getManagername() == null ? "" : serviceFund.getManagername()); | 
 |  |  |  | 
 |  |  |         for(ServiceFunddetail f : fd) { | 
 |  |  |             seqno++; | 
 |  |  |             Map<String, Object> map=new HashMap<String, Object>(); | 
 |  |  |             map.put("seqno", seqno); | 
 |  |  |  | 
 |  |  |         if (StringUtils.isEmpty(serviceFund.getRemark())) { | 
 |  |  |             dataMap.put("FYMC", LocalDate.now().getYear() + "年" + LocalDate.now().getMonthValue() + "月人体器官获取服务管理中心工作人员绩效"); | 
 |  |  |         } else { | 
 |  |  |             dataMap.put("FYMC", serviceFund.getRemark().substring(0, serviceFund.getRemark().length() - 2) + "人体器官获取服务管理中心工作人员绩效"); | 
 |  |  |         } | 
 |  |  |         String bz = ""; | 
 |  |  |         int i = 0; | 
 |  |  |         if (!serviceFund.getApplytype().equals("5")) { | 
 |  |  |             for (ServiceFunddetail f : fd) { | 
 |  |  |                 seqno++; | 
 |  |  |                 Map<String, Object> map = new HashMap<String, Object>(); | 
 |  |  |                 map.put("seqno", seqno); | 
 |  |  |  | 
 |  |  |                 //如果是医疗成本,则把银行卡加上每条明细的后面 | 
 |  |  |                 if (serviceFund.getApplytype().equals("3")) { | 
 |  |  |                     i = i + 1; | 
 |  |  |                     bz += f.getBeneficiaryname() == null ? "(" + i + ")" : "(" + i + ")" + f.getBeneficiaryname() + ","; | 
 |  |  |                     bz += "金额 : " + f.getAmount() + "元" + ","; | 
 |  |  |                     bz += f.getDepositbank() == null ? "" : f.getDepositbank() + ": "; | 
 |  |  |                     bz += f.getBankcardno() == null ? "" : f.getBankcardno(); | 
 |  |  |                     bz += "<w:br/>"; | 
 |  |  |                 } | 
 |  |  |                 if (serviceFund.getApplytype().equals("4")) { | 
 |  |  |                     i = i + 1; | 
 |  |  |                     bz += f.getBeneficiaryname() == null ? "(" + i + ")" : "(" + i + ")" + f.getBeneficiaryname() + ","; | 
 |  |  |                     bz += "金额 : " + f.getAmount() + "元" + ","; | 
 |  |  |                     bz += f.getDepositbank() == null ? "" : f.getDepositbank() + ": "; | 
 |  |  |                     bz += f.getBankcardno() == null ? "" : f.getBankcardno(); | 
 |  |  |                     bz += "<w:br/>"; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                 String fyxm = ""; | 
 |  |  |                 fyxm += f.getItemname() == null ? "" : f.getItemname(); | 
 |  |  |                 fyxm += f.getAmount() + "元"; | 
 |  |  |                 if (f.getItemname() == null && f.getAmount() == 0.0) { | 
 |  |  |                     fyxm = ""; | 
 |  |  |                 } | 
 |  |  |                 map.put("FYXM", fyxm); | 
 |  |  |                 newList.add(map); | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |             Map<String, Object> map = new HashMap<String, Object>(); | 
 |  |  |             map.put("seqno", 1); | 
 |  |  |             String fyxm = ""; | 
 |  |  |             fyxm += f.getItemname() == null ? "" : f.getItemname(); | 
 |  |  |             fyxm += f.getAmount() + "元"; | 
 |  |  |             fyxm += "("; | 
 |  |  |             fyxm += f.getUnitname() == null ? "" : f.getUnitname() + ";"; | 
 |  |  |             fyxm += f.getDepositbank() == null ? "" : f.getDepositbank() + ": "; | 
 |  |  |             fyxm += f.getBankcardno() == null ? "" : f.getBankcardno(); | 
 |  |  |             fyxm += ")"; | 
 |  |  |             if (StringUtils.isEmpty(serviceFund.getRemark())) { | 
 |  |  |                 fyxm += LocalDate.now().getYear() + "年" + LocalDate.now().getMonthValue() + "月人体器官获取服务管理中心工作人员绩效,共计"; | 
 |  |  |             } else { | 
 |  |  |                 fyxm += serviceFund.getRemark().substring(0, serviceFund.getRemark().length() - 2) + "人体器官获取服务管理中心工作人员绩效,共计"; | 
 |  |  |             } | 
 |  |  |             fyxm += serviceFund.getPretaxcost() + "元"; | 
 |  |  |             if (serviceFund.getPretaxcost() == null && serviceFund.getPretaxcost() == 0.0) { | 
 |  |  |                 fyxm = ""; | 
 |  |  |             } | 
 |  |  |             map.put("FYXM", fyxm); | 
 |  |  |             newList.add(map); | 
 |  |  |             Map<String, Object> objectObjectHashMap = new HashMap<>(); | 
 |  |  |             objectObjectHashMap.put("seqno", 2); | 
 |  |  |             objectObjectHashMap.put("FYXM", ""); | 
 |  |  |             newList.add(objectObjectHashMap); | 
 |  |  |  | 
 |  |  |             Map<String, Object> objectObjectHashMap2 = new HashMap<>(); | 
 |  |  |             objectObjectHashMap2.put("seqno", 3); | 
 |  |  |             objectObjectHashMap2.put("FYXM", ""); | 
 |  |  |             newList.add(objectObjectHashMap2); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         //合并单元格 | 
 |  |  |         checkList(newList); | 
 |  |  |         dataMap.put("items", newList); | 
 |  |  |  | 
 |  |  |         dataMap.put("JEXS", serviceFund.getAmountrequested()); | 
 |  |  |         dataMap.put("JEDS", convert(serviceFund.getAmountrequested()) + "整"); | 
 |  |  |         dataMap.put("BXBZ", serviceFund.getRemark() == null ? "" : serviceFund.getRemark()); | 
 |  |  |         dataMap.put("JEXS", serviceFund.getPretaxcost()); | 
 |  |  |         dataMap.put("JEDS", convert(serviceFund.getPretaxcost()) + "整"); | 
 |  |  | //        dataMap.put("JEXS", serviceFund.getAmountrequested()); | 
 |  |  | //        dataMap.put("JEDS", convert(serviceFund.getAmountrequested()) + "整"); | 
 |  |  |         //备注里放的是经办人的银行卡信息 | 
 |  |  |  | 
 |  |  |         dataMap.put("BXBZ", serviceFund.getApplytype().equals("3") || serviceFund.getApplytype().equals("4") ? bz : infoByUserNo == null ? "" : infoByUserNo.getBranchbankname() + "  " + infoByUserNo.getBankcardno()); | 
 |  |  |         dataMap.put("YZ", serviceFund.getPresident() == null ? "" : serviceFund.getPresident()); | 
 |  |  |         dataMap.put("CWFYZ", serviceFund.getFinvicepresident() == null ? "" : serviceFund.getFinvicepresident()); | 
 |  |  |         dataMap.put("YWFYZ", serviceFund.getBusvicepresident() == null ? "" : serviceFund.getBusvicepresident()); | 
 |  |  |         dataMap.put("BGSZR", serviceFund.getOfficedirector() == null ? "" : serviceFund.getOfficedirector()); | 
 |  |  |         dataMap.put("CWBZR", serviceFund.getFinancedirector() == null ? "" : serviceFund.getFinancedirector()); | 
 |  |  |         dataMap.put("CWSH", serviceFund.getFinancechecher() == null ? "" : serviceFund.getFinancechecher()); | 
 |  |  |  | 
 |  |  |         dataMap.put("YYMMDD", time); | 
 |  |  |         dataMap.put("XM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname()); | 
 |  |  | 
 |  |  |         dataMap.put("ZZ", serviceFund.getManagername() == null ? "" : serviceFund.getManagername()); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String,Object>>(); | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String, Object>>(); | 
 |  |  |         int count = 0; | 
 |  |  |         double hj = 0; | 
 |  |  |  | 
 |  |  |         for(ServiceFunddetail f : fd){ | 
 |  |  |             Map<String, Object> map=new HashMap<String, Object>(); | 
 |  |  |         for (ServiceFunddetail f : fd) { | 
 |  |  |             Map<String, Object> map = new HashMap<String, Object>(); | 
 |  |  |             count++; | 
 |  |  |             map.put("XH", count); | 
 |  |  |             map.put("FWNR", f.getItemname() == null ? "" : f.getItemname()); | 
 |  |  |             map.put("DW", f.getUnitname() == null ? "" : f.getUnitname()); | 
 |  |  |             map.put("DW", f.getBeneficiaryname() == null ? "" : f.getBeneficiaryname()); | 
 |  |  |             map.put("SL", f.getQuantity() == 0.00 ? "" : f.getQuantity()); | 
 |  |  |             map.put("JG", f.getPrice() == 0.00 ? "" : f.getPrice()); | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |         dataMap.put("list", newsList); | 
 |  |  |         dataMap.put("BYHJ", hj); | 
 |  |  |         dataMap.put("BGSZR2", serviceFund.getOfficedirector() == null ? "" : serviceFund.getOfficedirector()); | 
 |  |  |         dataMap.put("CWBZR2", serviceFund.getFinancedirector() == null ? "" : serviceFund.getFinancedirector()); | 
 |  |  |         dataMap.put("CWSH2", serviceFund.getFinancechecher() == null ? "" : serviceFund.getFinancechecher()); | 
 |  |  |  | 
 |  |  |         return serviceFund.getApplytype(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public List<Map<String, Object>> checkList(List<Map<String, Object>> list) { | 
 |  |  |         String start = "<w:vMerge w:val='restart'/>"; | 
 |  |  |         String end = "<w:vMerge/>"; | 
 |  |  |         list.get(0).put("start", start); | 
 |  |  |         for (int i = 1; i < list.size(); i++) { | 
 |  |  |             list.get(i).put("end", end); | 
 |  |  |         } | 
 |  |  |         return list; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     @GetMapping(value = "/downloadBX/{id}") | 
 |  |  |     public Map downloadInfoBX(@PathVariable("id") Long id) throws IOException { | 
 |  |  |         Map dataMap = new HashMap(); | 
 |  |  |         getDataBX(dataMap,id); | 
 |  |  |         getDataBX(dataMap, id); | 
 |  |  |         String filePath = getClass().getResource("/template/").getPath(); | 
 |  |  |         System.out.println(filePath); | 
 |  |  |         //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, | 
 |  |  |         configuration.setDirectoryForTemplateLoading(new File(filePath)); | 
 |  |  |  | 
 |  |  |         Template t=null; | 
 |  |  |         Template t = null; | 
 |  |  |         try { | 
 |  |  |             //捐献表.ftl为要装载的模板 | 
 |  |  |             t = configuration.getTemplate("费用报销单.ftl"); | 
 |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); | 
 |  |  |         String name = "费用报销单_"+dataMap.get("XM")+"_"+ newTime; | 
 |  |  |         String name = "费用报销单_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |  | 
 |  |  |         //输出文档路径及名称 | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         Writer out = null; | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); | 
 |  |  |  | 
 |  |  |         } catch (FileNotFoundException e1) { | 
 |  |  |             e1.printStackTrace(); | 
 |  |  | 
 |  |  |         } catch (TemplateException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         Map<String ,Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/"+name+".doc"); | 
 |  |  |         Map<String, Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         map.put("downloadName", name + ".doc"); | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, | 
 |  |  |         configuration.setDirectoryForTemplateLoading(new File(filePath)); | 
 |  |  |  | 
 |  |  |         Template t=null; | 
 |  |  |         Template t = null; | 
 |  |  |         try { | 
 |  |  |             //捐献表.ftl为要装载的模板 | 
 |  |  |             t = configuration.getTemplate("获取费用支出汇总表.ftl"); | 
 |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); | 
 |  |  |         String name = "获取费用支出汇总表_"+dataMap.get("XM")+"_"+ newTime; | 
 |  |  |         String name = "获取费用支出汇总表_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |  | 
 |  |  |         //输出文档路径及名称 | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         Writer out = null; | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); | 
 |  |  |  | 
 |  |  |         } catch (FileNotFoundException e1) { | 
 |  |  |             e1.printStackTrace(); | 
 |  |  | 
 |  |  |         } catch (TemplateException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         Map<String ,Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/"+name+".doc"); | 
 |  |  |         Map<String, Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         map.put("downloadName", name + ".doc"); | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         dataMap.put("JSR", ""); | 
 |  |  |  | 
 |  |  |         List<ServiceFunddetail> fd = new ArrayList<>(); | 
 |  |  |         for(ServiceFund s : serviceFunds){ | 
 |  |  |         for (ServiceFund s : serviceFunds) { | 
 |  |  |             List<ServiceFunddetail> l = serviceFunddetailService.getAllDetailsByFDIDHZ(s.getId()); | 
 |  |  |             for(ServiceFunddetail df : l){ | 
 |  |  |             for (ServiceFunddetail df : l) { | 
 |  |  |                 fd.add(df); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |         double sh52 = 0; | 
 |  |  |         double shhj = 0; | 
 |  |  |  | 
 |  |  |         for(ServiceReimbursement sr : serviceReimbursements1){ | 
 |  |  |         for (ServiceReimbursement sr : serviceReimbursements1) { | 
 |  |  |             f28 += sr.getAmountrequested(); | 
 |  |  |             sh28 += sr.getAmountrequested(); | 
 |  |  |         } | 
 |  |  |         for(ServiceReimbursement sr : serviceReimbursements2){ | 
 |  |  |         for (ServiceReimbursement sr : serviceReimbursements2) { | 
 |  |  |             f51 += sr.getAmountrequested(); | 
 |  |  |             sh51 += sr.getAmountrequested(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         for(ServiceFunddetail s : fd){ | 
 |  |  |             if(s.getItemid() == 1){ | 
 |  |  |         for (ServiceFunddetail s : fd) { | 
 |  |  |             if (s.getItemid() == 1) { | 
 |  |  |                 f1 += s.getAmount(); | 
 |  |  |                 sh1 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 2){ | 
 |  |  |             if (s.getItemid() == 2) { | 
 |  |  |                 f2 += s.getAmount(); | 
 |  |  |                 sh2 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 3){ | 
 |  |  |             if (s.getItemid() == 3) { | 
 |  |  |                 f3 += s.getAmount(); | 
 |  |  |                 sh3 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 4){ | 
 |  |  |             if (s.getItemid() == 4) { | 
 |  |  |                 f4 += s.getAmount(); | 
 |  |  |                 sh4 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 5){ | 
 |  |  |             if (s.getItemid() == 5) { | 
 |  |  |                 f5 += s.getAmount(); | 
 |  |  |                 sh5 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 6){ | 
 |  |  |             if (s.getItemid() == 6) { | 
 |  |  |                 f6 += s.getAmount(); | 
 |  |  |                 sh6 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 7){ | 
 |  |  |             if (s.getItemid() == 7) { | 
 |  |  |                 f7 += s.getAmount(); | 
 |  |  |                 sh7 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 8){ | 
 |  |  |             if (s.getItemid() == 8) { | 
 |  |  |                 f8 += s.getAmount(); | 
 |  |  |                 sh8 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 9){ | 
 |  |  |             if (s.getItemid() == 9) { | 
 |  |  |                 f9 += s.getAmount(); | 
 |  |  |                 sh9 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 10){ | 
 |  |  |             if (s.getItemid() == 10) { | 
 |  |  |                 f10 += s.getAmount(); | 
 |  |  |                 sh10 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 11){ | 
 |  |  |             if (s.getItemid() == 11) { | 
 |  |  |                 f11 += s.getAmount(); | 
 |  |  |                 sh11 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 12){ | 
 |  |  |             if (s.getItemid() == 12) { | 
 |  |  |                 f12 += s.getAmount(); | 
 |  |  |                 sh12 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 13){ | 
 |  |  |             if (s.getItemid() == 13) { | 
 |  |  |                 f13 += s.getAmount(); | 
 |  |  |                 sh13 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 14){ | 
 |  |  |             if (s.getItemid() == 14) { | 
 |  |  |                 f14 += s.getAmount(); | 
 |  |  |                 sh14 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 15){ | 
 |  |  |             if (s.getItemid() == 15) { | 
 |  |  |                 f15 += s.getAmount(); | 
 |  |  |                 sh15 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 16){ | 
 |  |  |             if (s.getItemid() == 16) { | 
 |  |  |                 f16 += s.getAmount(); | 
 |  |  |                 sh16 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 17){ | 
 |  |  |             if (s.getItemid() == 17) { | 
 |  |  |                 f17 += s.getAmount(); | 
 |  |  |                 sh17 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 18){ | 
 |  |  |             if (s.getItemid() == 18) { | 
 |  |  |                 f18 += s.getAmount(); | 
 |  |  |                 sh18 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 19){ | 
 |  |  |             if (s.getItemid() == 19) { | 
 |  |  |                 f19 += s.getAmount(); | 
 |  |  |                 sh19 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 20){ | 
 |  |  |             if (s.getItemid() == 20) { | 
 |  |  |                 f20 += s.getAmount(); | 
 |  |  |                 sh20 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 21){ | 
 |  |  |             if (s.getItemid() == 21) { | 
 |  |  |                 f21 += s.getAmount(); | 
 |  |  |                 sh21 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 22){ | 
 |  |  |             if (s.getItemid() == 22) { | 
 |  |  |                 f22 += s.getAmount(); | 
 |  |  |                 sh22 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 23){ | 
 |  |  |             if (s.getItemid() == 23) { | 
 |  |  |                 f23 += s.getAmount(); | 
 |  |  |                 sh23 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 24){ | 
 |  |  |             if (s.getItemid() == 24) { | 
 |  |  |                 f24 += s.getAmount(); | 
 |  |  |                 sh24 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 25){ | 
 |  |  |             if (s.getItemid() == 25) { | 
 |  |  |                 f25 += s.getAmount(); | 
 |  |  |                 sh25 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 26){ | 
 |  |  |             if (s.getItemid() == 26) { | 
 |  |  |                 f26 += s.getAmount(); | 
 |  |  |                 sh26 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 27){ | 
 |  |  |             if (s.getItemid() == 27) { | 
 |  |  |                 f27 += s.getAmount(); | 
 |  |  |                 sh27 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if(s.getItemid() == 29){ | 
 |  |  |             if (s.getItemid() == 29) { | 
 |  |  |                 f29 += s.getAmount(); | 
 |  |  |                 sh29 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 30){ | 
 |  |  |             if (s.getItemid() == 30) { | 
 |  |  |                 f30 += s.getAmount(); | 
 |  |  |                 sh30 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 31){ | 
 |  |  |             if (s.getItemid() == 31) { | 
 |  |  |                 f31 += s.getAmount(); | 
 |  |  |                 sh31 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 32){ | 
 |  |  |             if (s.getItemid() == 32) { | 
 |  |  |                 f32 += s.getAmount(); | 
 |  |  |                 sh32 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 33){ | 
 |  |  |             if (s.getItemid() == 33) { | 
 |  |  |                 f33 += s.getAmount(); | 
 |  |  |                 sh33 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 34){ | 
 |  |  |             if (s.getItemid() == 34) { | 
 |  |  |                 f34 += s.getAmount(); | 
 |  |  |                 sh34 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 35){ | 
 |  |  |             if (s.getItemid() == 35) { | 
 |  |  |                 f35 += s.getAmount(); | 
 |  |  |                 sh35 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 36){ | 
 |  |  |             if (s.getItemid() == 36) { | 
 |  |  |                 f36 += s.getAmount(); | 
 |  |  |                 sh36 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 37){ | 
 |  |  |             if (s.getItemid() == 37) { | 
 |  |  |                 f37 += s.getAmount(); | 
 |  |  |                 sh37 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 38){ | 
 |  |  |             if (s.getItemid() == 38) { | 
 |  |  |                 f38 += s.getAmount(); | 
 |  |  |                 sh38 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 39){ | 
 |  |  |             if (s.getItemid() == 39) { | 
 |  |  |                 f39 += s.getAmount(); | 
 |  |  |                 sh39 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 40){ | 
 |  |  |             if (s.getItemid() == 40) { | 
 |  |  |                 f40 += s.getAmount(); | 
 |  |  |                 sh40 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 41){ | 
 |  |  |             if (s.getItemid() == 41) { | 
 |  |  |                 f41 += s.getAmount(); | 
 |  |  |                 sh41 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 42){ | 
 |  |  |             if (s.getItemid() == 42) { | 
 |  |  |                 f42 += s.getAmount(); | 
 |  |  |                 sh42 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 43){ | 
 |  |  |             if (s.getItemid() == 43) { | 
 |  |  |                 f43 += s.getAmount(); | 
 |  |  |                 sh43 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 44){ | 
 |  |  |             if (s.getItemid() == 44) { | 
 |  |  |                 f44 += s.getAmount(); | 
 |  |  |                 sh44 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 45){ | 
 |  |  |             if (s.getItemid() == 45) { | 
 |  |  |                 f45 += s.getAmount(); | 
 |  |  |                 sh45 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 46){ | 
 |  |  |             if (s.getItemid() == 46) { | 
 |  |  |                 f46 += s.getAmount(); | 
 |  |  |                 sh46 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 47){ | 
 |  |  |             if (s.getItemid() == 47) { | 
 |  |  |                 f47 += s.getAmount(); | 
 |  |  |                 sh47 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 48){ | 
 |  |  |             if (s.getItemid() == 48) { | 
 |  |  |                 f48 += s.getAmount(); | 
 |  |  |                 sh48 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 49){ | 
 |  |  |             if (s.getItemid() == 49) { | 
 |  |  |                 f49 += s.getAmount(); | 
 |  |  |                 sh49 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if(s.getItemid() == 50){ | 
 |  |  |             if (s.getItemid() == 50) { | 
 |  |  |                 f50 += s.getAmount(); | 
 |  |  |                 sh50 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |             if(s.getItemid() == 52){ | 
 |  |  |             if (s.getItemid() == 52) { | 
 |  |  |                 f52 += s.getAmount(); | 
 |  |  |                 sh52 += s.getTaxedamount(); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         hj = f1 + f2 + f3 + f4 + f5 + f6 + f7 + f8 + f9 + f10 + f11 + f12 + f13 + f14 + f15 + f16 + f17 + f18 + f19 + f20 + f21 + f22 + f23 + f24 + f25 + f26 + f27 + f28 + f29 + f30 + f31 + f32 + f33 + f34 + f35 | 
 |  |  |                 + f36 + f37 + f38 + f39 + f40 + f41 + f42 + f43 + f44 + f45 + f46 + f47 + f48 + f49 + f50 + f51 + f52; | 
 |  |  |         hj = f1 + f2 + f3 + f4 + f5 + f6 + f7 + f8 + f9 + f10 + f11 + f12 + f13 + f14 + f15 + f16 + f17 + f18 + f19 + f20 + f21 + f22 + f23 + f24 + f25 + f26 + f27 + f28 + f29 + f30 + f31 + f32 + f33 + f34 + f35 + f36 + f37 + f38 + f39 + f40 + f41 + f42 + f43 + f44 + f45 + f46 + f47 + f48 + f49 + f50 + f51 + f52; | 
 |  |  |  | 
 |  |  |         shhj = sh1 + sh2 + sh3 + sh4 + sh5 + sh6 + sh7 + sh8 + sh9 + sh10 + sh11 + sh12 + sh13 + sh14 + sh15 + sh16 + sh17 + sh18 + sh19 + sh20 + sh21 + sh22 + sh23 + sh24 + sh25 + sh26 + sh27 + sh28 + sh29 + sh30 + sh31 + sh32 + sh33 + sh34 + sh35 | 
 |  |  |                 + sh36 + sh37 + sh38 + sh39 + sh40 + sh41 + sh42 + sh43 + sh44 + sh45 + sh46 + sh47 + sh48 + sh49 + sh50 + sh51 + sh52; | 
 |  |  |         shhj = sh1 + sh2 + sh3 + sh4 + sh5 + sh6 + sh7 + sh8 + sh9 + sh10 + sh11 + sh12 + sh13 + sh14 + sh15 + sh16 + sh17 + sh18 + sh19 + sh20 + sh21 + sh22 + sh23 + sh24 + sh25 + sh26 + sh27 + sh28 + sh29 + sh30 + sh31 + sh32 + sh33 + sh34 + sh35 + sh36 + sh37 + sh38 + sh39 + sh40 + sh41 + sh42 + sh43 + sh44 + sh45 + sh46 + sh47 + sh48 + sh49 + sh50 + sh51 + sh52; | 
 |  |  |  | 
 |  |  |         dataMap.put("FY1", f1 == 0 ? "" : f1); | 
 |  |  |         dataMap.put("FY2", f2 == 0 ? "" : f2); | 
 |  |  | 
 |  |  |         dataMap.put("FY50", f50 == 0 ? "" : f50); | 
 |  |  |         dataMap.put("FY51", f51 == 0 ? "" : f51); | 
 |  |  |         dataMap.put("FY52", f52 == 0 ? "" : f52); | 
 |  |  |         dataMap.put("FY53", hj  == 0 ? "" : hj); | 
 |  |  |         dataMap.put("FY53", hj == 0 ? "" : hj); | 
 |  |  |  | 
 |  |  |         dataMap.put("SH1", sh1 == 0 ? "" : sh1); | 
 |  |  |         dataMap.put("SH2", sh2 == 0 ? "" : sh2); | 
 |  |  | 
 |  |  |     @GetMapping(value = "/downloadLWF/{id}") | 
 |  |  |     public Map downloadInfoLWF(@PathVariable("id") Long id) throws IOException { | 
 |  |  |         Map dataMap = new HashMap(); | 
 |  |  |         getDataLWF(dataMap,id); | 
 |  |  |         getDataLWF(dataMap, id); | 
 |  |  |         String filePath = getClass().getResource("/template/").getPath(); | 
 |  |  |         System.out.println(filePath); | 
 |  |  |         //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, | 
 |  |  |         configuration.setDirectoryForTemplateLoading(new File(filePath)); | 
 |  |  |  | 
 |  |  |         Template t=null; | 
 |  |  |         Template t = null; | 
 |  |  |         try { | 
 |  |  |             //捐献表.ftl为要装载的模板 | 
 |  |  |             t = configuration.getTemplate("器官获取专家劳务费统计表.ftl"); | 
 |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); | 
 |  |  |         String name = "器官获取专家劳务费统计表_"+dataMap.get("XM")+"_"+ newTime; | 
 |  |  |         String name = "器官获取专家劳务费统计表_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |  | 
 |  |  |         //输出文档路径及名称 | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         Writer out = null; | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); | 
 |  |  |  | 
 |  |  |         } catch (FileNotFoundException e1) { | 
 |  |  |             e1.printStackTrace(); | 
 |  |  | 
 |  |  |         } catch (TemplateException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         Map<String ,Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/"+name+".doc"); | 
 |  |  |         Map<String, Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         map.put("downloadName", name + ".doc"); | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         String date = formatter.format(dt); | 
 |  |  |         String time = date.substring(0, 10); | 
 |  |  |  | 
 |  |  |         dataMap.put("XZBH", serviceFund.getBh() == null ? "" : serviceFund.getBh()); | 
 |  |  |         dataMap.put("YYMMDD", time); | 
 |  |  |         dataMap.put("XM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname()); | 
 |  |  |         dataMap.put("GZRY", serviceFund.getUsername() == null ? "" : serviceFund.getUsername()); | 
 |  |  | 
 |  |  |         if (fd == null) { | 
 |  |  |             throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT); | 
 |  |  |         } | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String,Object>>(); | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String, Object>>(); | 
 |  |  |         int count = 0; | 
 |  |  |         double hj = 0; | 
 |  |  |  | 
 |  |  |         for(ServiceFunddetail f : fd){ | 
 |  |  |             Map<String, Object> map=new HashMap<String, Object>(); | 
 |  |  |         for (ServiceFunddetail f : fd) { | 
 |  |  |             Map<String, Object> map = new HashMap<String, Object>(); | 
 |  |  |             count++; | 
 |  |  |             map.put("XH", count); | 
 |  |  |             map.put("FWNR", f.getItemname() == null ? "" : f.getItemname()); | 
 |  |  | 
 |  |  |             map.put("DW", f.getUnitname() == null ? "" : f.getUnitname()); | 
 |  |  |             map.put("ZW", f.getTitle() == null ? "" : f.getTitle()); | 
 |  |  |             map.put("SFZH", f.getIdcardno() == null ? "" : f.getIdcardno()); | 
 |  |  |             map.put("JE", f.getAmount() == 0  ? "" : f.getAmount()); | 
 |  |  |             map.put("JE", f.getAmount() == 0 ? "" : f.getAmount()); | 
 |  |  |             hj += f.getAmount(); | 
 |  |  |             newsList.add(map); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         dataMap.put("list",newsList); | 
 |  |  |         dataMap.put("list", newsList); | 
 |  |  |  | 
 |  |  |         dataMap.put("HJ", hj); | 
 |  |  |  | 
 |  |  | 
 |  |  |     @GetMapping(value = "/downloadLL/{id}") | 
 |  |  |     public Map downloadInfoLL(@PathVariable("id") Long id) throws IOException { | 
 |  |  |         Map dataMap = new HashMap(); | 
 |  |  |         getDataLL(dataMap,id); | 
 |  |  |         getDataLL(dataMap, id); | 
 |  |  |         String filePath = getClass().getResource("/template/").getPath(); | 
 |  |  |         System.out.println(filePath); | 
 |  |  |         //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, | 
 |  |  |         configuration.setDirectoryForTemplateLoading(new File(filePath)); | 
 |  |  |  | 
 |  |  |         Template t=null; | 
 |  |  |         Template t = null; | 
 |  |  |         try { | 
 |  |  |             //捐献表.ftl为要装载的模板 | 
 |  |  |             t = configuration.getTemplate("伦理专家劳务费发放申请单.ftl"); | 
 |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); | 
 |  |  |         String name = "伦理专家劳务费发放申请单_"+dataMap.get("XM")+"_"+ newTime; | 
 |  |  |         String name = "伦理专家劳务费发放申请单_" + dataMap.get("XM") + "_" + newTime; | 
 |  |  |  | 
 |  |  |         //输出文档路径及名称 | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile()+"/download/wordtemplate/"+name+".doc"); | 
 |  |  |         File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         Writer out = null; | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8")); | 
 |  |  |             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); | 
 |  |  |  | 
 |  |  |         } catch (FileNotFoundException e1) { | 
 |  |  |             e1.printStackTrace(); | 
 |  |  | 
 |  |  |         } catch (TemplateException e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |         Map<String ,Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/"+name+".doc"); | 
 |  |  |         Map<String, Object> map = new HashMap<>(); | 
 |  |  |         map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); | 
 |  |  |         map.put("downloadName", name + ".doc"); | 
 |  |  |         return map; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         String date = formatter.format(dt); | 
 |  |  |         String time = date.substring(0, 10); | 
 |  |  |  | 
 |  |  |         dataMap.put("TBYYMMDD",time); | 
 |  |  |         dataMap.put("ZB", serviceFund.getDeptmentname() == null ? "" : serviceFund.getDeptmentname()); | 
 |  |  |         dataMap.put("XZBH", serviceFund.getBh() == null ? "" : serviceFund.getBh()); | 
 |  |  |         dataMap.put("TBYYMMDD", time); | 
 |  |  |         dataMap.put("BXDFJ", serviceFund.getAttachcount() == 0 ? "   " : serviceFund.getAttachcount()); | 
 |  |  |         dataMap.put("JXZXM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname()); | 
 |  |  |         dataMap.put("JSR", serviceFund.getUsername() == null ? "" : serviceFund.getUsername()); | 
 |  |  | 
 |  |  |         if (fd == null) { | 
 |  |  |             throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT); | 
 |  |  |         } | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String,Object>>(); | 
 |  |  |         List<Map<String, Object>> newsList = new ArrayList<Map<String, Object>>(); | 
 |  |  |         int count = 0; | 
 |  |  |         double sq = 0; | 
 |  |  |         double ks = 0; | 
 |  |  |         double sh = 0; | 
 |  |  |  | 
 |  |  |         for(ServiceFunddetail f : fd){ | 
 |  |  |             Map<String, Object> map=new HashMap<String, Object>(); | 
 |  |  |         for (ServiceFunddetail f : fd) { | 
 |  |  |             Map<String, Object> map = new HashMap<String, Object>(); | 
 |  |  |             count++; | 
 |  |  |             map.put("XH", count); | 
 |  |  |             map.put("FWNR", f.getItemname() == null ? "" : f.getItemname()); | 
 |  |  | 
 |  |  |             map.put("KH", f.getBankcardno() == null ? "" : f.getBankcardno()); | 
 |  |  |             map.put("SQ", f.getAmount() == 0.00 ? "" : String.format("%.2f", f.getAmount()).toString() + ""); | 
 |  |  |             sq += f.getAmount(); | 
 |  |  |             map.put("KS", f.getTaxamount() == 0.00 ? "" : String.format("%.2f",f.getTaxamount()).toString() + ""); | 
 |  |  |             map.put("KS", f.getTaxamount() == 0.00 ? "" : String.format("%.2f", f.getTaxamount()).toString() + ""); | 
 |  |  |             ks += f.getTaxamount(); | 
 |  |  |             map.put("SH", f.getTaxedamount() == 0.00 ? "" : String.format("%.2f", f.getTaxedamount()).toString() + ""); | 
 |  |  |             sh += f.getTaxedamount(); | 
 |  |  | 
 |  |  |             newsList.add(map); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         dataMap.put("list",newsList); | 
 |  |  |         dataMap.put("list", newsList); | 
 |  |  |  | 
 |  |  |         dataMap.put("SQHJ", String.format("%.2f", sq).toString() + ""); | 
 |  |  |         dataMap.put("KSHJ", String.format("%.2f", ks).toString() + ""); | 
 |  |  |         dataMap.put("SHHJ", String.format("%.2f", sh).toString() + ""); | 
 |  |  |  | 
 |  |  |         dataMap.put("SQZE", String.format("%.2f", sh).toString() + ""); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @ApiOperation("展示费用细节") | 
 |  |  |     @GetMapping(value = "/showFundDetailOne/{id}") | 
 |  |  |     public AjaxResult showFundDetailOne(@PathVariable Long id){ | 
 |  |  |     public AjaxResult showFundDetailOne(@PathVariable Long id) { | 
 |  |  |         ServiceFund serviceFund = serviceFundService.getById(id); | 
 |  |  |         return AjaxResult.success(serviceFundService.showFundDetailOne(serviceFund)); | 
 |  |  |     } | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @ApiOperation("展示费用细节") | 
 |  |  |     @GetMapping(value = "/showFundDetailTwo/{infoid}") | 
 |  |  |     public AjaxResult showFundDetailTwo(@PathVariable Long infoid){ | 
 |  |  |     public AjaxResult showFundDetailTwo(@PathVariable Long infoid) { | 
 |  |  |  | 
 |  |  |         return AjaxResult.success(serviceFundService.showFundDetailTwo(infoid)); | 
 |  |  |  | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 费用类型计数 | 
 |  |  |      */ | 
 |  |  | //    @NotRepeatCommit(key = "param:arg[1]", value = 30000) | 
 |  |  |     @ApiOperation("费用类型计数") | 
 |  |  |     @GetMapping(value = "/countItem/{infoid}/{itemid}") | 
 |  |  |     public AjaxResult countItem(@PathVariable Long infoid, @PathVariable Long itemid){ | 
 |  |  |     public AjaxResult countItem(@PathVariable Long infoid, @PathVariable Long itemid) { | 
 |  |  |  | 
 |  |  |         return AjaxResult.success(serviceFundService.countItem(infoid, itemid)); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 绩效计算 | 
 |  |  |      */ | 
 |  |  |     @ApiOperation("绩效计算") | 
 |  |  |     @Log(title = "绩效计算", businessType = BusinessType.INSERT) | 
 |  |  |     @PostMapping("/performance") | 
 |  |  |     @RepeatSubmit | 
 |  |  |     public AjaxResult performance(@RequestBody ServiceFundVO serviceFundVO) { | 
 |  |  |  | 
 |  |  |         return AjaxResult.success(serviceFundService.performance(serviceFundVO)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 合计个税 | 
 |  |  |      */ | 
 |  |  |     @NotRepeatCommit(key = "param:arg[1]", value = 30000) | 
 |  |  |     @ApiOperation("合计个税") | 
 |  |  |     @Log(title = "合计个税", businessType = BusinessType.INSERT) | 
 |  |  |     @PostMapping("/totaltax") | 
 |  |  |     public AjaxResult totaltax(@RequestBody TotalTaxVO totalTaxVO) { | 
 |  |  |         Map<String, List<ServiceFunddetailExcel>> totaltax = serviceFundService.totaltax(totalTaxVO); | 
 |  |  |         if (ObjectUtils.isEmpty(totaltax)) { | 
 |  |  |             throw new BaseException("合计个税失败"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Set<String> strings = totaltax.keySet(); | 
 |  |  |         String key2 = null; | 
 |  |  |         for (String key : strings) { | 
 |  |  |             key2 = key; | 
 |  |  |         } | 
 |  |  |         ExcelUtil<ServiceFunddetailExcel> util = new ExcelUtil<ServiceFunddetailExcel>(ServiceFunddetailExcel.class); | 
 |  |  |         AjaxResult ajaxResult = util.exportExcel(totaltax.get(key2), key2); | 
 |  |  |         String msg = (String) ajaxResult.get("msg"); | 
 |  |  |  | 
 |  |  |         Map dataMap = new HashMap(); | 
 |  |  |         dataMap.put("downloadUrl", "/profile/download/" + msg); | 
 |  |  |         dataMap.put("downloadName", msg); | 
 |  |  |  | 
 |  |  |         return AjaxResult.success(dataMap); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |