| | |
| | | package com.ruoyi.project.service.impl; |
| | | |
| | | import java.io.File; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.ruoyi.common.config.RuoYiConfig; |
| | | import com.ruoyi.common.tax.TaxtUtils; |
| | | import com.ruoyi.common.utils.HttpClientKit; |
| | | import com.ruoyi.common.utils.bean.DtoConversionUtils; |
| | | import com.ruoyi.project.domain.*; |
| | | import com.ruoyi.project.domain.vo.*; |
| | | import com.ruoyi.project.mapper.*; |
| | | import com.ruoyi.project.service.IServiceFundSharedService; |
| | | import com.ruoyi.project.service.IServiceFunddetailService; |
| | | import com.ruoyi.project.service.IServiceFunddetailSharedService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.config.RuoYiConfig; |
| | | import com.ruoyi.common.constant.HttpStatus; |
| | | 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.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.HttpClientKit; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.project.service.IServiceFundService; |
| | | import com.ruoyi.common.utils.bean.DtoConversionUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | import com.ruoyi.project.domain.*; |
| | | import com.ruoyi.project.domain.vo.*; |
| | | import com.ruoyi.project.mapper.*; |
| | | import com.ruoyi.project.service.*; |
| | | import com.ruoyi.system.mapper.SysUserMapper; |
| | | import com.ruoyi.system.mapper.SysUserRoleMapper; |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | import com.taobao.api.ApiException; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileOutputStream; |
| | | import java.io.InputStream; |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 费用申请主Service业务层处理 |
| | |
| | | ServiceFundMapper serviceFundMapper; |
| | | |
| | | @Autowired |
| | | private DingTalkService dingTalkService; |
| | | |
| | | @Autowired |
| | | private IServiceFundflowruleService serviceFundflowruleService; |
| | | |
| | | @Autowired |
| | | private IServiceFundflowService serviceFundflowService; |
| | | |
| | | @Autowired |
| | | private SysUserRoleMapper sysUserRoleMapper; |
| | | |
| | | @Autowired |
| | | SysUserMapper sysUserMapper; |
| | | |
| | | @Autowired |
| | | ServiceFunddetailMapper serviceFunddetailMapper; |
| | | |
| | | @Autowired |
| | |
| | | |
| | | @Autowired |
| | | ServiceReimbursementMapper serviceReimbursementMapper; |
| | | |
| | | @Autowired |
| | | ServiceReimbursementSharedMapper serviceReimbursementSharedMapper; |
| | | |
| | | @Autowired |
| | | private IServiceFundflowService fundflowService; |
| | | |
| | | @Autowired |
| | | private ISysUserService sysUserService; |
| | | |
| | | @Autowired |
| | | private IServiceSystemmessageService iServiceSystemmessageService; |
| | | |
| | | @Autowired |
| | | IServiceReimbursementService iServiceReimbursementService; |
| | | |
| | | @Autowired |
| | | IServiceFundSharedService sharedService; |
| | |
| | | @Autowired |
| | | private IServiceFunddetailService serviceFunddetailService; |
| | | |
| | | @Autowired |
| | | private VExpertfeeExpertMapper vExpertfeeExpertMapper; |
| | | |
| | | @Autowired |
| | | private VExpertfeeDonorMapper vExpertfeeDonorMapper; |
| | | |
| | | @Autowired |
| | | private VExpertfeeTotalMapper vExpertfeeTotalMapper; |
| | | |
| | | @Value("${xyurl}") |
| | | private String xyurl; |
| | | |
| | | @Value("${rexyurl}") |
| | | private String rexyurl; |
| | | |
| | | @Value("${newSwitch}") |
| | | private Integer newSwitch; |
| | | |
| | | @Value("${spring.profiles.active}") |
| | | private String active; |
| | | |
| | | /** |
| | | * 致远系统流程退回 |
| | | * |
| | | * @param serviceProcessVO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Boolean backDocument(ServiceProcessDocVO serviceProcessVO) { |
| | | String applytype = serviceProcessVO.getApplytype(); |
| | | |
| | | if (applytype.equals("0")) { |
| | | //差旅报销退回 |
| | | ServiceReimbursement serviceReimbursement = new ServiceReimbursement(); |
| | | serviceReimbursement.setId(serviceProcessVO.getBackCode()); |
| | | List<ServiceReimbursement> serviceReimbursementList = iServiceReimbursementService.queryList(serviceReimbursement); |
| | | ServiceReimbursement serviceReimbursement1 = serviceReimbursementList.get(0); |
| | | serviceReimbursement1.setFlowlevel(100L); |
| | | serviceReimbursement1.setDelFlag(0); |
| | | serviceReimbursement1.setUploadStates(0); |
| | | serviceReimbursement1.setBackflowlevel(199L); |
| | | serviceReimbursement1.setRecordstatus(-1); |
| | | iServiceReimbursementService.updateById(serviceReimbursement1); |
| | | |
| | | //删除share数据 |
| | | serviceReimbursementSharedMapper.delResharedInfoByReimid(serviceReimbursement1.getId()); |
| | | |
| | | } else { |
| | | //费用申请退回 |
| | | ServiceFund serviceFund = new ServiceFund(); |
| | | serviceFund.setId(serviceProcessVO.getBackCode()); |
| | | List<ServiceFund> serviceFunds = queryInfoById(serviceFund); |
| | | ServiceFund serviceFund1 = serviceFunds.get(0); |
| | | serviceFund1.setFlowlevel(100L); |
| | | serviceFund1.setDel_flag(0); |
| | | serviceFund1.setRecordstatus(-1); |
| | | serviceFund1.setBackflowlevel(199); |
| | | updateById(serviceFund1); |
| | | |
| | | //删除share数据 |
| | | serviceFundSharedMapper.delfundsharedInfoById(null, serviceFund1.getId()); |
| | | |
| | | //这个消息发送,就不在这做了,在审批记录的接口里做(即日志接口) |
| | | //sendMeg(serviceFund1.getApplytype(), sysUser.getPhonenumber()); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 流程审批日志 |
| | | * |
| | | * @param serviceProcessVO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Boolean processlog(ServiceProcessVO serviceProcessVO) { |
| | | |
| | | String userNo = null; |
| | | String userName = null; |
| | | String phone = null; |
| | | String applytype = null; |
| | | Long flowlevel = null; |
| | | if (serviceProcessVO.getApplytype().equals("0")) { |
| | | ServiceReimbursement serviceReimbursement = new ServiceReimbursement(); |
| | | serviceReimbursement.setId(serviceProcessVO.getBackCode()); |
| | | List<ServiceReimbursement> serviceReimbursementList = iServiceReimbursementService.queryList(serviceReimbursement); |
| | | if (CollectionUtils.isEmpty(serviceReimbursementList)) { |
| | | log.error("serviceReimbursementList没有查到数据:{}", serviceProcessVO.getBackCode()); |
| | | return false; |
| | | } |
| | | //这几个值,需要给下面用; applytype,不能用传进来的,只能自己查 |
| | | userNo = serviceReimbursementList.get(0).getUserno(); |
| | | userName = serviceReimbursementList.get(0).getUsername(); |
| | | phone = serviceReimbursementList.get(0).getPhone(); |
| | | flowlevel = serviceReimbursementList.get(0).getFlowlevel(); |
| | | applytype = "0"; |
| | | } else { |
| | | ServiceFund serviceFund = new ServiceFund(); |
| | | serviceFund.setId(serviceProcessVO.getBackCode()); |
| | | List<ServiceFund> serviceFunds = queryInfoById(serviceFund); |
| | | if (CollectionUtils.isEmpty(serviceFunds)) { |
| | | log.error("serviceFunds没有查到数据:{}", serviceProcessVO.getBackCode()); |
| | | return false; |
| | | } |
| | | userNo = serviceFunds.get(0).getUserno(); |
| | | userName = serviceFunds.get(0).getUsername(); |
| | | phone = serviceFunds.get(0).getPhone(); |
| | | flowlevel = serviceFunds.get(0).getFlowlevel(); |
| | | applytype = serviceFunds.get(0).getApplytype(); |
| | | } |
| | | |
| | | //将操作保存到fundflow表中 |
| | | ServiceFundflow serviceFundflow = new ServiceFundflow(); |
| | | serviceFundflow.setCreateBy("admin"); |
| | | serviceFundflow.setCreateTime(new Date()); |
| | | serviceFundflow.setUpdateBy("admin"); |
| | | serviceFundflow.setUpdateTime(new Date()); |
| | | serviceFundflow.setCheckusername(serviceProcessVO.getCheckusername()); |
| | | serviceFundflow.setFlowcontent(serviceProcessVO.getFlowcontent()); |
| | | serviceFundflow.setFlowconclusion(1); |
| | | serviceFundflow.setFundtype(2); |
| | | serviceFundflow.setFlowlevel(flowlevel.intValue()); |
| | | if (serviceProcessVO.getFlowconclusion() == 3) serviceFundflow.setFlowlevel(999); |
| | | serviceFundflow.setApplytype(applytype); |
| | | serviceFundflow.setFundid(serviceProcessVO.getBackCode()); |
| | | serviceFundflow.setCheckTime(serviceProcessVO.getCheckTime()); |
| | | fundflowService.save(serviceFundflow); |
| | | |
| | | |
| | | SysUser sysUser = sysUserService.selectUserByUserName(userNo); |
| | | sendMeg(serviceProcessVO, phone); |
| | | //发送信息保存 |
| | | ServiceSystemmessage serviceSystemmessage = new ServiceSystemmessage(); |
| | | serviceSystemmessage.setFundtype(1); |
| | | serviceSystemmessage.setSenduserno(sysUser.getUserName()); |
| | | serviceSystemmessage.setSendusername(sysUser.getNickName()); |
| | | serviceSystemmessage.setReceiveuserno(userNo); |
| | | serviceSystemmessage.setReceiveusername(userName); |
| | | serviceSystemmessage.setUpdateTime(new Date()); |
| | | serviceSystemmessage.setUpdateBy(sysUser.getNickName()); |
| | | serviceSystemmessage.setIsread(0); |
| | | serviceSystemmessage.setMessagetype(1); |
| | | serviceSystemmessage.setMessagetitle("财务系统信息"); |
| | | serviceSystemmessage.setMessagecontent(serviceProcessVO.getFlowcontent()); |
| | | iServiceSystemmessageService.save(serviceSystemmessage); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 查询费用申请主列表(包含删除的) |
| | |
| | | } |
| | | if (serviceFund.getId() != null) { |
| | | wrappers.eq(ServiceFund::getId, serviceFund.getId()); |
| | | } |
| | | if (serviceFund.getFundTaxId() != null) { |
| | | wrappers.eq(ServiceFund::getFundTaxId, serviceFund.getFundTaxId()); |
| | | } |
| | | if (StringUtils.isNotBlank(serviceFund.getUserno())) { |
| | | wrappers.eq(ServiceFund::getUserno, serviceFund.getUserno()); |
| | |
| | | if (serviceFund.getUploadtime() != null) { |
| | | wrappers.eq(ServiceFund::getUploadtime, serviceFund.getUploadtime()); |
| | | } |
| | | if (serviceFund.getUploadStates() != null) { |
| | | wrappers.eq(ServiceFund::getUploadStates, serviceFund.getUploadStates()); |
| | | } |
| | | if (serviceFund.getFlowlevel() != null) { |
| | | wrappers.eq(ServiceFund::getFlowlevel, serviceFund.getFlowlevel()); |
| | | } |
| | | if (serviceFund.getJxrq() != null) { |
| | | wrappers.eq(ServiceFund::getJxrq, serviceFund.getJxrq()); |
| | | } |
| | | // 添加 group by donorname |
| | | // wrappers.groupBy(ServiceFund::getDonorname); |
| | | return this.list(wrappers); |
| | | } |
| | | |
| | |
| | | return serviceFundMapper.getInfoByInfoId(infoid); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, String> checkFund(CheckFundVO checkFundVO, LoginUser loginUser) { |
| | | ServiceFund serviceFund = getById(checkFundVO.getFundid()); |
| | | Map<String, String> map = new HashMap<>(); |
| | | |
| | | if (serviceFund == null) { |
| | | map.put(HttpStatus.NO_CONTENT + "", "费用编号不正确"); |
| | | return map; |
| | | } |
| | | |
| | | Integer TotalLevel = 0; |
| | | 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) { |
| | | map.put(HttpStatus.ERROR + "", "当前人员无此记录审核权限"); |
| | | return map; |
| | | } |
| | | |
| | | if (serviceFundflowrules.get(0).getFlowlevel() - 1 != serviceFund.getFlowlevel()) { |
| | | map.put(HttpStatus.ERROR + "", "当前人员与此记录的审核级别不符"); |
| | | return map; |
| | | } |
| | | |
| | | 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; |
| | | SysUser user = loginUser.getUser(); |
| | | if (serviceFund.getFlowlevel() == Long.valueOf(serviceFundflowrules.get(0).getFlowlevel() - 1) && serviceFund.getBackflowlevel() == 100) { |
| | | log.info("财务退回再提交,出纳再次审批,之后提交到财务"); |
| | | serviceFund.setFinancechecher("审批人:" + user.getUserName() + " & 审批时间" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + " & 审批结果:通过"); |
| | | |
| | | serviceFund.setFlowlevel(serviceFundflowrules.get(0).getTotallevel().longValue()); |
| | | serviceFund.setRecordstatus(99); |
| | | serviceFund.setUploadStates(1); |
| | | updateById(serviceFund); |
| | | |
| | | //数据发送 |
| | | Boolean aBoolean1 = null; |
| | | if (newSwitch == 1) { |
| | | aBoolean1 = sendData(serviceFund); |
| | | if (!aBoolean1) { |
| | | map.put("500", "发送失败"); |
| | | return map; |
| | | } |
| | | } |
| | | //保存审批流程表 |
| | | ServiceFundflow serviceFundflow = new ServiceFundflow(); |
| | | 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); |
| | | map.put("200", "success"); |
| | | return map; |
| | | } |
| | | //如果当前登陆是财务,则进行记录 |
| | | List<Integer> roleIds = sysUserRoleMapper.getUserRoleByUserId(user.getUserId()); |
| | | if (roleIds != null && roleIds.contains(11)) { |
| | | //11为财务 |
| | | serviceFund.setFinancechecher("审批人:" + user.getUserName() + " & 审批时间" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " & 审批结果:通过"); |
| | | } |
| | | |
| | | //记录一下,下一级的审批,以便于下一级退回后,发起者提交时,能再提到当前审批层级 |
| | | serviceFund.setBackflowlevel(FlowLevel); |
| | | } else { |
| | | CheckFlag = 2; |
| | | if (CheckFlag == 2) { |
| | | //应医院要求如果出现退回,直接退到发起者 |
| | | FlowLevel = 0; |
| | | RecordStatus = -1; |
| | | log.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 cmap = new ConcurrentHashMap(); |
| | | cmap.put("审批人:", loginUser.getUser().getUserName()); |
| | | cmap.put("审批时间:", new Date()); |
| | | cmap.put("意见:", "不通过"); |
| | | if (StringUtils.isNotBlank(checkFundVO.getFlowcontent())) cmap.put("意见:", checkFundVO.getFlowcontent()); |
| | | contentList.add(cmap); |
| | | 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 (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); |
| | | //数据发送 |
| | | Boolean aBoolean1 = null; |
| | | if (newSwitch == 1) { |
| | | //搞一个开关,别影响老流程 |
| | | aBoolean1 = sendData(serviceFund); |
| | | if (!aBoolean1) { |
| | | map.put("500", "发送失败"); |
| | | return map; |
| | | } |
| | | } |
| | | } |
| | | System.out.println("serviceFund的值是--------:" + serviceFund); |
| | | log.info("开始更新的的值是--------"); |
| | | |
| | | Boolean aBoolean1 = 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); |
| | | map.put("200", "success"); |
| | | return map; |
| | | |
| | | |
| | | } |
| | | |
| | | public Boolean sendData(ServiceFund serviceFund) { |
| | | // fund和funddetail的数据获取 |
| | | addFundSharedInfo(serviceFund.getId()); |
| | | List<ServiceFundShared> fundShareInfos = serviceFundSharedMapper.getFundShareInfoById(serviceFund.getId()); |
| | | if (CollectionUtils.isEmpty(fundShareInfos)) return false; |
| | | |
| | | log.info("fundShareInfos的数据量为:{}", fundShareInfos.size()); |
| | | ServiceFunddetailShared serviceFunddetailShared = new ServiceFunddetailShared(); |
| | | serviceFunddetailShared.setFundid(fundShareInfos.get(0).getId()); |
| | | List<ServiceFunddetailShared> serviceFunddetailShareds = detailSharedService.queryList(serviceFunddetailShared); |
| | | |
| | | // 数据的封装 |
| | | Map<String, Object> map = new HashMap<>(); |
| | | Map<String, Object> data = new HashMap<>(); |
| | | //应用类型 固定值 |
| | | map.put("appName", "collaboration"); |
| | | |
| | | // 主表字段数据 |
| | | Map<String, Object> data2 = new HashMap<>(); |
| | | data2.put("formmain_0831", getformmain_0831(fundShareInfos.get(0))); |
| | | // 明细表字段数据,与附件的处理 |
| | | Map<String, List<Map<String, Object>>> map1 = formson_0832(serviceFunddetailShareds); |
| | | data2.put("formson_0832", map1.get("formson_0832")); |
| | | data2.put("thirdAttachments", map1.get("annexfilesList")); |
| | | |
| | | data.put("data", data2); |
| | | //模板编号,由致远方提供,该参数决定发起协同系统中哪个流程 |
| | | data.put("templateCode", "001"); |
| | | //是否为待发:0:新建-发送;1:新建-保存待发 |
| | | data.put("draft", "0"); |
| | | //协同标题区附件,Long型List,值为附件的Id。Id是附件接口响应结果中fileUrl字段的值 |
| | | data.put("attachments", null); |
| | | //协同公文的id |
| | | data.put("relateDoc", "col|123,456;doc|321,654"); |
| | | //未设置取模板设置的标题 |
| | | data.put("subject", "null"); |
| | | |
| | | map.put("data", data); |
| | | String strRes = null; |
| | | if (!active.equals("druid")) { |
| | | //如果是本地环境,就不调这个了 |
| | | if (serviceFund.getBackflowlevel() == 100L) { |
| | | //再次发起 |
| | | strRes = HttpClientKit.postOpr(rexyurl, map.toString()); |
| | | } else { |
| | | //首次发起 |
| | | strRes = HttpClientKit.postOpr(xyurl, map.toString()); |
| | | |
| | | } |
| | | } |
| | | com.alibaba.fastjson2.JSONObject jsonObject = com.alibaba.fastjson2.JSONObject.parseObject(strRes); |
| | | String code = jsonObject.getJSONObject("code").toString(); |
| | | if (!code.equals("0")) { |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | private Map<String, List<Map<String, Object>>> formson_0832(List<ServiceFunddetailShared> serviceFunddetailSharedList) { |
| | | Map<String, List<Map<String, Object>>> allMap = new HashMap<>(); |
| | | |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | List<Map<String, Object>> annexfilesList = new ArrayList<>(); |
| | | for (ServiceFunddetailShared serviceFunddetailShared : serviceFunddetailSharedList) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("序号1", serviceFunddetailShared.getOrderno()); |
| | | map.put("费用项目", serviceFunddetailShared.getItemname()); |
| | | map.put("税前金额", serviceFunddetailShared.getAmount()); |
| | | map.put("开户银行", serviceFunddetailShared.getDepositbank()); |
| | | map.put("卡号", serviceFunddetailShared.getBankcardno()); |
| | | map.put("收益人家属或专家", serviceFunddetailShared.getBeneficiaryname()); |
| | | map.put("税后金额", serviceFunddetailShared.getTaxamount()); |
| | | map.put("作废最终金额", null); |
| | | String fpuuid = IdUtils.simpleUUID(); |
| | | map.put("发票附件", fpuuid); |
| | | map.put("发票识别", null); |
| | | map.put("识别人", null); |
| | | map.put("税额", null); |
| | | String qtuuid = IdUtils.simpleUUID(); |
| | | map.put("其他附件", qtuuid); |
| | | map.put("项目编码", serviceFunddetailShared.getItemcode()); |
| | | map.put("预算项目", null); |
| | | map.put("贷方科目", null); |
| | | map.put("借方摘要", null); |
| | | map.put("贷方摘要", null); |
| | | map.put("识别备注", null); |
| | | map.put("费用说明", null); |
| | | list.add(map); |
| | | |
| | | //附件处理 |
| | | String annexfiles = serviceFunddetailShared.getAnnexfiles(); |
| | | String invoicefiles = serviceFunddetailShared.getInvoicefiles(); |
| | | |
| | | int i = 0; |
| | | if (StringUtils.isNotEmpty(annexfiles)) { |
| | | List<RbDetailFile> parseArray = JSON.parseArray(annexfiles, RbDetailFile.class); |
| | | for (RbDetailFile rbDetailFile : parseArray) { |
| | | Map<String, Object> thirdAttachments = new HashMap<>(); |
| | | thirdAttachments.put("subReference", qtuuid); |
| | | thirdAttachments.put("fileUrl", rbDetailFile.getFileid()); |
| | | thirdAttachments.put("sort", i++); |
| | | annexfilesList.add(thirdAttachments); |
| | | } |
| | | } |
| | | |
| | | if (StringUtils.isNotEmpty(invoicefiles)) { |
| | | List<RbDetailFile> parseArray = JSON.parseArray(invoicefiles, RbDetailFile.class); |
| | | for (RbDetailFile rbDetailFile : parseArray) { |
| | | Map<String, Object> thirdAttachments = new HashMap<>(); |
| | | thirdAttachments.put("subReference", fpuuid); |
| | | thirdAttachments.put("fileUrl", rbDetailFile.getFileid()); |
| | | thirdAttachments.put("sort", i++); |
| | | annexfilesList.add(thirdAttachments); |
| | | } |
| | | } |
| | | |
| | | } |
| | | allMap.put("formson_0832", list); |
| | | allMap.put("annexfilesList", annexfilesList); |
| | | return allMap; |
| | | } |
| | | |
| | | |
| | | private Map<String, Object> getformmain_0831(ServiceFundShared serviceFundShared) { |
| | | Map<String, Object> formmain_0831 = new HashMap<>(); |
| | | formmain_0831.put("捐献者姓名", serviceFundShared.getDonorname()); |
| | | formmain_0831.put("报销人员", serviceFundShared.getUsername()); |
| | | formmain_0831.put("业务区域", serviceFundShared.getDeptmentname()); |
| | | formmain_0831.put("经手人", serviceFundShared.getUsername()); |
| | | formmain_0831.put("填表时间", serviceFundShared.getApplyTime()); |
| | | formmain_0831.put("报销金额合计", serviceFundShared.getPretaxcost()); |
| | | formmain_0831.put("上传附件", null); |
| | | formmain_0831.put("备注", null); |
| | | formmain_0831.put("财务审批", serviceFundShared.getFinancechecher()); |
| | | formmain_0831.put("财务部负责人审批", serviceFundShared.getFinancedirector()); |
| | | formmain_0831.put("办公室主任审批", serviceFundShared.getOfficedirector()); |
| | | formmain_0831.put("业务副院长审批", serviceFundShared.getBusvicepresident()); |
| | | formmain_0831.put("财务副院长审批", serviceFundShared.getFinvicepresident()); |
| | | formmain_0831.put("中心负责人审批", serviceFundShared.getOpochecker()); |
| | | formmain_0831.put("支付方式", serviceFundShared.getZffs()); |
| | | formmain_0831.put("组长", null); |
| | | formmain_0831.put("审批人员", null); |
| | | formmain_0831.put("支付日期", serviceFundShared.getRiqi()); |
| | | formmain_0831.put("识别人-作废", null); |
| | | formmain_0831.put("财务审批签字", serviceFundShared.getFinancedirector()); |
| | | formmain_0831.put("财务部负责人签字", serviceFundShared.getFinancedirector()); |
| | | formmain_0831.put("表达类型", null); |
| | | formmain_0831.put("税前金额合计", serviceFundShared.getPretaxcost()); |
| | | formmain_0831.put("税额合计", serviceFundShared.getPretaxcost() - serviceFundShared.getTaxedcost()); |
| | | formmain_0831.put("表单编号1", null); |
| | | formmain_0831.put("编码", null); |
| | | formmain_0831.put("CIF账套配置1", null); |
| | | formmain_0831.put(" 院区", null); |
| | | formmain_0831.put("是否支付", serviceFundShared.getIsdistribute()); |
| | | formmain_0831.put("凭证号", null); |
| | | formmain_0831.put("银行回单", null); |
| | | formmain_0831.put("OFD", null); |
| | | formmain_0831.put("表单附件", null); |
| | | formmain_0831.put("现金流量分析", null); |
| | | formmain_0831.put("凭证类别", null); |
| | | formmain_0831.put("税后金额合计", serviceFundShared.getTaxedcost()); |
| | | formmain_0831.put("历史审批记录", null); |
| | | formmain_0831.put("表单编号", serviceFundShared.getBh()); |
| | | formmain_0831.put("历史审批单查询", null); |
| | | return formmain_0831; |
| | | } |
| | | |
| | | @Override |
| | | public Long getFundId(Long infoid) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Boolean addFundSharedInfo(Long id) { |
| | | log.info("fund表的id:{}", id); |
| | | //判断一下,share表是否已经存在了 |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("serfunid", id); |
| | | map.put("del_flag", 0); |
| | | List<ServiceFundShared> serviceFundSharedList = serviceFundSharedMapper.selectByMap(map); |
| | | if (!CollectionUtils.isEmpty(serviceFundSharedList)) { |
| | | return true; |
| | | } |
| | | |
| | | ServiceFund serviceFund = serviceFundMapper.selectById(id); |
| | | ServiceFundShared serviceFundShared = DtoConversionUtils.sourceToTarget(serviceFund, ServiceFundShared.class); |
| | | serviceFundShared.setSerfunid(serviceFundShared.getId()); |
| | | serviceFundShared.setId(null); |
| | | log.info("数据都插进去了吗? {}", serviceFundShared); |
| | | sharedService.save(serviceFundShared); |
| | | |
| | | //fundId为主表的ID |
| | |
| | | serviceFunddetailShareds.get(i).setFundid(serviceFundShared.getId()); |
| | | serviceFunddetailShareds.get(i).setId(null); |
| | | //数据发送给财务 |
| | | uploadOAFileAndUpdateDb(serviceFunddetailShareds.get(i)); |
| | | try { |
| | | if (!active.equals("druid")) uploadOAFileAndUpdateDb(serviceFunddetailShareds.get(i)); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("Exception中入参的ID为:{},异常信息为 : {}", id, e.getMessage()); |
| | | if (id != null) { |
| | | Boolean aBoolean = sharedService.delfundsharedInfoById(null, id); |
| | | log.error("fund2分享表里的数据是否删除成功:{}", aBoolean); |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | | boolean result = detailSharedService.saveBatch(serviceFunddetailShareds); |
| | | boolean result = false; |
| | | for (ServiceFunddetailShared serviceFunddetailShared : serviceFunddetailShareds) { |
| | | if (ObjectUtils.isNotEmpty(serviceFunddetailShared)) { |
| | | result = detailSharedService.save(serviceFunddetailShared); |
| | | } else { |
| | | log.info("serviceFunddetailShared为空了!!!"); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<SpFinancialExpensesFundOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE) { |
| | | return serviceFundMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE); |
| | | public List<SpFinancialExpensesFundOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE, Integer CHECKSTATUS, String donorname) { |
| | | return serviceFundMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE, CHECKSTATUS, donorname); |
| | | } |
| | | |
| | | @Override |
| | | public List<SpFinancialExpensesFundOut> getExpertfeeList(SpSelectExpertfee spSelectExpertfee) { |
| | | log.info("spSelectExpertfee的入参为:{}", spSelectExpertfee); |
| | | return serviceFundMapper.getExpertfeeList(spSelectExpertfee.getPaApplyType(), spSelectExpertfee.getPfundtaxid(), spSelectExpertfee.getDonorname(), spSelectExpertfee.getPadepartid(), spSelectExpertfee.getPausername()); |
| | | } |
| | | |
| | | @Override |
| | | public int countItem(Long infoid, Long itemid) { |
| | | List<ServiceFund> serviceFunds = serviceFundMapper.getInfoByInfoId(infoid); |
| | | |
| | | int count = 0; |
| | | for (ServiceFund s : serviceFunds) { |
| | | long fundid = s.getId(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Long addOrUpdateNew(ServiceFundVO serviceFundVO) { |
| | | Long id = null; |
| | | if (serviceFundVO.getId() == null) { |
| | | save(serviceFundVO); |
| | | id = serviceFundVO.getId(); |
| | | } else { |
| | | updateById(serviceFundVO); |
| | | id = serviceFundVO.getId(); |
| | | } |
| | | List<ServiceFunddetailVO> serviceFunddetails = serviceFundVO.getServiceFunddetails(); |
| | | if (CollectionUtils.isEmpty(serviceFunddetails)) { |
| | | System.out.println("serviceFunddetails为空喽"); |
| | | return null; |
| | | } |
| | | // 用于记录税前、税后的总和 |
| | | double taxBefore = 0.0; |
| | | double taxAfter = 0.0; |
| | | //将数据保存到fund表 |
| | | serviceFundVO.setUploadStates(0); |
| | | id = saveFund(serviceFundVO); |
| | | |
| | | for (ServiceFunddetailVO serviceFunddetailVO : serviceFunddetails) { |
| | | serviceFunddetailVO.setFundid(id); |
| | | //將附件转成json |
| | | if (!CollectionUtils.isEmpty(serviceFunddetailVO.getAnnexfilesList())) { |
| | | serviceFunddetailVO.setAnnexfiles(JSON.toJSONString(serviceFunddetailVO.getAnnexfilesList())); |
| | | } |
| | | if (serviceFunddetailVO.getTaxedamount() != null && serviceFunddetailVO.getAmount() != null && serviceFunddetailVO.getTaxedamount() != 0.0 && serviceFunddetailVO.getAmount() != 0.0) { |
| | | // 税前税后都不为空 |
| | | List<ServiceFunddetailVO> serviceFunddetails = serviceFundVO.getServiceFunddetails(); |
| | | |
| | | BigDecimal bigDecimal = new BigDecimal(0.0); |
| | | if (!CollectionUtils.isEmpty(serviceFunddetails)) { |
| | | |
| | | // 保存详情数据 |
| | | for (ServiceFunddetailVO serviceFunddetailVO : serviceFunddetails) { |
| | | //去掉身份证的首尾空格 |
| | | if (StringUtils.isNotEmpty(serviceFunddetailVO.getIdcardno())) { |
| | | serviceFunddetailVO.setIdcardno(serviceFunddetailVO.getIdcardno().trim()); |
| | | } |
| | | log.info("身份证号为:{}", serviceFunddetailVO.getIdcardno()); |
| | | if (StringUtils.isEmpty(serviceFunddetailVO.getBankcardno())) { |
| | | throw new BaseException("请检查银行卡号是否为空,姓名:" + serviceFunddetailVO.getBeneficiaryname()); |
| | | } |
| | | serviceFunddetailVO.setFundid(id); |
| | | //將附件转成json |
| | | if (!CollectionUtils.isEmpty(serviceFunddetailVO.getAnnexfilesList())) { |
| | | serviceFunddetailVO.setAnnexfiles(JSON.toJSONString(serviceFunddetailVO.getAnnexfilesList())); |
| | | } else { |
| | | serviceFunddetailVO.setAnnexfiles(null); |
| | | } |
| | | if (!CollectionUtils.isEmpty(serviceFunddetailVO.getInvoicefilesList())) { |
| | | serviceFunddetailVO.setInvoicefiles(JSON.toJSONString(serviceFunddetailVO.getInvoicefilesList())); |
| | | } else { |
| | | serviceFunddetailVO.setInvoicefiles(null); |
| | | } |
| | | ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class); |
| | | |
| | | if (serviceFunddetailVO.getId() == null) { |
| | | serviceFunddetailService.save(serviceFunddetail); |
| | | } else { |
| | | serviceFunddetailService.updateById(serviceFunddetail); |
| | | } |
| | | //计算税金 |
| | | if (serviceFunddetail.getAmount() != null) { |
| | | taxBefore = taxBefore + serviceFunddetail.getAmount(); |
| | | } |
| | | if (serviceFunddetail.getTaxedamount() != null) { |
| | | taxAfter = taxAfter + serviceFunddetail.getTaxedamount(); |
| | | } |
| | | continue; |
| | | } else if (serviceFunddetailVO.getTaxedamount() != null && serviceFunddetailVO.getTaxedamount() != 0.0) { |
| | | // 税后求税前,如果是专家费申请 或 伦理专家费申请 才会计算税前税后 |
| | | if (StringUtils.isNotEmpty(serviceFundVO.getApplytype()) && serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) { |
| | | Double taxationBefore = Double.valueOf(TaxtUtils.getTaxationBefore(BigDecimal.valueOf(serviceFunddetailVO.getTaxedamount()))); |
| | | // 税金 |
| | | String taxation = TaxtUtils.getTaxation(BigDecimal.valueOf(taxationBefore)); |
| | | serviceFunddetailVO.setAmount(Double.valueOf(taxationBefore)); |
| | | serviceFunddetailVO.setTaxamount(Double.parseDouble(taxation)); |
| | | } |
| | | } else if (serviceFunddetailVO.getAmount() != null && serviceFunddetailVO.getAmount() != 0.0) { |
| | | // 税前求税后,如果是专家费申请 或 伦理专家费申请 才会计算税前税后 |
| | | if (StringUtils.isNotEmpty(serviceFundVO.getApplytype()) && serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) { |
| | | double tax = Double.parseDouble(TaxtUtils.getTaxation(BigDecimal.valueOf(serviceFunddetailVO.getAmount()))); |
| | | BigDecimal taxAfterMoney = BigDecimal.valueOf(serviceFunddetailVO.getAmount()).subtract(BigDecimal.valueOf(tax)); |
| | | serviceFunddetailVO.setTaxamount(tax); |
| | | serviceFunddetailVO.setTaxedamount(taxAfterMoney.doubleValue()); |
| | | } |
| | | } |
| | | |
| | | //根据id判断是新增还是修改 |
| | | ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class); |
| | | if (serviceFunddetailVO.getId() == null) { |
| | | serviceFunddetailService.save(serviceFunddetail); |
| | | } else { |
| | | serviceFunddetailService.updateById(serviceFunddetail); |
| | | } |
| | | // if (serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) { |
| | | //如果是专家费申请 或 伦理专家费申请 才会计算税前税后 |
| | | if (serviceFunddetail.getAmount() != null) { |
| | | taxBefore = taxBefore + serviceFunddetail.getAmount(); |
| | | } |
| | | if (serviceFunddetail.getTaxedamount() != null) { |
| | | taxAfter = taxAfter + serviceFunddetail.getTaxedamount(); |
| | | bigDecimal = bigDecimal.add(BigDecimal.valueOf(serviceFunddetailVO.getAmount())); |
| | | |
| | | } |
| | | } |
| | | //将税前、税后金额更新到fund表中 |
| | | serviceFundVO.setPretaxcost(taxBefore); |
| | | serviceFundVO.setTaxedcost(taxAfter); |
| | | updateById(serviceFundVO); |
| | | |
| | | serviceFundVO.setPretaxcost(bigDecimal.doubleValue()); |
| | | serviceFundMapper.updateById(serviceFundVO); |
| | | return id; |
| | | } |
| | | |
| | | int uploadOAFileAndUpdateDb(ServiceFunddetailShared remShare) { |
| | | @Override |
| | | public Map<String, Long> performance(ServiceFundVO serviceFundVO) { |
| | | Long id = null; |
| | | //将数据保存到fund表 |
| | | id = saveFund(serviceFundVO); |
| | | |
| | | List<ServiceFunddetailVO> serviceFunddetails = serviceFundVO.getServiceFunddetails(); |
| | | if (CollectionUtils.isEmpty(serviceFunddetails)) { |
| | | System.out.println("serviceFunddetails为空喽"); |
| | | return null; |
| | | } |
| | | |
| | | //总税前 |
| | | Double pretaxcosts = 0.00; |
| | | //总税后 |
| | | Double taxedcosts = 0.00; |
| | | for (ServiceFunddetailVO serviceFunddetailVO : serviceFunddetails) { |
| | | serviceFunddetailVO.setFundid(id); |
| | | |
| | | ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class); |
| | | Map<String, Double> performance = serviceFunddetailService.performance(serviceFunddetail); |
| | | if (!performance.isEmpty()) { |
| | | Double amount = performance.get("amount"); |
| | | Double taxedamount = performance.get("taxedamount"); |
| | | pretaxcosts = pretaxcosts + amount; |
| | | taxedcosts = taxedcosts + taxedamount; |
| | | } |
| | | serviceFundVO.setPretaxcost(pretaxcosts); |
| | | serviceFundVO.setTaxedcost(taxedcosts); |
| | | updateById(serviceFundVO); |
| | | } |
| | | Map map = new HashMap(); |
| | | map.put("fundId", id); |
| | | return map; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, List<ServiceFunddetailExcel>> totaltax(TotalTaxVO totalTaxVO) { |
| | | if (CollectionUtils.isEmpty(totalTaxVO.getFundids())) { |
| | | throw new BaseException("请勾选之后,再进行合计个税"); |
| | | } |
| | | Map<String, List<ServiceFunddetailExcel>> map = new HashMap<>(); |
| | | |
| | | if (totalTaxVO.getIsTaxAfter() == null) { |
| | | //如何为空,默认当没有算过税,进行合计 |
| | | totalTaxVO.setIsTaxAfter(0); |
| | | } |
| | | List<ServiceFunddetail> serviceFunddetails = serviceFunddetailMapper.totlaTax(totalTaxVO.getFundids()); |
| | | if (CollectionUtils.isEmpty(serviceFunddetails)) { |
| | | throw new BaseException("查询的详情数据为空"); |
| | | } |
| | | |
| | | //用于返回excel |
| | | List<ServiceFunddetailExcel> serviceFunddetailList = new ArrayList<>(); |
| | | |
| | | if (totalTaxVO.getIsTaxAfter() == 1) { |
| | | //通过受益人名称,将税前、税后的值相加 |
| | | Map<String, Double> sumAmount = serviceFunddetails.stream().collect(Collectors.groupingBy(ServiceFunddetail::getBeneficiaryname, Collectors.summingDouble(ServiceFunddetail::getAmount))); |
| | | Map<String, Double> sumTaxdAmount = serviceFunddetails.stream().collect(Collectors.groupingBy(ServiceFunddetail::getBeneficiaryname, Collectors.summingDouble(ServiceFunddetail::getTaxedamount))); |
| | | |
| | | for (String key : sumAmount.keySet()) { |
| | | ServiceFunddetailExcel serviceFunddetailExcel = new ServiceFunddetailExcel(); |
| | | serviceFunddetailExcel.setAmount(sumAmount.getOrDefault(key, 0.0)); |
| | | serviceFunddetailExcel.setTaxedamount(sumTaxdAmount.getOrDefault(key, 0.0)); |
| | | for (ServiceFunddetail serviceFunddetail2 : serviceFunddetails) { |
| | | if (serviceFunddetail2.getBeneficiaryname().equals(key)) { |
| | | serviceFunddetailExcel.setIdcardno(serviceFunddetail2.getIdcardno()); |
| | | serviceFunddetailExcel.setBankcardno(serviceFunddetail2.getBankcardno()); |
| | | serviceFunddetailExcel.setBeneficiaryname(serviceFunddetail2.getBeneficiaryname()); |
| | | serviceFunddetailExcel.setDepositbank(serviceFunddetail2.getDepositbank()); |
| | | serviceFunddetailExcel.setBranchbankname(serviceFunddetail2.getBranchbankname()); |
| | | serviceFunddetailExcel.setDonorname(serviceFunddetail2.getDonorname()); |
| | | serviceFunddetailExcel.setPhone(serviceFunddetail2.getPhone()); |
| | | break; |
| | | } |
| | | } |
| | | serviceFunddetailList.add(serviceFunddetailExcel); |
| | | } |
| | | //返回算过税之后的,合计 |
| | | map.put("合计个税(税后)", serviceFunddetailList); |
| | | return map; |
| | | |
| | | } else { |
| | | a: |
| | | for (ServiceFunddetail serviceFunddetail : serviceFunddetails) { |
| | | ServiceFunddetailExcel sfeBefore = new ServiceFunddetailExcel(); |
| | | ServiceFunddetailExcel sfeAfter = new ServiceFunddetailExcel(); |
| | | |
| | | for (ServiceFunddetailExcel serviceFunddetailExcel : serviceFunddetailList) { |
| | | //判断一下,该受益人是否已经计算过,已经计算过了,就不算了 |
| | | if (serviceFunddetail.getBeneficiaryname().trim().equals(serviceFunddetailExcel.getBeneficiaryname().trim())) { |
| | | continue a; |
| | | } |
| | | } |
| | | |
| | | |
| | | for (ServiceFunddetail serviceFunddetail2 : serviceFunddetails) { |
| | | if (StringUtils.isEmpty(serviceFunddetail2.getServicesscopename())) { |
| | | ServiceFund serviceFund = null; |
| | | if (serviceFunddetail2.getFundid() == null) { |
| | | serviceFund = serviceFundMapper.selectById(serviceFunddetail2.getFundid()); |
| | | } |
| | | throw new BaseException("服务说明为空,请检查后再计算,捐献者为 :" + serviceFund.getDonorname()); |
| | | } |
| | | if (serviceFunddetail.getBeneficiaryname().equals(serviceFunddetail2.getBeneficiaryname()) && !(serviceFunddetail2.getServicesscopename().equals("税后"))) { |
| | | //累计税前 |
| | | sfeBefore.setIdcardno(serviceFunddetail2.getIdcardno()); |
| | | sfeBefore.setBankcardno(serviceFunddetail2.getBankcardno()); |
| | | sfeBefore.setBeneficiaryname(serviceFunddetail2.getBeneficiaryname()); |
| | | sfeBefore.setDepositbank(serviceFunddetail2.getDepositbank()); |
| | | sfeBefore.setBranchbankname(serviceFunddetail2.getBranchbankname()); |
| | | sfeBefore.setDonorname(serviceFunddetail2.getDonorname()); |
| | | sfeBefore.setPhone(serviceFunddetail2.getPhone()); |
| | | if (sfeBefore.getAmount() == null) { |
| | | sfeBefore.setAmount(serviceFunddetail2.getAmount()); |
| | | } else { |
| | | sfeBefore.setAmount(sfeBefore.getAmount() + serviceFunddetail2.getAmount()); |
| | | } |
| | | sfeBefore.setTaxedamount(null); |
| | | |
| | | } else if (serviceFunddetail.getBeneficiaryname().equals(serviceFunddetail2.getBeneficiaryname()) && serviceFunddetail2.getServicesscopename().equals("税后")) { |
| | | //累计税后 |
| | | sfeAfter.setIdcardno(serviceFunddetail2.getIdcardno()); |
| | | sfeAfter.setBankcardno(serviceFunddetail2.getBankcardno()); |
| | | sfeAfter.setBeneficiaryname(serviceFunddetail2.getBeneficiaryname()); |
| | | sfeAfter.setDepositbank(serviceFunddetail2.getDepositbank()); |
| | | sfeAfter.setBranchbankname(serviceFunddetail2.getBranchbankname()); |
| | | sfeAfter.setDonorname(serviceFunddetail2.getDonorname()); |
| | | sfeAfter.setPhone(serviceFunddetail2.getPhone()); |
| | | sfeAfter.setAmount(null); |
| | | if (sfeAfter.getTaxedamount() == null) { |
| | | sfeAfter.setTaxedamount(serviceFunddetail2.getTaxedamount()); |
| | | } else { |
| | | sfeAfter.setTaxedamount(sfeAfter.getTaxedamount() + serviceFunddetail2.getTaxedamount()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //将计算好的税前总值、税后总值,放到List中 |
| | | if (ObjectUtils.isNotEmpty(sfeBefore.getBeneficiaryname())) serviceFunddetailList.add(sfeBefore); |
| | | |
| | | if (ObjectUtils.isNotEmpty(sfeAfter.getBeneficiaryname())) serviceFunddetailList.add(sfeAfter); |
| | | |
| | | } |
| | | //返回算税之前的,合计 |
| | | map.put("合计个税(税前)", serviceFunddetailList); |
| | | return map; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> exportFeeSum(Integer faxId) { |
| | | List<VExpertfeeTotal> list = vExpertfeeTotalMapper.selectVExpertfeeTotalListByTaxId(faxId); |
| | | ExcelUtil<VExpertfeeTotal> util = new ExcelUtil<VExpertfeeTotal>(VExpertfeeTotal.class); |
| | | AjaxResult ajaxResult = util.exportExcel(list, "vExpertfeeTotal"); |
| | | String filePath = RuoYiConfig.getDownloadPath() + ajaxResult.get("msg"); |
| | | |
| | | List<VExpertfeeDonor> list2 = vExpertfeeDonorMapper.selectVExpertfeeDonorList2(faxId); |
| | | ExcelUtil<VExpertfeeDonor> util2 = new ExcelUtil<VExpertfeeDonor>(VExpertfeeDonor.class); |
| | | AjaxResult ajaxResult2 = util2.exportExcel(list2, "VExpertfeeDonor"); |
| | | |
| | | List<VExpertfeeExpert> list3 = vExpertfeeExpertMapper.selectVExpertfeeExpertListByFaxId(faxId); |
| | | ExcelUtil<VExpertfeeExpert> util3 = new ExcelUtil<VExpertfeeExpert>(VExpertfeeExpert.class); |
| | | AjaxResult ajaxResult3 = util3.exportExcel(list3, "vExpertfeeExpert"); |
| | | |
| | | List<String> list1 = new ArrayList<>(); |
| | | list1.add(ajaxResult.get("msg").toString()); |
| | | list1.add(ajaxResult2.get("msg").toString()); |
| | | list1.add(ajaxResult3.get("msg").toString()); |
| | | |
| | | |
| | | String name = "专家费汇总单" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xlsx"; |
| | | mergeExcel(list1, RuoYiConfig.getDownloadPath() + name); |
| | | for (String path : list1) { |
| | | new File(RuoYiConfig.getDownloadPath() + path).delete(); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("downloadUrl", "/profile/download/" + name); |
| | | map.put("downloadName", name); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | int uploadOAFileAndUpdateDb(ServiceFunddetailShared remShare) throws Exception { |
| | | //上传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"); |
| | |
| | | String filePath = RuoYiConfig.getUploadPath(); |
| | | String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=" + strRes; |
| | | List<RbDetailFile> parseArray2 = new ArrayList<>(); |
| | | List<RbDetailFile> parseArray = JSON.parseArray(remShare.getAnnexfiles(), RbDetailFile.class); |
| | | for (int i = 0; i < parseArray.size(); i++) { |
| | | RbDetailFile rbDetailFile = parseArray.get(i); |
| | | log.info("filePath的修改:{}", filePath); |
| | | String url = rbDetailFile.getUrl(); |
| | | //file用的是绝对位置 |
| | | String substring = url.substring(url.indexOf("/profile/upload") + "/profile/upload".length()); |
| | | // String strFile = rbDetailFile.getUrl().replace(filePath, "/profile/upload"); |
| | | System.out.println("fund服务的filePath + substring: " + filePath + substring); |
| | | File filetest = new File(filePath + substring); |
| | | List<RbDetailFile> invoicefilesList = new ArrayList<>(); |
| | | |
| | | try { |
| | | //普通附件 |
| | | List<RbDetailFile> parseArray = JSON.parseArray(remShare.getAnnexfiles(), RbDetailFile.class); |
| | | //发票附件 |
| | | List<RbDetailFile> invoicefilesArray = JSON.parseArray(remShare.getInvoicefiles(), RbDetailFile.class); |
| | | log.info("parseArray的值 : {}, invoicefilesArray的值 : {},", parseArray, invoicefilesArray); |
| | | |
| | | //普通附件 |
| | | uploadFile(filePath, strFUrl, parseArray2, parseArray, remShare, "1"); |
| | | |
| | | //发票附件 |
| | | uploadFile(filePath, strFUrl, invoicefilesList, invoicefilesArray, remShare, "2"); |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | private Integer uploadFile(String filePath, String strFUrl, List<RbDetailFile> parseArray2, List<RbDetailFile> parseArray, ServiceFunddetailShared remShare, String flag) throws Exception { |
| | | if (!CollectionUtils.isEmpty(parseArray)) { |
| | | for (int i = 0; i < parseArray.size(); i++) { |
| | | RbDetailFile rbDetailFile = parseArray.get(i); |
| | | log.info("filePath的修改:{}", filePath); |
| | | String url = rbDetailFile.getUrl(); |
| | | //file用的是绝对位置 |
| | | String substring = url.substring(url.indexOf("/profile/upload") + "/profile/upload".length()); |
| | | // String strFile = rbDetailFile.getUrl().replace(filePath, "/profile/upload"); |
| | | System.out.println("fund服务的filePath + substring: " + filePath + substring); |
| | | File filetest = new File(filePath + substring); |
| | | |
| | | String struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl); |
| | | log.info("第三方传回的数据: {}", struploadResult); |
| | | if (StringUtils.isEmpty(struploadResult)) { |
| | | log.info("HttpClientKit.sendPostWithFile 请求为空了 filetest:{}, strFUrl:{} ", filetest, strFUrl); |
| | | log.error("HttpClientKit.sendPostWithFile 请求为空了 filetest:{}, strFUrl:{} ", filetest, strFUrl); |
| | | return 0; |
| | | } |
| | | //获取fileid |
| | |
| | | log.info("第三方传回的数据获取的atts : {}", jsonArr); |
| | | for (int j = 0; j < jsonArr.size(); j++) { |
| | | JSONObject jsonRet = jsonArr.getJSONObject(j); |
| | | if (StringUtils.isEmpty(jsonRet.get("fileUrl").toString())) { |
| | | throw new BaseException("fileID为空,请联系第三方处理"); |
| | | } |
| | | rbDetailFile.setFileid(jsonRet.get("fileUrl").toString()); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | parseArray2.add(rbDetailFile); |
| | | } |
| | | remShare.setAnnexfiles(JSON.toJSONString(parseArray2)); |
| | | log.info("ServiceReimbursementdetailShared 是否加上了fileid : {}", remShare); |
| | | |
| | | parseArray2.add(rbDetailFile); |
| | | } |
| | | if (flag.equals("1")) { |
| | | //如果flag为1,则是普通 |
| | | remShare.setAnnexfiles(JSON.toJSONString(parseArray2)); |
| | | } else if (flag.equals("2")) { |
| | | //如果flag为2,则是发票 |
| | | remShare.setInvoicefiles(JSON.toJSONString(parseArray2)); |
| | | } |
| | | log.info("ServiceReimbursementdetailShared 是否加上了fileid : {}", remShare); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | public long saveFund(ServiceFundVO serviceFundVO) { |
| | | Long id = null; |
| | | //将数据保存到fund表 |
| | | if (ObjectUtils.isNotEmpty(serviceFundVO) && serviceFundVO.getId() == null) { |
| | | serviceFundVO.setCheckstatus(serviceFundVO.getCheckstatus() == null ? 1 : 2); |
| | | save(serviceFundVO); |
| | | id = serviceFundVO.getId(); |
| | | } else { |
| | | updateById(serviceFundVO); |
| | | id = serviceFundVO.getId(); |
| | | } |
| | | return id; |
| | | } |
| | | |
| | | // 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 = sharedService.updateById(remShare); |
| | | // if (!bRet) return -1; |
| | | // |
| | | // return 0; |
| | | // } |
| | | public void mergeExcel(List<String> files, String outputFile) { |
| | | try { |
| | | Workbook resultWorkbook = new XSSFWorkbook(); |
| | | for (String file : files) { |
| | | InputStream is1 = new FileInputStream(RuoYiConfig.getDownloadPath() + file); |
| | | Workbook workbook1 = new XSSFWorkbook(is1); |
| | | Sheet sheet1 = workbook1.getSheetAt(0); |
| | | // 复制第一个文件的Sheet |
| | | Sheet newSheet1 = resultWorkbook.createSheet(file.substring(0, file.indexOf("."))); |
| | | for (Row row : sheet1) { |
| | | Row newRow = newSheet1.createRow(row.getRowNum()); |
| | | int columns = row.getLastCellNum(); |
| | | for (int i = 0; i < columns; i++) { |
| | | newSheet1.setColumnWidth(i, 5000); |
| | | Cell cell = row.getCell(i); |
| | | Cell newCell = newRow.createCell(cell.getColumnIndex()); |
| | | newCell.setCellValue(cell.getStringCellValue()); |
| | | // 创建单元格样式 |
| | | CellStyle style = resultWorkbook.createCellStyle(); |
| | | style.setAlignment(HorizontalAlignment.CENTER); // 水平居中 |
| | | style.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 |
| | | if (row.getRowNum() == 0) { |
| | | // 设置第一行背景色 |
| | | style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); |
| | | style.setFillPattern(FillPatternType.SOLID_FOREGROUND); |
| | | } |
| | | |
| | | newCell.setCellStyle(style); |
| | | } |
| | | } |
| | | } |
| | | FileOutputStream out = new FileOutputStream(outputFile); |
| | | resultWorkbook.write(out); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Boolean updateFundTaxIdById(Long id, Long fundTaxId) { |
| | | //将fund里的算税时间,与详情里的版税时间全清空 |
| | | Boolean aBoolean = serviceFundMapper.updateFundTaxIdById(id, fundTaxId); |
| | | ServiceFunddetail serviceFunddetail = new ServiceFunddetail(); |
| | | serviceFunddetail.setFundid(id); |
| | | serviceFunddetail.setTaxTime(null); |
| | | serviceFunddetail.setXh(null); |
| | | boolean b = serviceFunddetailMapper.updateTaxTime(serviceFunddetail); |
| | | return b; |
| | | } |
| | | |
| | | |
| | | public void sendMeg(ServiceProcessVO serviceProcessVO, String phone) { |
| | | //记录操作记录 |
| | | ServiceFundflow serviceFundflow = new ServiceFundflow(); |
| | | |
| | | serviceFundflow.setCreateBy(serviceProcessVO.getCheckusername()); |
| | | serviceFundflow.setUpdateBy(serviceProcessVO.getCheckusername()); |
| | | serviceFundflow.setCheckusername(serviceProcessVO.getCheckusername()); |
| | | serviceFundflow.setCreateTime(new Date()); |
| | | serviceFundflow.setUpdateTime(new Date()); |
| | | serviceFundflow.setFlowcontent(serviceProcessVO.getFlowcontent()); |
| | | serviceFundflow.setFlowconclusion(serviceProcessVO.getFlowconclusion()); |
| | | if (serviceProcessVO.getApplytype() == "0") serviceFundflow.setFundtype(1); |
| | | if (serviceProcessVO.getApplytype() == "1") serviceFundflow.setFundtype(2); |
| | | serviceFundflow.setFlowlevel(100); |
| | | serviceFundflow.setApplytype(serviceProcessVO.getApplytype()); |
| | | serviceFundflow.setFundid(serviceProcessVO.getBackCode()); |
| | | fundflowService.save(serviceFundflow); |
| | | |
| | | ArrayList<ConcurrentHashMap<String, Object>> contentList = new ArrayList<>(); |
| | | ConcurrentHashMap map = new ConcurrentHashMap(); |
| | | map.put("审批人:", serviceProcessVO.getCheckusername()); |
| | | map.put("审批时间:", serviceProcessVO.getCheckTime()); |
| | | map.put("意见:", serviceProcessVO.getFlowcontent()); |
| | | contentList.add(map); |
| | | DingTalkReqVo dingTalkReqVo = new DingTalkReqVo(); |
| | | dingTalkReqVo.setTitle("财务系统信息"); |
| | | dingTalkReqVo.setNumber(phone); |
| | | dingTalkReqVo.setContents(contentList); |
| | | log.info("钉钉发送消息:{}", dingTalkReqVo); |
| | | dingTalkService.sendNotification(dingTalkReqVo); |
| | | } |
| | | } |