| | |
| | | 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.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.ibatis.annotations.Param; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.xssf.usermodel.XSSFColor; |
| | | 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; |
| | | |
| | | /** |
| | |
| | | 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 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; |
| | | } |
| | | |
| | | /** |
| | | * 查询费用申请主列表(包含删除的) |
| | |
| | | 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) { |
| | |
| | | serviceFunddetailShareds.get(i).setId(null); |
| | | //数据发送给财务 |
| | | try { |
| | | uploadOAFileAndUpdateDb(serviceFunddetailShareds.get(i)); |
| | | if (!active.equals("druid")) uploadOAFileAndUpdateDb(serviceFunddetailShareds.get(i)); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("Exception中入参的ID为:{},异常信息为 : {}", id, e.getMessage()); |
| | |
| | | |
| | | 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"); |
| | |
| | | return 0; |
| | | } |
| | | |
| | | // int uploadOAFileAndUpdateDb(ServiceFundShared remShare) { |
| | | // //上传OA文件 |
| | | // //String strUrl = "http://129.88.242.39:8899/seeyon/rest/token?userName=opo&password=127814f8-84e8-4304-84a5-a71573567efd&loginName=demo3"; |
| | | // String strUrl = "http://129.88.242.39:8899/seeyon/rest/token"; |
| | | // //String strUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/token"; |
| | | // //上传文件成功后,去更新相关的数据库 |
| | | // |
| | | // |
| | | // Map<String, Object> map = new HashMap<String, Object>(); |
| | | // map.put("userName", "opo"); |
| | | // map.put("password", "4126407a-9821-4874-be41-6568abd6dbe5"); |
| | | // map.put("loginName", "demo3"); |
| | | // |
| | | // JSONObject jsonObj = new JSONObject(map); |
| | | // |
| | | // System.out.println("uploadOAFileAndUpdateDb + jsonObject" + jsonObj.toString() + "\r\n" + jsonObj.toJSONString()); |
| | | // String strRes = HttpClientKit.postOpr(strUrl, jsonObj.toString());// |
| | | // //String strRes = HttpClientKit.postMsg(strUrl,jsonObj);//得到返回的token? |
| | | // |
| | | // JSONObject json1 = JSONObject.parseObject(strRes); |
| | | // strRes = json1.get("id").toString(); |
| | | // |
| | | // ///if(strRes.isEmpty() || "" == strRes) return -1;// 为空代表失败 |
| | | // |
| | | // //下面需求调用文件的接口,调用成功返回后,得到filename和fileid 用这二个值去更新数据 |
| | | // |
| | | // String filePath = RuoYiConfig.getUploadPath(); |
| | | // String strMutfileUrl = remShare.getAnnexbankcard();//可能存在多个地址,以,分开 |
| | | // |
| | | // String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=" + strRes; |
| | | // //String strFUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/attachment?token="+strRes; |
| | | // //strFUrl = String.format(strFUrl, strRes); |
| | | // |
| | | // /*File test = null; |
| | | // File file = new File("E:\\YYJQ\\OPO\\WEB\\Upload\\upload\\2023\\02\\17"); |
| | | // if (file.exists() && file.isDirectory()) { |
| | | // // 获取所有盲盒文件夹 |
| | | // File[] ones = file.listFiles(); |
| | | // for (File one : ones) { |
| | | // test = one; |
| | | // } |
| | | // }*/ |
| | | // |
| | | // String filename = ""; |
| | | // String fileid = ""; |
| | | // |
| | | // String[] urlArray = strMutfileUrl.split(","); |
| | | // for (int i = 0; i < urlArray.length; i++) { |
| | | // String strOneFileName = urlArray[i]; |
| | | // String strTemp = strOneFileName.substring(15); |
| | | // String strFile = filePath + strTemp; |
| | | // //FileUploadUtils.getAbsoluteFile(filePath,strOneFileName); |
| | | // String struploadResult = ""; |
| | | // File filetest = new File(strFile); |
| | | // try { |
| | | // struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // |
| | | // |
| | | // //String strFRes = HttpClientKit.postMsg(strFUrl,jsonFObj); |
| | | // if (struploadResult == null) return 0; |
| | | // if (struploadResult.isEmpty()) return 0; |
| | | // |
| | | // JSONObject jsonR = JSONObject.parseObject(struploadResult); |
| | | // |
| | | // JSONArray jsonArr = jsonR.getJSONArray("atts"); |
| | | // for (int j = 0; j < jsonArr.size(); j++) { |
| | | // JSONObject jsonRet = jsonArr.getJSONObject(j); |
| | | // String name1 = jsonRet.get("filename").toString(); |
| | | // String id1 = jsonRet.get("fileUrl").toString(); |
| | | // filename += name1; |
| | | // fileid += id1; |
| | | // if (i != urlArray.length - 1) { |
| | | // filename += ","; |
| | | // fileid += ","; |
| | | // } |
| | | // } |
| | | // |
| | | // } |
| | | // |
| | | // long nId = remShare.getId(); |
| | | // remShare.setId(nId); |
| | | // remShare.setFilename(filename); |
| | | // remShare.setFileid(fileid); |
| | | // boolean bRet = sharedService.updateById(remShare); |
| | | // if (!bRet) return -1; |
| | | // |
| | | // return 0; |
| | | // } |
| | | |
| | | public long saveFund(ServiceFundVO serviceFundVO) { |
| | | Long id = null; |
| | | //将数据保存到fund表 |
| | |
| | | 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); |
| | | } |
| | | } |