package com.ruoyi.web.controller.project;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
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.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.exception.base.BaseException;
|
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.ISysPostService;
|
import com.ruoyi.system.service.ISysUserService;
|
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.springframework.beans.factory.annotation.Autowired;
|
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.concurrent.ConcurrentHashMap;
|
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 {
|
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 IServiceFundflowService serviceFundflowService;
|
@Autowired
|
private IServiceDonatebaseinfoService serviceDonatebaseinfoService;
|
|
@Autowired
|
private IServiceReimbursementService serviceReimbursementService;
|
|
@Autowired
|
private IServiceSystemmessageService iServiceSystemmessageService;
|
|
@Autowired
|
private IServiceExternalpersonService externalpersonService;
|
|
@Autowired
|
private ISysPostService postService;
|
|
|
@Autowired
|
private DingTalkService dingTalkService;
|
|
@Autowired
|
private ISysUserService sysUserService;
|
|
public ServiceFundController() {
|
configuration = new Configuration();
|
configuration.setDefaultEncoding("utf-8");
|
}
|
|
/**
|
* 查询费用申请主列表
|
*/
|
@ApiOperation("查询费用申请主列表")
|
//// @PreAuthorize("@ss.hasPermi('project:fund:list')")
|
@GetMapping("/list")
|
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) {
|
startPage();
|
List<FundVO> list = serviceFundService.selectVOList(fundVO);
|
return getDataTable(list);
|
}
|
|
/**
|
* 根据权限显示审核列表
|
*/
|
@ApiOperation("根据权限显示审核列表")
|
@Log(title = "根据权限显示审核列表", businessType = BusinessType.OTHER)
|
@GetMapping("/listbypower")
|
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();
|
Integer checkstatus = spFinancialExpensesIn.getCheckstatus();
|
|
String donorname = spFinancialExpensesIn.getDonorname();
|
if (StringUtils.isEmpty(donorname)) {
|
donorname = null;
|
}
|
if (pageNum == null) {
|
pageNum = 1;
|
}
|
|
if (pageSize == null) {
|
pageSize = 10;
|
}
|
|
if (APPLICANT == null) {
|
APPLICANT = "";
|
}
|
|
if (APPLICATIONBEGTIME == null) {
|
APPLICATIONBEGTIME = "";
|
}
|
|
if (APPLICATIONENDTIME == null) {
|
APPLICATIONENDTIME = "";
|
}
|
|
//startPage();
|
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.getApplyTime().compareTo(o2.getApplyTime());
|
}
|
});
|
return getCustomDataTable(list, pageNum, pageSize);
|
}
|
|
/**
|
* 根据权限显示审核列表
|
*/
|
@ApiOperation("根据权限显示审核列表")
|
@Log(title = "根据权限显示审核列表", businessType = BusinessType.OTHER)
|
@PostMapping("/getExpertfeeList")
|
public TableDataInfo getExpertfeeList(@RequestBody SpSelectExpertfee spSelectExpertfee) {
|
List<SpFinancialExpensesFundOut> expertfeeList = serviceFundService.getExpertfeeList(spSelectExpertfee);
|
return getCustomDataTable(expertfeeList, spSelectExpertfee.getPageNum(), spSelectExpertfee.getPageSize());
|
}
|
|
@ApiOperation("查询费用申请主列表")
|
//// @PreAuthorize("@ss.hasPermi('project:fund:list')")
|
@GetMapping(value = "/getInfo/{infoid}")
|
public AjaxResult getInfoByInfoId(@PathVariable("infoid") Long infoid) {
|
return AjaxResult.success(serviceFundService.getInfoByInfoId(infoid));
|
}
|
|
|
@GetMapping("/getFundId/{infoid}")
|
public AjaxResult getFundId(@PathVariable("infoid") Long infoid) {
|
return AjaxResult.success(serviceFundService.getFundId(infoid));
|
}
|
|
// @GetMapping("/addFundSharedInfo/{id}")
|
// public AjaxResult addFundSharedInfo(@PathVariable("id") Long id) {
|
// return AjaxResult.success(serviceFundService.addFundSharedInfo(id));
|
// }
|
|
|
/**
|
* 导出费用申请主列表
|
*/
|
@ApiOperation("导出费用申请主列表")
|
//// @PreAuthorize("@ss.hasPermi('project:fund:export')")
|
@Log(title = "费用申请主", businessType = BusinessType.EXPORT)
|
@GetMapping("/export")
|
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) {
|
return AjaxResult.success(serviceFundService.getById(id));
|
}
|
|
/**
|
* 新增费用申请主
|
*/
|
@ApiOperation("新增费用申请主")
|
//// @PreAuthorize("@ss.hasPermi('project:fund:add')")
|
@Log(title = "费用申请主", businessType = BusinessType.INSERT)
|
@PostMapping("/add")
|
@RepeatSubmit
|
@Options(useGeneratedKeys = true, keyProperty = "id")
|
public AjaxResult add(@RequestBody ServiceFund serviceFund) {
|
boolean b = serviceFundService.save(serviceFund);
|
Long id = serviceFund.getId();
|
// if (b) {
|
// addReiSharedDatd(serviceFund, 1);
|
// }
|
return AjaxResult.success(id);
|
}
|
|
/**
|
* fund表中,修改fundTaxId
|
*/
|
@ApiOperation("fund表中,修改fundTaxId")
|
@PostMapping("/editFundTaxId")
|
public AjaxResult editFundTaxId(@RequestBody ServiceFund serviceFund) {
|
boolean b = serviceFundService.updateFundTaxIdById(serviceFund.getId(), serviceFund.getFundTaxId());
|
return AjaxResult.success(b);
|
}
|
|
/**
|
* 新增费用汇总
|
*/
|
@ApiOperation("新增费用汇总")
|
@Log(title = "新增费用汇总", businessType = BusinessType.INSERT)
|
@PostMapping("/addOrUpdateNew")
|
@RepeatSubmit
|
@Options(useGeneratedKeys = true, keyProperty = "id")
|
public AjaxResult addOrUpdateNew(@RequestBody ServiceFundVO serviceFundVO) {
|
|
return AjaxResult.success(serviceFundService.addOrUpdateNew(serviceFundVO));
|
}
|
|
|
/**
|
* 审核费用
|
*/
|
@ApiOperation("审核费用")
|
@RepeatSubmit
|
// @Log(title = "审核费用", businessType = BusinessType.OTHER)
|
@PostMapping("/checkfund")
|
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.get(0).getFlowlevel() - 1 != serviceFund.getFlowlevel()) {
|
return AjaxResult.error(HttpStatus.ERROR, "当前人员与此记录的审核级别不符");
|
}
|
|
if (serviceFundflowrules != null && serviceFundflowrules.stream().count() > 0) {
|
TotalLevel = serviceFundflowrules.get(0).getTotallevel();
|
}
|
|
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;
|
|
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.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;
|
}
|
}
|
|
SysUser sysUser = sysUserService.selectUserByUserName(serviceFund.getUserno());
|
ArrayList<ConcurrentHashMap<String, Object>> contentList = new ArrayList<>();
|
ConcurrentHashMap map = new ConcurrentHashMap();
|
map.put("审批人:", loginUser.getUser().getUserName());
|
map.put("审批时间:", new Date());
|
map.put("意见:", "不通过");
|
if (StringUtils.isNotBlank(checkFundVO.getFlowcontent())) map.put("意见:", checkFundVO.getFlowcontent());
|
contentList.add(map);
|
DingTalkReqVo dingTalkReqVo = new DingTalkReqVo();
|
dingTalkReqVo.setTitle("财务系统驳回信息");
|
dingTalkReqVo.setNumber(sysUser.getPhonenumber());
|
dingTalkReqVo.setContents(contentList);
|
dingTalkService.sendNotification(dingTalkReqVo);
|
}
|
|
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());
|
} else {
|
serviceFundflow.setFlowcontent(checkFundVO.getFlowconclusion() == 1 ? "通过" : "不通过");
|
}
|
serviceFundflow.setFlowlevel(OriginalFlowLevel + 1);
|
|
Boolean aBoolean = serviceFundflowService.saveData(serviceFundflow);
|
log.info("sserviceFund保存的的值是-------- :{}", aBoolean);
|
|
//053审批通过之后,就需要把“办公室主任”的名字填上
|
if (checkFundVO.getFlowconclusion() == 1 && user.getUserName().equals("053")) {
|
serviceFund.setOfficedirector(user.getNickName());
|
serviceFund.setUploadStates(1);
|
}
|
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.setUpdateTime(new Date());
|
serviceSystemmessage.setUpdateBy(user.getNickName());
|
serviceSystemmessage.setIsread(0);
|
serviceSystemmessage.setMessagetype(1);
|
serviceSystemmessage.setRelevantno(serviceFund.getId());
|
|
if (CheckFlag == 1) {
|
|
//通过
|
if (serviceFund.getApplytype().equals("1")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核通过");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的专家劳务费捐献案例【" + serviceFund.getDonorname() + "】的费用申请已通过");
|
} else if (serviceFund.getApplytype().equals("2")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核通过");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的伦理专家劳务费捐献案例【" + serviceFund.getDonorname() + "】的费用申请已通过");
|
} else if (serviceFund.getApplytype().equals("3")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核通过");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的医学成本捐献案例【" + serviceFund.getDonorname() + "】的费用申请已通过");
|
} else if (serviceFund.getApplytype().equals("4")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核通过");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的办公费用申请已通过");
|
} else if (serviceFund.getApplytype().equals("5")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核通过");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的绩效申请已通过");
|
}
|
} else {
|
//驳回
|
if (serviceFund.getApplytype().equals("1")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核驳回");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的专家劳务费捐献案例【" + serviceFund.getDonorname() + "】的费用申请已被驳回,原因: " + checkFundVO.getFlowcontent() + "");
|
} else if (serviceFund.getApplytype().equals("2")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核驳回");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的伦理专家劳务费捐献案例【" + serviceFund.getDonorname() + "】的费用申请已被驳回,原因: " + checkFundVO.getFlowcontent() + "");
|
} else if (serviceFund.getApplytype().equals("3")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核驳回");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的医学成本捐献案例【" + serviceFund.getDonorname() + "】的费用申请已被驳回,原因: " + checkFundVO.getFlowcontent() + "");
|
} else if (serviceFund.getApplytype().equals("4")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核驳回");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的办公费用申请已驳回,原因: " + checkFundVO.getFlowcontent() + "");
|
} else if (serviceFund.getApplytype().equals("5")) {
|
serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核驳回");
|
serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceFund.getCreateTime()) + "提交的绩效申请已驳回,原因: " + checkFundVO.getFlowcontent() + "");
|
}
|
}
|
iServiceSystemmessageService.save(serviceSystemmessage);
|
return AjaxResult.success();
|
} else {
|
return AjaxResult.error(HttpStatus.NO_CONTENT, "费用编号不正确");
|
}
|
}
|
|
|
/**
|
* 费用上报
|
*/
|
@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);
|
}
|
|
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)
|
@GetMapping("/remove/{ids}")
|
public AjaxResult remove(@PathVariable Long[] ids) {
|
return toAjax(serviceFundService.removeByIds(Arrays.asList(ids)));
|
}
|
|
/**
|
* 下载专家劳务费发放表
|
*/
|
@ApiOperation("专家劳务费发放表")
|
@GetMapping(value = "/downloadLW/{id}")
|
public Map downloadInfoLW(@PathVariable("id") Long id) throws IOException {
|
Map dataMap = new HashMap();
|
String dataLW = getDataLW(dataMap, id);
|
String filePath = getClass().getResource("/template/").getPath();
|
System.out.println(filePath);
|
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
|
configuration.setDirectoryForTemplateLoading(new File(filePath));
|
|
Template t = null;
|
try {
|
//捐献表.ftl为要装载的模板
|
t = configuration.getTemplate("专家劳务费发放申请单(1).ftl");
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
|
|
String name = "专家劳务费发放申请单_" + dataMap.get("XM") + "_" + newTime;
|
if (dataLW.equals("4")) {
|
name = "办公费用申请单_" + dataMap.get("XM") + "_" + newTime;
|
}
|
|
//输出文档路径及名称
|
File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
|
Writer out = null;
|
|
try {
|
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.put("downloadName", name + ".doc");
|
return map;
|
}
|
|
private String getDataLW(Map dataMap, Long id) {
|
ServiceFund serviceFund = serviceFundService.getById(id);
|
if (serviceFund == null) {
|
throw new ServiceException("下载失败,用户信息出错", HttpStatus.NO_CONTENT);
|
}
|
Date dt = serviceFund.getCreateTime();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String date = formatter.format(dt);
|
String time = date.substring(0, 10);
|
|
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() + "元。");
|
if (serviceFund.getApplytype().equals("1")) {
|
dataMap.put("FYXM1", "人体器官捐献专家劳务费:" + serviceFund.getPretaxcost() + "元 (其中税后费用由中心承担税费)。");
|
} else if (serviceFund.getApplytype().equals("4")) {
|
dataMap.put("FYXM1", "办公费用:" + serviceFund.getPretaxcost());
|
}
|
dataMap.put("FYXM2", "");
|
dataMap.put("FYXM3", "");
|
dataMap.put("JEXS", serviceFund.getPretaxcost());
|
dataMap.put("JEDS", convert(serviceFund.getPretaxcost()) + "整");
|
dataMap.put("BXBZ", serviceFund.getRemark() == null ? "" : serviceFund.getRemark());
|
|
|
dataMap.put("YYMMDD", time);
|
dataMap.put("XM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname());
|
dataMap.put("GZRY", serviceFund.getUsername() == null ? "" : serviceFund.getUsername());
|
dataMap.put("ZZ", serviceFund.getManagername() == null ? "" : serviceFund.getManagername());
|
|
List<ServiceFunddetail> fd = serviceFunddetailService.getAllDetailsByFDIDHZ(id);
|
if (fd == null) {
|
throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT);
|
}
|
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>();
|
|
|
map.put("XH", f.getItemcode() == null ? "" : f.getItemcode());
|
String itemName = f.getItemname() == null ? "" : f.getItemname();
|
String servicesscopename = f.getServicesscopename() == null ? "" : "(" + f.getServicesscopename() + ")";
|
|
map.put("FWNR", itemName + servicesscopename);
|
map.put("ZZXM", f.getBeneficiaryname() == null ? "" : f.getBeneficiaryname());
|
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("YH", f.getDepositbank() == null ? "" : f.getDepositbank());
|
map.put("KH", f.getBankcardno() == null ? "" : f.getBankcardno());
|
map.put("SQ", f.getAmount() == 0.00 ? "" : f.getAmount());
|
sq += f.getAmount();
|
map.put("KS", f.getTaxamount() == 0.00 ? "" : f.getTaxamount());
|
ks += f.getTaxamount();
|
map.put("SH", f.getTaxedamount() == 0.00 ? "" : f.getTaxedamount());
|
sh += f.getTaxedamount();
|
|
newsList.add(map);
|
}
|
|
// 专家劳务费统计表
|
List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();
|
|
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);
|
|
return serviceFund.getApplytype();
|
}
|
|
|
/**
|
* 下载捐献者善后成本表
|
*/
|
@ApiOperation("捐献者善后成本表")
|
@GetMapping(value = "/downloadSH/{id}")
|
public Map downloadInfoSH(@PathVariable("id") Long id) throws IOException {
|
Map dataMap = new HashMap();
|
getDataSH(dataMap, id);
|
String filePath = getClass().getResource("/template/").getPath();
|
System.out.println(filePath);
|
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
|
configuration.setDirectoryForTemplateLoading(new File(filePath));
|
|
Template t = null;
|
try {
|
//捐献表.ftl为要装载的模板
|
t = configuration.getTemplate("捐献者善后成本表.ftl");
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
|
String name = "捐献者善后成本表_" + dataMap.get("XM") + "_" + newTime;
|
|
//输出文档路径及名称
|
File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
|
Writer out = null;
|
|
try {
|
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");
|
return map;
|
}
|
|
private void getDataSH(Map dataMap, Long id) {
|
ServiceFund serviceFund = serviceFundService.getById(id);
|
if (serviceFund == null) {
|
throw new ServiceException("下载失败,用户信息出错", HttpStatus.NO_CONTENT);
|
}
|
Date dt = serviceFund.getCreateTime();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String date = formatter.format(dt);
|
String time = date.substring(0, 10);
|
|
dataMap.put("YYMMDD", time);
|
dataMap.put("XM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname());
|
dataMap.put("GZRY", serviceFund.getUsername() == null ? "" : serviceFund.getUsername());
|
dataMap.put("ZZ", serviceFund.getManagername() == null ? "" : serviceFund.getManagername());
|
|
List<ServiceFunddetail> fd = serviceFunddetailService.getAllDetailsByFDIDHZ(id);
|
if (fd == null) {
|
throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT);
|
}
|
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>();
|
count++;
|
map.put("XH", count);
|
map.put("FWNR", f.getItemname() == null ? "" : f.getItemname());
|
map.put("ZZXM", f.getBeneficiaryname() == null ? "" : f.getBeneficiaryname());
|
map.put("DW", f.getUnitname() == null ? "" : f.getUnitname());
|
|
map.put("SFZH", f.getIdcardno() == null ? "" : f.getIdcardno());
|
map.put("YH", f.getDepositbank() == null ? "" : f.getDepositbank());
|
map.put("KH", f.getBankcardno() == null ? "" : f.getBankcardno());
|
map.put("SQ", f.getAmount() == 0.00 ? "" : f.getAmount());
|
sq += f.getAmount();
|
map.put("KS", f.getTaxamount() == 0.00 ? "" : f.getTaxamount());
|
ks += f.getTaxamount();
|
map.put("SH", f.getTaxedamount() == 0.00 ? "" : f.getTaxedamount());
|
sh += f.getTaxedamount();
|
|
newsList.add(map);
|
}
|
|
dataMap.put("list", newsList);
|
|
dataMap.put("SQHJ", sq);
|
dataMap.put("KSHJ", ks);
|
dataMap.put("SHHJ", sh);
|
|
}
|
|
/**
|
* 下载捐献者家属交通食宿费用表
|
*/
|
@ApiOperation("捐献者家属交通食宿费用表")
|
@GetMapping(value = "/downloadSS/{id}")
|
public Map downloadInfoSS(@PathVariable("id") Long id) throws IOException {
|
Map dataMap = new HashMap();
|
getDataSS(dataMap, id);
|
String filePath = getClass().getResource("/template/").getPath();
|
System.out.println(filePath);
|
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
|
configuration.setDirectoryForTemplateLoading(new File(filePath));
|
|
Template t = null;
|
try {
|
//捐献表.ftl为要装载的模板
|
t = configuration.getTemplate("捐献者家属交通食宿费用表.ftl");
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
|
String name = "捐献者家属交通食宿费用表_" + dataMap.get("XM") + "_" + newTime;
|
|
//输出文档路径及名称
|
File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
|
Writer out = null;
|
|
try {
|
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.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);
|
}
|
Date dt = serviceFund.getCreateTime();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String date = formatter.format(dt);
|
String time = date.substring(0, 10);
|
|
dataMap.put("YYMMDD", time);
|
dataMap.put("XM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname());
|
dataMap.put("GZRY", serviceFund.getUsername() == null ? "" : serviceFund.getUsername());
|
dataMap.put("ZZ", serviceFund.getManagername() == null ? "" : serviceFund.getManagername());
|
|
List<ServiceFunddetail> fd = serviceFunddetailService.getAllDetailsByFDIDHZ(id);
|
if (fd == null) {
|
throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT);
|
}
|
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>();
|
count++;
|
map.put("XH", count);
|
map.put("FWNR", f.getItemname() == null ? "" : f.getItemname());
|
map.put("ZZXM", f.getBeneficiaryname() == null ? "" : f.getBeneficiaryname());
|
|
map.put("SFZH", f.getIdcardno() == null ? "" : f.getIdcardno());
|
map.put("YH", f.getDepositbank() == null ? "" : f.getDepositbank());
|
map.put("KH", f.getBankcardno() == null ? "" : f.getBankcardno());
|
map.put("JE", f.getAmount() == 0.00 ? "" : f.getAmount());
|
hj += f.getAmount();
|
newsList.add(map);
|
}
|
|
dataMap.put("list", newsList);
|
dataMap.put("JEHJ", hj);
|
|
}
|
|
/**
|
* 下载捐献者医学、办公、绩效成本统计表
|
*/
|
@ApiOperation("捐献者医学、办公、绩效成本统计表")
|
@GetMapping(value = "/downloadYX/{id}")
|
public Map downloadInfoYX(@PathVariable("id") Long id) throws IOException {
|
Map dataMap = new HashMap();
|
String dataYX = getDataYX(dataMap, id);
|
String filePath = getClass().getResource("/template/").getPath();
|
log.info("filePath的值为:{}", filePath);
|
System.out.println(filePath);
|
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
|
configuration.setDirectoryForTemplateLoading(new File(filePath));
|
|
Template t = null;
|
try {
|
//捐献表.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 = 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");
|
Writer out = null;
|
try {
|
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"));
|
|
} catch (FileNotFoundException e1) {
|
log.error("FileNotFoundException报错信息是:{}", e1.getMessage());
|
// e1.printStackTrace();
|
}
|
try {
|
|
t.process(dataMap, out);
|
} catch (TemplateException e) {
|
log.error("TemplateException报错信自是:{}", e.getMessage());
|
e.getMessage();
|
}
|
Map<String, Object> map = new HashMap<>();
|
map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc");
|
map.put("downloadName", name + ".doc");
|
return map;
|
}
|
|
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()) && serviceFund.getApplytype().equals("5")) {
|
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.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>>();
|
int seqno = 0;
|
|
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());
|
|
|
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 = "";
|
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.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().trim());
|
dataMap.put("GZRY", serviceFund.getUsername() == null ? "" : serviceFund.getUsername());
|
dataMap.put("ZZ", serviceFund.getManagername() == null ? "" : serviceFund.getManagername());
|
|
|
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>();
|
count++;
|
map.put("XH", count);
|
map.put("FWNR", f.getItemname() == null ? "" : f.getItemname());
|
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());
|
|
map.put("JE", f.getAmount() == 0.00 ? "" : f.getAmount());
|
hj += f.getAmount();
|
map.put("BZ", f.getRemark() == null ? "" : f.getRemark());
|
|
newsList.add(map);
|
}
|
|
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;
|
|
}
|
|
/**
|
* 下载费用报销单
|
*/
|
@ApiOperation("费用报销单")
|
@GetMapping(value = "/downloadBX/{id}")
|
public Map downloadInfoBX(@PathVariable("id") Long id) throws IOException {
|
Map dataMap = new HashMap();
|
getDataBX(dataMap, id);
|
String filePath = getClass().getResource("/template/").getPath();
|
System.out.println(filePath);
|
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
|
configuration.setDirectoryForTemplateLoading(new File(filePath));
|
|
Template t = null;
|
try {
|
//捐献表.ftl为要装载的模板
|
t = configuration.getTemplate("费用报销单.ftl");
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
|
String name = "费用报销单_" + dataMap.get("XM") + "_" + newTime;
|
|
//输出文档路径及名称
|
File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
|
Writer out = null;
|
|
try {
|
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.put("downloadName", name + ".doc");
|
return map;
|
}
|
|
private void getDataBX(Map dataMap, Long id) {
|
ServiceFund serviceFund = serviceFundService.getById(id);
|
if (serviceFund == null) {
|
throw new ServiceException("下载失败,用户信息出错", HttpStatus.NO_CONTENT);
|
}
|
Date dt = serviceFund.getCreateTime();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String date = formatter.format(dt);
|
String time = date.substring(0, 10);
|
|
dataMap.put("YYMMDD", time);
|
dataMap.put("FJ", serviceFund.getAttachcount() == 0 ? " " : serviceFund.getAttachcount());
|
dataMap.put("XM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname());
|
dataMap.put("JSR", serviceFund.getFinancechecher() == null ? "" : serviceFund.getFinancechecher());
|
|
dataMap.put("FYXM1", "获取专家总费用: " + serviceFund.getProcurementcost() + "元; " + "专家费用总金额: " + serviceFund.getExpertcost() + "元; " + "伦理审查费用总金额: " + serviceFund.getEthicscost() + "元");
|
dataMap.put("FYXM2", "捐献者医学成本总金额: " + serviceFund.getMedicalcost() + "元; " + "捐献者善后成本总金额: " + serviceFund.getAftercarecost() + "元");
|
dataMap.put("FYXM3", "捐献者家属食宿费总金额: " + serviceFund.getFamilycost() + "元");
|
|
dataMap.put("XS", serviceFund.getTotalcost());
|
dataMap.put("DS", convert(serviceFund.getTotalcost()) + "整");
|
dataMap.put("BZ", serviceFund.getRemark() == null ? "" : serviceFund.getRemark());
|
|
}
|
|
/**
|
* 下载人体捐献器官获取专家劳务费支出汇总表
|
*/
|
@ApiOperation("人体捐献器官获取专家劳务费支出汇总表")
|
@GetMapping(value = "/downloadHZ/{infoid}")
|
public Map downloadInfoHZ(@PathVariable("infoid") Long infoid) throws IOException {
|
Map dataMap = new HashMap();
|
getDataHZ(dataMap, infoid);
|
String filePath = getClass().getResource("/template/").getPath();
|
System.out.println(filePath);
|
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
|
configuration.setDirectoryForTemplateLoading(new File(filePath));
|
|
Template t = null;
|
try {
|
//捐献表.ftl为要装载的模板
|
t = configuration.getTemplate("获取费用支出汇总表.ftl");
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
|
String name = "获取费用支出汇总表_" + dataMap.get("XM") + "_" + newTime;
|
|
//输出文档路径及名称
|
File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
|
Writer out = null;
|
|
try {
|
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.put("downloadName", name + ".doc");
|
return map;
|
}
|
|
|
private void getDataHZ(Map dataMap, Long infoid) {
|
List<ServiceFund> serviceFunds = serviceFundService.getInfoByInfoId(infoid);
|
|
dataMap.put("XM", serviceDonatebaseinfoService.getDonateNameById(infoid));
|
dataMap.put("JSR", "");
|
|
List<ServiceFunddetail> fd = new ArrayList<>();
|
for (ServiceFund s : serviceFunds) {
|
List<ServiceFunddetail> l = serviceFunddetailService.getAllDetailsByFDIDHZ(s.getId());
|
for (ServiceFunddetail df : l) {
|
fd.add(df);
|
}
|
}
|
|
List<ServiceReimbursement> serviceReimbursements1 = serviceReimbursementService.getInfoByInfoId(infoid);
|
List<ServiceReimbursement> serviceReimbursements2 = serviceReimbursementService.getInfoByInfoIdRelatives(infoid);
|
|
double f1 = 0;
|
double f2 = 0;
|
double f3 = 0;
|
double f4 = 0;
|
double f5 = 0;
|
double f6 = 0;
|
double f7 = 0;
|
double f8 = 0;
|
double f9 = 0;
|
double f10 = 0;
|
double f11 = 0;
|
double f12 = 0;
|
double f13 = 0;
|
double f14 = 0;
|
double f15 = 0;
|
double f16 = 0;
|
double f17 = 0;
|
double f18 = 0;
|
double f19 = 0;
|
double f20 = 0;
|
double f21 = 0;
|
double f22 = 0;
|
double f23 = 0;
|
double f24 = 0;
|
double f25 = 0;
|
double f26 = 0;
|
double f27 = 0;
|
double f28 = 0;
|
double f29 = 0;
|
double f30 = 0;
|
double f31 = 0;
|
double f32 = 0;
|
double f33 = 0;
|
double f34 = 0;
|
double f35 = 0;
|
double f36 = 0;
|
double f37 = 0;
|
double f38 = 0;
|
double f39 = 0;
|
double f40 = 0;
|
double f41 = 0;
|
double f42 = 0;
|
double f43 = 0;
|
double f44 = 0;
|
double f45 = 0;
|
double f46 = 0;
|
double f47 = 0;
|
double f48 = 0;
|
double f49 = 0;
|
double f50 = 0;
|
double f51 = 0;
|
double f52 = 0;
|
double hj = 0;
|
|
double sh1 = 0;
|
double sh2 = 0;
|
double sh3 = 0;
|
double sh4 = 0;
|
double sh5 = 0;
|
double sh6 = 0;
|
double sh7 = 0;
|
double sh8 = 0;
|
double sh9 = 0;
|
double sh10 = 0;
|
double sh11 = 0;
|
double sh12 = 0;
|
double sh13 = 0;
|
double sh14 = 0;
|
double sh15 = 0;
|
double sh16 = 0;
|
double sh17 = 0;
|
double sh18 = 0;
|
double sh19 = 0;
|
double sh20 = 0;
|
double sh21 = 0;
|
double sh22 = 0;
|
double sh23 = 0;
|
double sh24 = 0;
|
double sh25 = 0;
|
double sh26 = 0;
|
double sh27 = 0;
|
double sh28 = 0;
|
double sh29 = 0;
|
double sh30 = 0;
|
double sh31 = 0;
|
double sh32 = 0;
|
double sh33 = 0;
|
double sh34 = 0;
|
double sh35 = 0;
|
double sh36 = 0;
|
double sh37 = 0;
|
double sh38 = 0;
|
double sh39 = 0;
|
double sh40 = 0;
|
double sh41 = 0;
|
double sh42 = 0;
|
double sh43 = 0;
|
double sh44 = 0;
|
double sh45 = 0;
|
double sh46 = 0;
|
double sh47 = 0;
|
double sh48 = 0;
|
double sh49 = 0;
|
double sh50 = 0;
|
double sh51 = 0;
|
double sh52 = 0;
|
double shhj = 0;
|
|
for (ServiceReimbursement sr : serviceReimbursements1) {
|
f28 += sr.getAmountrequested();
|
sh28 += sr.getAmountrequested();
|
}
|
for (ServiceReimbursement sr : serviceReimbursements2) {
|
f51 += sr.getAmountrequested();
|
sh51 += sr.getAmountrequested();
|
}
|
|
for (ServiceFunddetail s : fd) {
|
if (s.getItemid() == 1) {
|
f1 += s.getAmount();
|
sh1 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 2) {
|
f2 += s.getAmount();
|
sh2 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 3) {
|
f3 += s.getAmount();
|
sh3 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 4) {
|
f4 += s.getAmount();
|
sh4 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 5) {
|
f5 += s.getAmount();
|
sh5 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 6) {
|
f6 += s.getAmount();
|
sh6 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 7) {
|
f7 += s.getAmount();
|
sh7 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 8) {
|
f8 += s.getAmount();
|
sh8 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 9) {
|
f9 += s.getAmount();
|
sh9 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 10) {
|
f10 += s.getAmount();
|
sh10 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 11) {
|
f11 += s.getAmount();
|
sh11 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 12) {
|
f12 += s.getAmount();
|
sh12 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 13) {
|
f13 += s.getAmount();
|
sh13 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 14) {
|
f14 += s.getAmount();
|
sh14 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 15) {
|
f15 += s.getAmount();
|
sh15 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 16) {
|
f16 += s.getAmount();
|
sh16 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 17) {
|
f17 += s.getAmount();
|
sh17 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 18) {
|
f18 += s.getAmount();
|
sh18 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 19) {
|
f19 += s.getAmount();
|
sh19 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 20) {
|
f20 += s.getAmount();
|
sh20 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 21) {
|
f21 += s.getAmount();
|
sh21 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 22) {
|
f22 += s.getAmount();
|
sh22 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 23) {
|
f23 += s.getAmount();
|
sh23 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 24) {
|
f24 += s.getAmount();
|
sh24 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 25) {
|
f25 += s.getAmount();
|
sh25 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 26) {
|
f26 += s.getAmount();
|
sh26 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 27) {
|
f27 += s.getAmount();
|
sh27 += s.getTaxedamount();
|
}
|
|
if (s.getItemid() == 29) {
|
f29 += s.getAmount();
|
sh29 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 30) {
|
f30 += s.getAmount();
|
sh30 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 31) {
|
f31 += s.getAmount();
|
sh31 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 32) {
|
f32 += s.getAmount();
|
sh32 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 33) {
|
f33 += s.getAmount();
|
sh33 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 34) {
|
f34 += s.getAmount();
|
sh34 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 35) {
|
f35 += s.getAmount();
|
sh35 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 36) {
|
f36 += s.getAmount();
|
sh36 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 37) {
|
f37 += s.getAmount();
|
sh37 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 38) {
|
f38 += s.getAmount();
|
sh38 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 39) {
|
f39 += s.getAmount();
|
sh39 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 40) {
|
f40 += s.getAmount();
|
sh40 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 41) {
|
f41 += s.getAmount();
|
sh41 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 42) {
|
f42 += s.getAmount();
|
sh42 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 43) {
|
f43 += s.getAmount();
|
sh43 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 44) {
|
f44 += s.getAmount();
|
sh44 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 45) {
|
f45 += s.getAmount();
|
sh45 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 46) {
|
f46 += s.getAmount();
|
sh46 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 47) {
|
f47 += s.getAmount();
|
sh47 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 48) {
|
f48 += s.getAmount();
|
sh48 += s.getTaxedamount();
|
}
|
if (s.getItemid() == 49) {
|
f49 += s.getAmount();
|
sh49 += s.getTaxedamount();
|
}
|
|
if (s.getItemid() == 50) {
|
f50 += s.getAmount();
|
sh50 += s.getTaxedamount();
|
}
|
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;
|
|
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("FY3", f3 == 0 ? "" : f3);
|
dataMap.put("FY4", f4 == 0 ? "" : f4);
|
dataMap.put("FY5", f5 == 0 ? "" : f5);
|
dataMap.put("FY6", f6 == 0 ? "" : f6);
|
dataMap.put("FY7", f7 == 0 ? "" : f7);
|
dataMap.put("FY8", f8 == 0 ? "" : f8);
|
dataMap.put("FY9", f9 == 0 ? "" : f9);
|
dataMap.put("FY10", f10 == 0 ? "" : f10);
|
dataMap.put("FY11", f11 == 0 ? "" : f11);
|
dataMap.put("FY12", f12 == 0 ? "" : f12);
|
dataMap.put("FY13", f13 == 0 ? "" : f13);
|
dataMap.put("FY14", f14 == 0 ? "" : f14);
|
dataMap.put("FY15", f15 == 0 ? "" : f15);
|
dataMap.put("FY16", f16 == 0 ? "" : f16);
|
dataMap.put("FY17", f17 == 0 ? "" : f17);
|
dataMap.put("FY18", f18 == 0 ? "" : f18);
|
dataMap.put("FY19", f19 == 0 ? "" : f19);
|
dataMap.put("FY20", f20 == 0 ? "" : f20);
|
dataMap.put("FY21", f21 == 0 ? "" : f21);
|
dataMap.put("FY22", f22 == 0 ? "" : f22);
|
dataMap.put("FY23", f23 == 0 ? "" : f23);
|
dataMap.put("FY24", f24 == 0 ? "" : f24);
|
dataMap.put("FY25", f25 == 0 ? "" : f25);
|
dataMap.put("FY26", f26 == 0 ? "" : f26);
|
dataMap.put("FY27", f27 == 0 ? "" : f27);
|
dataMap.put("FY28", f28 == 0 ? "" : f28);
|
dataMap.put("FY29", f29 == 0 ? "" : f29);
|
dataMap.put("FY30", f30 == 0 ? "" : f30);
|
dataMap.put("FY31", f31 == 0 ? "" : f31);
|
dataMap.put("FY32", f32 == 0 ? "" : f32);
|
dataMap.put("FY33", f33 == 0 ? "" : f33);
|
dataMap.put("FY34", f34 == 0 ? "" : f34);
|
dataMap.put("FY35", f35 == 0 ? "" : f35);
|
dataMap.put("FY36", f36 == 0 ? "" : f36);
|
dataMap.put("FY37", f37 == 0 ? "" : f37);
|
dataMap.put("FY38", f38 == 0 ? "" : f38);
|
dataMap.put("FY39", f39 == 0 ? "" : f39);
|
dataMap.put("FY40", f40 == 0 ? "" : f40);
|
dataMap.put("FY41", f41 == 0 ? "" : f41);
|
dataMap.put("FY42", f42 == 0 ? "" : f42);
|
dataMap.put("FY43", f43 == 0 ? "" : f43);
|
dataMap.put("FY44", f44 == 0 ? "" : f44);
|
dataMap.put("FY45", f45 == 0 ? "" : f45);
|
dataMap.put("FY46", f46 == 0 ? "" : f46);
|
dataMap.put("FY47", f47 == 0 ? "" : f47);
|
dataMap.put("FY48", f48 == 0 ? "" : f48);
|
dataMap.put("FY49", f49 == 0 ? "" : f49);
|
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("SH1", sh1 == 0 ? "" : sh1);
|
dataMap.put("SH2", sh2 == 0 ? "" : sh2);
|
dataMap.put("SH3", sh3 == 0 ? "" : sh3);
|
dataMap.put("SH4", sh4 == 0 ? "" : sh4);
|
dataMap.put("SH5", sh5 == 0 ? "" : sh5);
|
dataMap.put("SH6", sh6 == 0 ? "" : sh6);
|
dataMap.put("SH7", sh7 == 0 ? "" : sh7);
|
dataMap.put("SH8", sh8 == 0 ? "" : sh8);
|
dataMap.put("SH9", sh9 == 0 ? "" : sh9);
|
dataMap.put("SH10", sh10 == 0 ? "" : sh10);
|
dataMap.put("SH11", sh11 == 0 ? "" : sh11);
|
dataMap.put("SH12", sh12 == 0 ? "" : sh12);
|
dataMap.put("SH13", sh13 == 0 ? "" : sh13);
|
dataMap.put("SH14", sh14 == 0 ? "" : sh14);
|
dataMap.put("SH15", sh15 == 0 ? "" : sh15);
|
dataMap.put("SH16", sh16 == 0 ? "" : sh16);
|
dataMap.put("SH17", sh17 == 0 ? "" : sh17);
|
dataMap.put("SH18", sh18 == 0 ? "" : sh18);
|
dataMap.put("SH19", sh19 == 0 ? "" : sh19);
|
dataMap.put("SH20", sh20 == 0 ? "" : sh20);
|
dataMap.put("SH21", sh21 == 0 ? "" : sh21);
|
dataMap.put("SH22", sh22 == 0 ? "" : sh22);
|
dataMap.put("SH23", sh23 == 0 ? "" : sh23);
|
dataMap.put("SH24", sh24 == 0 ? "" : sh24);
|
dataMap.put("SH25", sh25 == 0 ? "" : sh25);
|
dataMap.put("SH26", sh26 == 0 ? "" : sh26);
|
dataMap.put("SH27", sh27 == 0 ? "" : sh27);
|
dataMap.put("SH28", sh28 == 0 ? "" : sh28);
|
dataMap.put("SH29", sh29 == 0 ? "" : sh29);
|
dataMap.put("SH30", sh30 == 0 ? "" : sh30);
|
dataMap.put("SH31", sh31 == 0 ? "" : sh31);
|
dataMap.put("SH32", sh32 == 0 ? "" : sh32);
|
dataMap.put("SH33", sh33 == 0 ? "" : sh33);
|
dataMap.put("SH34", sh34 == 0 ? "" : sh34);
|
dataMap.put("SH35", sh35 == 0 ? "" : sh35);
|
dataMap.put("SH36", sh36 == 0 ? "" : sh36);
|
dataMap.put("SH37", sh37 == 0 ? "" : sh37);
|
dataMap.put("SH38", sh38 == 0 ? "" : sh38);
|
dataMap.put("SH39", sh39 == 0 ? "" : sh39);
|
dataMap.put("SH40", sh40 == 0 ? "" : sh40);
|
dataMap.put("SH41", sh41 == 0 ? "" : sh41);
|
dataMap.put("SH42", sh42 == 0 ? "" : sh42);
|
dataMap.put("SH43", sh43 == 0 ? "" : sh43);
|
dataMap.put("SH44", sh44 == 0 ? "" : sh44);
|
dataMap.put("SH45", sh45 == 0 ? "" : sh45);
|
dataMap.put("SH46", sh46 == 0 ? "" : sh46);
|
dataMap.put("SH47", sh47 == 0 ? "" : sh47);
|
dataMap.put("SH48", sh48 == 0 ? "" : sh48);
|
dataMap.put("SH49", sh49 == 0 ? "" : sh49);
|
dataMap.put("SH50", sh50 == 0 ? "" : sh50);
|
dataMap.put("SH51", sh51 == 0 ? "" : sh51);
|
dataMap.put("SH52", sh52 == 0 ? "" : sh52);
|
dataMap.put("SH53", shhj == 0 ? "" : shhj);
|
|
}
|
|
|
/**
|
* 下载器官获取专家劳务费统计表
|
*/
|
@ApiOperation("器官获取专家劳务费统计表")
|
@GetMapping(value = "/downloadLWF/{id}")
|
public Map downloadInfoLWF(@PathVariable("id") Long id) throws IOException {
|
Map dataMap = new HashMap();
|
getDataLWF(dataMap, id);
|
String filePath = getClass().getResource("/template/").getPath();
|
System.out.println(filePath);
|
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
|
configuration.setDirectoryForTemplateLoading(new File(filePath));
|
|
Template t = null;
|
try {
|
//捐献表.ftl为要装载的模板
|
t = configuration.getTemplate("器官获取专家劳务费统计表.ftl");
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
|
String name = "器官获取专家劳务费统计表_" + dataMap.get("XM") + "_" + newTime;
|
|
//输出文档路径及名称
|
File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
|
Writer out = null;
|
|
try {
|
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.put("downloadName", name + ".doc");
|
return map;
|
}
|
|
|
private void getDataLWF(Map dataMap, Long id) {
|
ServiceFund serviceFund = serviceFundService.getById(id);
|
if (serviceFund == null) {
|
throw new ServiceException("下载失败,用户信息出错", HttpStatus.NO_CONTENT);
|
}
|
Date dt = serviceFund.getCreateTime();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
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());
|
dataMap.put("ZZ", serviceFund.getManagername() == null ? "" : serviceFund.getManagername());
|
|
List<ServiceFunddetail> fd = serviceFunddetailService.getAllDetailsByFDIDHZ(id);
|
if (fd == null) {
|
throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT);
|
}
|
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>();
|
count++;
|
map.put("XH", count);
|
map.put("FWNR", f.getItemname() == null ? "" : f.getItemname());
|
map.put("ZZXM", f.getBeneficiaryname() == null ? "" : f.getBeneficiaryname());
|
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());
|
hj += f.getAmount();
|
newsList.add(map);
|
}
|
|
dataMap.put("list", newsList);
|
|
dataMap.put("HJ", hj);
|
|
}
|
|
/**
|
* 下载专家劳务费发放表
|
*/
|
@ApiOperation("伦理专家劳务费发放表")
|
@GetMapping(value = "/downloadLL/{id}")
|
public Map downloadInfoLL(@PathVariable("id") Long id) throws IOException {
|
Map dataMap = new HashMap();
|
getDataLL(dataMap, id);
|
String filePath = getClass().getResource("/template/").getPath();
|
System.out.println(filePath);
|
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
|
configuration.setDirectoryForTemplateLoading(new File(filePath));
|
|
Template t = null;
|
try {
|
//捐献表.ftl为要装载的模板
|
t = configuration.getTemplate("伦理专家劳务费发放申请单.ftl");
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
|
String name = "伦理专家劳务费发放申请单_" + dataMap.get("XM") + "_" + newTime;
|
|
//输出文档路径及名称
|
File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
|
Writer out = null;
|
|
try {
|
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.put("downloadName", name + ".doc");
|
return map;
|
}
|
|
private void getDataLL(Map dataMap, Long id) {
|
ServiceFund serviceFund = serviceFundService.getById(id);
|
if (serviceFund == null) {
|
throw new ServiceException("下载失败,用户信息出错", HttpStatus.NO_CONTENT);
|
}
|
Date dt = serviceFund.getCreateTime();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String date = formatter.format(dt);
|
String time = date.substring(0, 10);
|
|
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("FYXM1", "支付专家费用:" + serviceFund.getAmountrequested() + "元");
|
dataMap.put("FYXM2", "");
|
dataMap.put("FYXM3", "");
|
dataMap.put("JEXS", serviceFund.getAmountrequested());
|
dataMap.put("JEDS", convert(serviceFund.getAmountrequested()) + "整");
|
dataMap.put("BXBZ", serviceFund.getRemark() == null ? "" : serviceFund.getRemark());
|
|
|
dataMap.put("YYMMDD", time);
|
dataMap.put("XM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname());
|
//dataMap.put("GZRY", serviceFund.getUsername() == null ? "" : serviceFund.getUsername());
|
//dataMap.put("ZZ", serviceFund.getManagername() == null ? "" : serviceFund.getManagername());
|
|
List<ServiceFunddetail> fd = serviceFunddetailService.getAllDetailsByFDIDHZ(id);
|
if (fd == null) {
|
throw new ServiceException("下载失败,没有对应信息", HttpStatus.NO_CONTENT);
|
}
|
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>();
|
count++;
|
map.put("XH", count);
|
map.put("FWNR", f.getItemname() == null ? "" : f.getItemname());
|
map.put("ZZXM", f.getBeneficiaryname() == null ? "" : f.getBeneficiaryname());
|
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("YH", f.getDepositbank() == null ? "" : f.getDepositbank());
|
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() + "");
|
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("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) {
|
ServiceFund serviceFund = serviceFundService.getById(id);
|
return AjaxResult.success(serviceFundService.showFundDetailOne(serviceFund));
|
}
|
|
/**
|
* 展示费用细节
|
*/
|
@ApiOperation("展示费用细节")
|
@GetMapping(value = "/showFundDetailTwo/{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) {
|
|
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);
|
}
|
|
/**
|
* 导出专家报销费用汇总
|
*/
|
@ApiOperation("导出专家报销费用汇总")
|
@Log(title = "费用申请主", businessType = BusinessType.EXPORT)
|
@GetMapping("/exportFeeSum/{faxId}")
|
public Map<String, Object> exportFeeSum(@PathVariable Integer faxId) {
|
Map<String, Object> map = serviceFundService.exportFeeSum(faxId);
|
return map;
|
}
|
|
}
|