1、审批顺序:审批时,从一级到五级逐级审批,回退时,由审批人员指定回退级别,如从五级审批退回到经办人(需要重新修改材料的人员处),每一级可以看到回退的信息;修改完成后,直接从经办人处到达五级审批或退回的审批人。被退回的信息修改完成后,直接从经办人到达五级审批或退回的审批人处,那么其他层级的审批人虽然不需要审批,但要能够看到重新修改后的信息。
说明:
(1)差旅费报销主表:service_reimbursement
标识字段:FlowLevel(当前审核级别 处于哪个阶段 0:申请;1:一级审核;2:二级审核;3:三级审核等; 4:四级审核等; 5:五级审核等);RecordStatus(记录状态 详见字典sys_travelexpensestatus)
(2)费用报销主表:service_fund
标识字段:FlowLevel(当前审核级别 处于哪个阶段 0:申请;1:一级审核;2:二级审核;3:三级审核等; 4:四级审核等; 5:五级审核等);RecordStatus(记录状态 详见字典sys_travelexpensestatus)
(3)审批流程设置表:service_fundflowrule
(4)审批流程记录表:service_fundflow
通过钉钉将消息发送给发起人,进行重新修改
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.web.controller.project; |
| | | |
| | | import com.ruoyi.common.core.controller.BaseController; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | import com.ruoyi.project.domain.vo.DingTalkReqVo; |
| | | import com.ruoyi.project.service.DingTalkService; |
| | | import com.taobao.api.ApiException; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.context.annotation.PropertySource; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | /** |
| | | * ééæ¥å£ |
| | | * |
| | | * @author liusheng |
| | | * @date 2023-05-15 |
| | | */ |
| | | @Api(description = "é鿥å£") |
| | | @RestController |
| | | @RequestMapping("/smartor/dingtalk") |
| | | @PropertySource(value = {"classpath:application-druid.yml"}) |
| | | public class DingTalkController extends BaseController { |
| | | |
| | | @Value("${dingAppid}") |
| | | private String dingAppid; |
| | | |
| | | @Value("${dingAppSecret}") |
| | | private String dingAppSecret; |
| | | |
| | | @Autowired |
| | | private DingTalkService dingTalkService; |
| | | |
| | | /** |
| | | * åéééæ¶æ¯ |
| | | * |
| | | * @param dingTalkReqVo åéå
容 |
| | | * @throws ApiException |
| | | */ |
| | | @ApiOperation("åéééæ¶æ¯") |
| | | @PostMapping("/sendNotification") |
| | | public AjaxResult sendNotification(@RequestBody DingTalkReqVo dingTalkReqVo) { |
| | | Boolean aBoolean = dingTalkService.sendNotification(dingTalkReqVo); |
| | | if (aBoolean) { |
| | | return success(); |
| | | } |
| | | return error(); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | FlowLevel = FlowLevel + 1; |
| | | } else { |
| | | CheckFlag = 2; |
| | | if (CheckFlag == 2) { |
| | | //åºå»é¢è¦æ±å¦æåºç°éåï¼ç´æ¥éå°åèµ·è
|
| | | FlowLevel = 0; |
| | | } else { |
| | | RecordStatus = (FlowLevel + 1) * 2 - 1; |
| | | FlowLevel = (FlowLevel - 1); |
| | | if (FlowLevel < 0) { |
| | | FlowLevel = 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | @PutMapping |
| | | @RepeatSubmit |
| | | public AjaxResult edit(@RequestBody ServiceFund serviceFund) { |
| | | List<ServiceFund> infoByInfoIdList = serviceFundService.getInfoByInfoId(serviceFund.getId()); |
| | | for (ServiceFund sf : infoByInfoIdList) { |
| | | //妿çäº100ï¼è¯´æå·²ç»èµ°å°å»é¢è´¢å¡é£è¾¹äºï¼è´¢å¡é£è¾¹åæ°æ®æ¯ä»å享表åï¼æä»¥ï¼è¿éç´æ¥å¾åäº«è¡¨éæ·»å æ°æ®å°±è¡äº |
| | | if (sf.getBackflowlevel() == 100 || sf.getBackflowlevel() == 199) { |
| | | ServiceFundShared serviceFundShared = DtoConversionUtils.sourceToTarget(serviceFund, ServiceFundShared.class); |
| | | serviceFundShared.setId(null); |
| | | serviceFundShared.setDel_flag(0); |
| | | fundSharedService.save(serviceFundShared); |
| | | |
| | | //å°fund表çå®¡æ ¸ç¶ææ¹æ100 |
| | | sf.setBackflowlevel(100); |
| | | serviceFundService.updateById(sf); |
| | | return success(); |
| | | } else { |
| | | boolean bret = serviceFundService.updateById(serviceFund); |
| | | // if (bret) { |
| | | // addReiSharedDatd(serviceFund, 2); |
| | | // } |
| | | return toAjax(bret); |
| | | } |
| | | } |
| | | |
| | | return toAjax(false); |
| | | } |
| | | |
| | | /** |
| | | * å é¤è´¹ç¨ç³è¯·ä¸» |
| | |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.common.annotation.Log; |
| | | import com.ruoyi.common.annotation.RepeatSubmit; |
| | | import com.ruoyi.common.config.RuoYiConfig; |
| | |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.HttpClientKit; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.bean.DtoConversionUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.project.domain.*; |
| | | import com.ruoyi.project.domain.dto.ServiceReimbursementDto; |
| | |
| | | import freemarker.template.TemplateException; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.commons.lang.ObjectUtils; |
| | | import org.apache.commons.lang.StringUtils; |
| | | import org.apache.ibatis.annotations.Options; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | private IServiceReimbursementService serviceReimbursementService; |
| | | |
| | | @Autowired |
| | | private IServiceReimbursementpayeeService reimbursementpayeeService; |
| | | private IServiceReimbursementSharedService serviceReimbursementSharedService; |
| | | |
| | | @Autowired |
| | | private IServiceReimbursementSharedService serviceReimbursementServiceShare; |
| | | private IServiceReimbursementpayeeService reimbursementpayeeService; |
| | | |
| | | @Autowired |
| | | private IServiceReimbursementdetailService serviceReimbursementdetailService; |
| | |
| | | |
| | | @Autowired |
| | | private IServiceFundflowService serviceFundflowService; |
| | | |
| | | @Autowired |
| | | private IServiceFundService serviceFundService; |
| | | |
| | | @Autowired |
| | | private ISysPostService postService; |
| | |
| | | // return 0; |
| | | // } |
| | | |
| | | |
| | | /** |
| | | * å·®æ
è´¹ä¸æ¥ |
| | | */ |
| | |
| | | @PostMapping("/travelexpensereport") |
| | | public AjaxResult travelexpensereport(@RequestBody CheckFundVO checkFundVO) { |
| | | ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid()); |
| | | //妿çäº100ï¼è¯´æå·²ç»èµ°å°å»é¢è´¢å¡é£è¾¹äºï¼è´¢å¡é£è¾¹åæ°æ®æ¯ä»å享表åï¼æä»¥ï¼è¿éç´æ¥å¾åäº«è¡¨éæ·»å æ°æ®å°±è¡äº |
| | | if (serviceReimbursement.getBackflowlevel() == 100 || serviceReimbursement.getBackflowlevel() == 199) { |
| | | |
| | | //å°ä¿®æ¹ç䏿¥æ°æ® æ°å¢ä¸æ¡ |
| | | ServiceReimbursementShared serviceReimbursementShared = DtoConversionUtils.sourceToTarget(serviceReimbursement, ServiceReimbursementShared.class); |
| | | serviceReimbursementShared.setId(null); |
| | | serviceReimbursementShared.setDelFlag(0L); |
| | | serviceReimbursementSharedService.save(serviceReimbursementShared); |
| | | |
| | | //å°éåé¶æ®µè®¾ç½®æ100 |
| | | serviceReimbursement.setBackflowlevel(100L); |
| | | serviceReimbursementService.updateById(serviceReimbursement); |
| | | return success(); |
| | | } |
| | | if (serviceReimbursement != null) { |
| | | Integer TotalLevel = 0; |
| | | LoginUser loginUser = getLoginUser(); |
| | |
| | | |
| | | if (!postids.contains(2)) { |
| | | serviceReimbursement.setFlowlevel(1L); |
| | | serviceReimbursement.setBackflowlevel(1L); |
| | | serviceReimbursement.setRecordstatus(2); |
| | | } else { |
| | | serviceReimbursement.setFlowlevel(0L); |
| | | serviceReimbursement.setRecordstatus(0); |
| | | serviceReimbursement.setBackflowlevel(0L); |
| | | } |
| | | |
| | | if (!postids.contains(2)) { |
| | |
| | | @PostMapping("/checkfund") |
| | | public AjaxResult checkFund(@RequestBody CheckFundVO checkFundVO) { |
| | | ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid()); |
| | | |
| | | if (serviceReimbursement != null) { |
| | | Integer totalLevel = 0; |
| | | LoginUser loginUser = getLoginUser(); |
| | |
| | | Integer CheckFlag = 0; |
| | | Integer RecordStatus = serviceReimbursement.getRecordstatus(); |
| | | Integer FlowLevel = Integer.valueOf(serviceReimbursement.getFlowlevel().toString()); |
| | | if (Objects.isNull(serviceReimbursement.getBackflowlevel()) && !Objects.isNull(serviceReimbursement.getFlowlevel())) { |
| | | serviceReimbursement.setBackflowlevel(Long.valueOf(FlowLevel.toString())); |
| | | } |
| | | Integer OriginalFlowLevel = FlowLevel; |
| | | if (checkFundVO.getFlowconclusion() == 1) { |
| | | CheckFlag = 1; |
| | |
| | | FlowLevel = FlowLevel + 1; |
| | | } else { |
| | | CheckFlag = 2; |
| | | |
| | | if (CheckFlag == 2) { |
| | | //åºå»é¢è¦æ±å¦æåºç°éåï¼ç´æ¥éå°åèµ·è
|
| | | FlowLevel = 0; |
| | | } else { |
| | | //ä¸é¢æ¯åæ¥çåæ³ï¼ä¸çº§ä¸çº§çå¾ä¸éï¼å»é¢ç°å¨ä¸è¦è¿æ ·æäºï¼ä¸é¢è¿æ®µä»£ç å
ä¿çï¼çå»é¢åå¿è½¬æï¼åç»æ¾å¼ |
| | | RecordStatus = (FlowLevel + 1) * 2 - 1; |
| | | FlowLevel = (FlowLevel - 1); |
| | | if (FlowLevel < 0) { |
| | | FlowLevel = 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | serviceReimbursement.setRecordstatus(RecordStatus); |
| | | serviceReimbursement.setFlowlevel(Long.valueOf(FlowLevel.toString())); |
| | | |
| | | ServiceFundflow serviceFundflow = new ServiceFundflow(); |
| | | SysUser user = loginUser.getUser(); |
| | | serviceFundflow.setFundid(serviceReimbursement.getId()); |
| | |
| | | excludes: /system/notice |
| | | # å¹é
龿¥ |
| | | urlPatterns: /system/*,/monitor/*,/tool/* |
| | | |
| | | #ééçå¯é¥ |
| | | dingAppid: dingn8iip5ubj7clrrsv |
| | | dingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD |
| | |
| | | <groupId>com.ruoyi</groupId> |
| | | <artifactId>ruoyi-system</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | <version>1.18.26</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.squareup.okhttp3</groupId> |
| | | <artifactId>okhttp</artifactId> |
| | | <version>4.10.0</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.aliyun</groupId> |
| | | <artifactId>alibaba-dingtalk-service-sdk</artifactId> |
| | | <version>2.0.0</version> |
| | | </dependency> |
| | | <!-- é¿éJSONè§£æå¨ --> |
| | | <dependency> |
| | | <groupId>com.alibaba.fastjson2</groupId> |
| | | <artifactId>fastjson2</artifactId> |
| | | <version>2.0.25</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
| | |
| | | @ApiModelProperty("å½åå®¡æ ¸çº§å«") |
| | | private int flowlevel; |
| | | |
| | | /** |
| | | * å¤äºåªä¸ªé¶æ®µ 0ï¼ç³è¯·ï¼1ï¼ä¸çº§å®¡æ ¸ï¼2ï¼äºçº§å®¡æ ¸ï¼3ï¼ä¸çº§å®¡æ ¸ç 100ï¼å»é¢è´¢å¡ 199:å»é¢é©³å |
| | | */ |
| | | @ApiModelProperty("éåå®¡æ ¸çº§å«") |
| | | private int backflowlevel; |
| | | |
| | | /** ç¨åéé¢ */ |
| | | @ApiModelProperty("ç¨åéé¢") |
| | | @Excel(name = "ç¨åéé¢") |
| | |
| | | @Excel(name = "è®°å½ç¶æ") |
| | | private long serfunid; |
| | | |
| | | |
| | | @ApiModelProperty("è´¢å¡é©³åä¿¡æ¯ï¼å§å+' '+æ¶é´+' '+æè§") |
| | | @Excel(name = "è´¢å¡é©³åä¿¡æ¯ï¼å§å+' '+æ¶é´+' '+æè§") |
| | | private String cxrjyj; |
| | | |
| | | } |
| | | |
| | |
| | | */ |
| | | @Data |
| | | @ApiModel("æ¥éç³è¯·") |
| | | public class ServiceReimbursement extends BaseEntity |
| | | { |
| | | public class ServiceReimbursement extends BaseEntity { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** $column.columnComment */ |
| | | /** |
| | | * $column.columnComment |
| | | */ |
| | | @ApiModelProperty("$column.columnComment") |
| | | //æ°æ®åºèªå¢æ¹æ@TableId(type = IdType.AUTO) |
| | | @TableId(type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** æ¥é人ç¼å· */ |
| | | /** |
| | | * æ¥é人ç¼å· |
| | | */ |
| | | @ApiModelProperty("æ¥é人ç¼å·") |
| | | @Excel(name = "æ¥é人ç¼å·") |
| | | private String userno; |
| | | |
| | | /** æ¥é人å§å */ |
| | | /** |
| | | * æ¥é人å§å |
| | | */ |
| | | @ApiModelProperty("æ¥é人å§å") |
| | | @Excel(name = "æ¥é人å§å") |
| | | private String username; |
| | | |
| | | /** è¯ä»¶ç±»å æ ¹æ®åå
¸sys_IDType */ |
| | | /** |
| | | * è¯ä»¶ç±»å æ ¹æ®åå
¸sys_IDType |
| | | */ |
| | | @ApiModelProperty("è¯ä»¶ç±»å æ ¹æ®åå
¸sys_IDType") |
| | | @Excel(name = "è¯ä»¶ç±»å æ ¹æ®åå
¸sys_IDType") |
| | | private String idcardtype; |
| | | |
| | | /** è¯ä»¶å·ç */ |
| | | /** |
| | | * è¯ä»¶å·ç |
| | | */ |
| | | @ApiModelProperty("è¯ä»¶å·ç ") |
| | | @Excel(name = "è¯ä»¶å·ç ") |
| | | private String idcardno; |
| | | |
| | | /** èç³»çµè¯ */ |
| | | /** |
| | | * èç³»çµè¯ |
| | | */ |
| | | @ApiModelProperty("èç³»çµè¯") |
| | | @Excel(name = "èç³»çµè¯") |
| | | private String phone; |
| | | |
| | | /** 弿·é¶è¡ */ |
| | | /** |
| | | * 弿·é¶è¡ |
| | | */ |
| | | @ApiModelProperty("弿·é¶è¡") |
| | | @Excel(name = "弿·é¶è¡") |
| | | private String depositbank; |
| | | |
| | | /** å¡å· */ |
| | | /** |
| | | * å¡å· |
| | | */ |
| | | @ApiModelProperty("å¡å·") |
| | | @Excel(name = "å¡å·") |
| | | private String bankcardno; |
| | | |
| | | /** åè¡åç§° */ |
| | | /** |
| | | * åè¡åç§° |
| | | */ |
| | | @ApiModelProperty("åè¡åç§°") |
| | | @Excel(name = "åè¡åç§°") |
| | | private String branchbankname; |
| | | |
| | | /** é¶è¡å¡ç
§çè·¯å¾ å¤ä¸ªç¨;åå¼ */ |
| | | /** |
| | | * é¶è¡å¡ç
§çè·¯å¾ å¤ä¸ªç¨;åå¼ |
| | | */ |
| | | @ApiModelProperty("é¶è¡å¡ç
§çè·¯å¾ å¤ä¸ªç¨;åå¼") |
| | | @Excel(name = "é¶è¡å¡ç
§çè·¯å¾ å¤ä¸ªç¨;åå¼") |
| | | private String annexbankcard; |
| | | |
| | | /** éä»¶è·¯å¾ å¤ä¸ªç¨;åå¼ */ |
| | | /** |
| | | * éä»¶è·¯å¾ å¤ä¸ªç¨;åå¼ |
| | | */ |
| | | @ApiModelProperty("éä»¶è·¯å¾ å¤ä¸ªç¨;åå¼") |
| | | @Excel(name = "éä»¶è·¯å¾ å¤ä¸ªç¨;åå¼") |
| | | private String annexfiles; |
| | | |
| | | /** ç³è¯·éé¢ */ |
| | | /** |
| | | * ç³è¯·éé¢ |
| | | */ |
| | | @ApiModelProperty("ç³è¯·éé¢") |
| | | @Excel(name = "ç³è¯·éé¢") |
| | | private Double amountrequested; |
| | | |
| | | /** 颿¯è´¹ç¨ */ |
| | | /** |
| | | * 颿¯è´¹ç¨ |
| | | */ |
| | | @ApiModelProperty("颿¯è´¹ç¨") |
| | | @Excel(name = "颿¯è´¹ç¨") |
| | | private Double prepaidamount; |
| | | |
| | | /** åç¥¨å¼ æ° */ |
| | | /** |
| | | * åç¥¨å¼ æ° |
| | | */ |
| | | @ApiModelProperty("åç¥¨å¼ æ°") |
| | | @Excel(name = "åç¥¨å¼ æ°") |
| | | private Long invoicecount; |
| | | |
| | | /** éä»¶æ° */ |
| | | /** |
| | | * éä»¶æ° |
| | | */ |
| | | @ApiModelProperty("éä»¶æ°") |
| | | @Excel(name = "éä»¶æ°") |
| | | private Long attachcount; |
| | | |
| | | /** é¨é¨ä¸»ç®¡å·¥å· */ |
| | | /** |
| | | * é¨é¨ä¸»ç®¡å·¥å· |
| | | */ |
| | | @ApiModelProperty("é¨é¨ä¸»ç®¡å·¥å·") |
| | | @Excel(name = "é¨é¨ä¸»ç®¡å·¥å·") |
| | | private String managerno; |
| | | |
| | | /** é¨é¨ä¸»ç®¡åå */ |
| | | /** |
| | | * é¨é¨ä¸»ç®¡åå |
| | | */ |
| | | @ApiModelProperty("é¨é¨ä¸»ç®¡åå") |
| | | @Excel(name = "é¨é¨ä¸»ç®¡åå") |
| | | private String managername; |
| | | |
| | | /** é¨é¨ç¼å· */ |
| | | /** |
| | | * é¨é¨ç¼å· |
| | | */ |
| | | @ApiModelProperty("é¨é¨ç¼å·") |
| | | @Excel(name = "é¨é¨ç¼å·") |
| | | private String deptmentno; |
| | | |
| | | /** é¨é¨åç§° */ |
| | | /** |
| | | * é¨é¨åç§° |
| | | */ |
| | | @ApiModelProperty("é¨é¨åç§°") |
| | | @Excel(name = "é¨é¨åç§°") |
| | | private String deptmentname; |
| | | |
| | | /** ä¸å¿ç¾å */ |
| | | /** |
| | | * ä¸å¿ç¾å |
| | | */ |
| | | @ApiModelProperty("ä¸å¿ç¾å") |
| | | @Excel(name = "ä¸å¿ç¾å") |
| | | private String opochecker; |
| | | |
| | | /** è´¢å¡å¯é¢é¿ç¾å */ |
| | | /** |
| | | * è´¢å¡å¯é¢é¿ç¾å |
| | | */ |
| | | @ApiModelProperty("è´¢å¡å¯é¢é¿ç¾å") |
| | | @Excel(name = "è´¢å¡å¯é¢é¿ç¾å") |
| | | private String finvicepresident; |
| | | |
| | | /** ä¸å¡å¯é¢é¿ç¾å */ |
| | | /** |
| | | * ä¸å¡å¯é¢é¿ç¾å |
| | | */ |
| | | @ApiModelProperty("ä¸å¡å¯é¢é¿ç¾å") |
| | | @Excel(name = "ä¸å¡å¯é¢é¿ç¾å") |
| | | private String busvicepresident; |
| | | |
| | | /** åå
¬å®¤ä¸»ä»»ç¾å */ |
| | | /** |
| | | * åå
¬å®¤ä¸»ä»»ç¾å |
| | | */ |
| | | @ApiModelProperty("åå
¬å®¤ä¸»ä»»ç¾å") |
| | | @Excel(name = "åå
¬å®¤ä¸»ä»»ç¾å") |
| | | private String officedirector; |
| | | |
| | | /** è´¢å¡å®¤ä¸»ä»»ç¾å */ |
| | | /** |
| | | * è´¢å¡å®¤ä¸»ä»»ç¾å |
| | | */ |
| | | @ApiModelProperty("è´¢å¡å®¤ä¸»ä»»ç¾å") |
| | | @Excel(name = "è´¢å¡å®¤ä¸»ä»»ç¾å") |
| | | private String financedirector; |
| | | |
| | | /** è´¢å¡å®¡æ ¸ */ |
| | | /** |
| | | * è´¢å¡å®¡æ ¸ |
| | | */ |
| | | @ApiModelProperty("è´¢å¡å®¡æ ¸") |
| | | @Excel(name = "è´¢å¡å®¡æ ¸") |
| | | private String financechecher; |
| | | |
| | | /** å
³èservice_donatebaseinfo表çID */ |
| | | /** |
| | | * å
³èservice_donatebaseinfo表çID |
| | | */ |
| | | @ApiModelProperty("å
³èservice_donatebaseinfo表çID") |
| | | @Excel(name = "å
³èservice_donatebaseinfo表çID") |
| | | private Long infoid; |
| | | |
| | | /** æç®è
ç¼å· */ |
| | | /** |
| | | * æç®è
ç¼å· |
| | | */ |
| | | @ApiModelProperty("æç®è
ç¼å·") |
| | | @Excel(name = "æç®è
ç¼å·") |
| | | private String donorno; |
| | | |
| | | /** è®°å½ç¶æ */ |
| | | /** |
| | | * è®°å½ç¶æ |
| | | */ |
| | | @ApiModelProperty("è®°å½ç¶æ") |
| | | @Excel(name = "è®°å½ç¶æ") |
| | | private Integer recordstatus; |
| | | |
| | | /** ä¸ä¼ æ å¿ */ |
| | | /** |
| | | * ä¸ä¼ æ å¿ |
| | | */ |
| | | @ApiModelProperty("ä¸ä¼ æ å¿") |
| | | @Excel(name = "ä¸ä¼ æ å¿") |
| | | private String uploadflag; |
| | | |
| | | /** ä¸ä¼ æ¶é´ */ |
| | | /** |
| | | * ä¸ä¼ æ¶é´ |
| | | */ |
| | | @ApiModelProperty("ä¸ä¼ æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @Excel(name = "ä¸ä¼ æ¶é´", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | |
| | | @ApiModelProperty("æ»éé¢ç大å") |
| | | private String bigstrmoney; |
| | | |
| | | /** éä»¶å°åï¼add by yangjb 20221124 */ |
| | | /** |
| | | * éä»¶å°åï¼add by yangjb 20221124 |
| | | */ |
| | | @ApiModelProperty("éä»¶å°å") |
| | | private String fileurl; |
| | | |
| | | private String remark; |
| | | |
| | | /** å½åå®¡æ ¸çº§å« å¤äºåªä¸ªé¶æ®µ 0ï¼ç³è¯·ï¼1ï¼ä¸çº§å®¡æ ¸ï¼2ï¼äºçº§å®¡æ ¸ï¼3ï¼ä¸çº§å®¡æ ¸ç */ |
| | | /** |
| | | * å½åå®¡æ ¸çº§å« å¤äºåªä¸ªé¶æ®µ 0ï¼ç³è¯·ï¼1ï¼ä¸çº§å®¡æ ¸ï¼2ï¼äºçº§å®¡æ ¸ï¼3ï¼ä¸çº§å®¡æ ¸ç |
| | | */ |
| | | @ApiModelProperty("å½åå®¡æ ¸çº§å«") |
| | | private Long flowlevel; |
| | | |
| | | /** |
| | | * 99:审æ¹é©³å 100ï¼ä¸ä¼ å»é¢ 199ï¼å»é¢é©³å |
| | | */ |
| | | @ApiModelProperty("éåæ¶çå®¡æ ¸çº§å«") |
| | | private Long backflowlevel; |
| | | |
| | | /** è´¹ç¨å½å±ï¼0ï¼å
¶ä»äººåï¼1ï¼ä¸è人åï¼2ï¼åè°åï¼3ï¼ä¸å®¶ï¼4ï¼æç®è
å®¶å± */ |
| | | /** |
| | | * è´¹ç¨å½å±ï¼0ï¼å
¶ä»äººåï¼1ï¼ä¸è人åï¼2ï¼åè°åï¼3ï¼ä¸å®¶ï¼4ï¼æç®è
å®¶å± |
| | | */ |
| | | @ApiModelProperty("è´¹ç¨å½å±") |
| | | private String costtype; |
| | | |
| | | /** è´¹ç¨å½å±æè¿° */ |
| | | /** |
| | | * è´¹ç¨å½å±æè¿° |
| | | */ |
| | | @ApiModelProperty("è´¹ç¨å½å±æè¿°") |
| | | private String costtypename; |
| | | |
| | |
| | | @ApiModelProperty("ç³è¯·æ¶é´") |
| | | private Date createTime; |
| | | |
| | | |
| | | @ApiModelProperty("å 餿 å¿ï¼0代表åå¨ 1代表å é¤ï¼") |
| | | private Integer delFlag; |
| | | |
| | | // @ApiModelProperty("å¼å§æ¶é´") |
| | | // private Date starttime; |
| | | // |
| | |
| | | @ApiModelProperty("æç®å®¶å±äººæ°") |
| | | private Integer donorrelatives; |
| | | |
| | | @ApiModelProperty("è´¢å¡ç³»ç»é©³åä¿¡æ¯ï¼å§å+' '+æ¶é´+' '+æè§") |
| | | private String cxrjyj; |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "ServiceReimbursementShared{" + |
| | |
| | | @Excel(name = "弿·é¶è¡") |
| | | private String bankname; |
| | | |
| | | /** å é¤ */ |
| | | @ApiModelProperty("å é¤") |
| | | @Excel(name = "å é¤") |
| | | private Integer delFlag; |
| | | |
| | | /** 夿³¨ */ |
| | | @ApiModelProperty("夿³¨") |
| | | @Excel(name = "夿³¨") |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.project.domain.vo; |
| | | |
| | | import com.ruoyi.common.core.domain.BaseEntity; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | |
| | | /** |
| | | * ééæ¶æ¯åé |
| | | * |
| | | * @author ls |
| | | * @date 2023-07-14 |
| | | */ |
| | | @Data |
| | | @ApiModel(value = "DingTalkReqVo", description = "ééæ¶æ¯åé") |
| | | public class DingTalkReqVo extends BaseEntity { |
| | | |
| | | /** |
| | | * åéå
容 |
| | | */ |
| | | @ApiModelProperty(value = "åéå
容") |
| | | private List<ConcurrentHashMap<String, String>> contents; |
| | | |
| | | /** |
| | | * ç¨æ·ééå· |
| | | */ |
| | | @ApiModelProperty(value = "ç¨æ·ææºå·") |
| | | private String number; |
| | | |
| | | /** |
| | | * é¨é¨ID |
| | | */ |
| | | @ApiModelProperty(value = "é¨é¨ID") |
| | | private Long deptId; |
| | | |
| | | /** |
| | | * åéæ¶æ¯çæ é¢ |
| | | */ |
| | | @ApiModelProperty(value = "åéæ¶æ¯çæ é¢") |
| | | private String title; |
| | | |
| | | /** |
| | | * 跳转url |
| | | */ |
| | | @ApiModelProperty(value = "跳转url") |
| | | private String url; |
| | | } |
| | |
| | | public List<ServiceFundShared> selectServiceFundSharedList(ServiceFundShared serviceFundShared); |
| | | |
| | | List<ServiceFundShared> getFundShareInfoById(Long fundid); |
| | | |
| | | Boolean delfundsharedInfoById(Long fundId); |
| | | } |
| | |
| | | public List<ServiceFunddetail> getDataBybeneficiaryNo(FunddetailReqVo funddetailReqVo); |
| | | |
| | | List<ServiceFunddetail> getTaxBeforeByBeneFiciaryNo(TaxMoneyVO taxMoneyV); |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | package com.ruoyi.project.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.project.domain.ServiceReimbursementShared; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | * @author ruoyi |
| | | * @date 2023-01-10 |
| | | */ |
| | | public interface ServiceReimbursementSharedMapper extends BaseMapper<ServiceReimbursementShared> |
| | | { |
| | | @Mapper |
| | | public interface ServiceReimbursementSharedMapper extends BaseMapper<ServiceReimbursementShared> { |
| | | /** |
| | | * æ¥è¯¢æ¥éç³è¯·å表 |
| | | * |
| | |
| | | public List<ServiceReimbursementShared> selectServiceReimbursementSharedList(ServiceReimbursementShared serviceReimbursementShared); |
| | | |
| | | List<ServiceReimbursementShared> getRemShareInfoByRemId(Long RemId); |
| | | |
| | | Boolean delResharedInfoById(Long id); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.project.service; |
| | | |
| | | import com.ruoyi.project.domain.vo.DingTalkReqVo; |
| | | |
| | | /** |
| | | * 宣æåç±»Serviceæ¥å£ |
| | | * |
| | | * @author smartor |
| | | * @date 2023-03-04 |
| | | */ |
| | | public interface DingTalkService { |
| | | /** |
| | | * åéééæ¶æ¯ |
| | | * |
| | | * @param dingTalkReqVo |
| | | */ |
| | | Boolean sendNotification(DingTalkReqVo dingTalkReqVo); |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.project.domain.ServiceFundShared; |
| | | import com.ruoyi.project.domain.ServiceReimbursementShared; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | * @author ruoyi |
| | | * @date 2023-03-27 |
| | | */ |
| | | public interface IServiceFundSharedService extends IService<ServiceFundShared> |
| | | { |
| | | public interface IServiceFundSharedService extends IService<ServiceFundShared> { |
| | | |
| | | /** |
| | | * æ¥è¯¢è´¹ç¨ç³è¯·ä¸»å表 |
| | |
| | | * @param serviceFundShared è´¹ç¨ç³è¯·ä¸» |
| | | * @return è´¹ç¨ç³è¯·ä¸»éå |
| | | */ |
| | | public List<ServiceFundShared> queryList(ServiceFundShared serviceFundShared); |
| | | List<ServiceFundShared> queryList(ServiceFundShared serviceFundShared); |
| | | |
| | | List<ServiceFundShared> queryFundShareList(); |
| | | |
| | | List<ServiceFundShared> getFundShareInfoById(Long fundid); |
| | | |
| | | Boolean delfundsharedInfoById(Long fundId); |
| | | } |
| | |
| | | * @author ruoyi |
| | | * @date 2023-01-10 |
| | | */ |
| | | public interface IServiceReimbursementSharedService extends IService<ServiceReimbursementShared> |
| | | { |
| | | public interface IServiceReimbursementSharedService extends IService<ServiceReimbursementShared> { |
| | | |
| | | /** |
| | | * æ¥è¯¢æ¥éç³è¯·å表 |
| | |
| | | * @return æ¥éç³è¯·éå |
| | | */ |
| | | public List<ServiceReimbursementShared> queryList(ServiceReimbursementShared serviceReimbursementShared); |
| | | |
| | | List<ServiceReimbursementShared> getRemShareInfoByRemId(Long remeid); |
| | | |
| | | /** |
| | | * æ¥è¯¢è¢«éåçï¼å¹¶ä¸æ²¡æå é¤çæ°æ® |
| | | * |
| | | * @return |
| | | */ |
| | | List<ServiceReimbursementShared> queryReShareList(); |
| | | |
| | | Boolean delResharedInfoById(Long remid); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.project.service.impl; |
| | | |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.dingtalk.api.DefaultDingTalkClient; |
| | | import com.dingtalk.api.DingTalkClient; |
| | | import com.dingtalk.api.request.OapiGettokenRequest; |
| | | import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request; |
| | | import com.dingtalk.api.request.OapiUserListidRequest; |
| | | import com.dingtalk.api.request.OapiV2UserGetbymobileRequest; |
| | | import com.dingtalk.api.response.OapiGettokenResponse; |
| | | import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response; |
| | | import com.dingtalk.api.response.OapiUserListidResponse; |
| | | import com.dingtalk.api.response.OapiV2UserGetbymobileResponse; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.project.domain.vo.DingTalkReqVo; |
| | | import com.ruoyi.project.service.DingTalkService; |
| | | import com.taobao.api.ApiException; |
| | | import lombok.extern.log4j.Log4j; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | |
| | | /** |
| | | * æºè½ä¸å¿ |
| | | * |
| | | * @author ls |
| | | * @date 2023-05-23 |
| | | */ |
| | | @Service |
| | | @Log4j |
| | | public class DingTalkServiceImpl implements DingTalkService { |
| | | |
| | | |
| | | @Value("${dingAppid}") |
| | | private String dingAppid; |
| | | |
| | | @Value("${dingAppSecret}") |
| | | private String dingAppSecret; |
| | | |
| | | @Override |
| | | public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) { |
| | | String body = null; |
| | | List<String> userIdlist = new ArrayList(); |
| | | Boolean result = false; |
| | | log.info("åééééç¥"); |
| | | |
| | | String accessToken = null; |
| | | try { |
| | | accessToken = getAccessToken(); |
| | | } catch (ApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (StringUtils.isNotEmpty(dingTalkReqVo.getNumber())) { |
| | | DingTalkClient clientT = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getbymobile"); |
| | | OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest(); |
| | | req.setMobile(dingTalkReqVo.getNumber()); |
| | | OapiV2UserGetbymobileResponse rsp = null; |
| | | try { |
| | | rsp = clientT.execute(req, accessToken); |
| | | body = rsp.getBody(); |
| | | String jsonObject = JSONObject.parseObject(body).getJSONObject("result").get("userid").toString(); |
| | | userIdlist.add(jsonObject); |
| | | |
| | | } catch (ApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } else { |
| | | DingTalkClient client3 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/listid"); |
| | | |
| | | OapiUserListidRequest request2 = new OapiUserListidRequest(); |
| | | request2.setDeptId(dingTalkReqVo.getDeptId()); // 设置è¦è·åçé¨é¨ IDï¼è¿éä»¥æ ¹é¨é¨ä¸ºä¾675909059L |
| | | // 设置é¨é¨ IDï¼å¦æè·åææåå·¥ææºå·ï¼å¯ä»¥è®¾ç½®ä¸ºæ ¹é¨é¨ç ID |
| | | OapiUserListidResponse response2 = null; |
| | | try { |
| | | response2 = client3.execute(request2, accessToken); |
| | | } catch (ApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | body = response2.getBody(); |
| | | // è§£æä¸ºJSONObject |
| | | JSONObject jsonObject = JSONObject.parseObject(body); |
| | | // æååºJSONArray |
| | | JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("result").getJSONArray("userid_list")); |
| | | // å°JSONArray转为Listå表 |
| | | String str = JSONObject.toJSONString(jsonArray); |
| | | userIdlist = JSONObject.parseObject(str, List.class); |
| | | } |
| | | |
| | | |
| | | //useridæ°ç» |
| | | for (String urid : userIdlist) { |
| | | DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); |
| | | OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); |
| | | request.setUseridList(urid); |
| | | request.setAgentId(1779052814L); |
| | | request.setToAllUser(false); |
| | | |
| | | //åéå
容å¤ç |
| | | List<ConcurrentHashMap<String, String>> contents = dingTalkReqVo.getContents(); |
| | | ArrayList<OapiMessageCorpconversationAsyncsendV2Request.Form> objects = new ArrayList<>(); |
| | | for (int i = 0; i < contents.size(); i++) { |
| | | ConcurrentHashMap<String, String> map = contents.get(i); |
| | | for (Map.Entry<String, String> entry : map.entrySet()) { |
| | | OapiMessageCorpconversationAsyncsendV2Request.Form formSeverityDesc = new OapiMessageCorpconversationAsyncsendV2Request.Form(); |
| | | formSeverityDesc.setKey(entry.getKey()); |
| | | formSeverityDesc.setValue(entry.getValue()); |
| | | objects.add(formSeverityDesc); |
| | | } |
| | | } |
| | | |
| | | OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg(); |
| | | msg.setOa(new OapiMessageCorpconversationAsyncsendV2Request.OA()); |
| | | msg.getOa().setMessageUrl(dingTalkReqVo.getUrl()); |
| | | msg.getOa().setPcMessageUrl(dingTalkReqVo.getUrl()); |
| | | msg.getOa().setHead(new OapiMessageCorpconversationAsyncsendV2Request.Head()); |
| | | // msg.getOa().getHead().setText("ä½ å¨è¯´å¥å¢ç»é¡¶æ¿èå¤ºé¿æ¯èè¬é¿æ¯èè¬"); |
| | | msg.getOa().getHead().setBgcolor("00409eff"); |
| | | msg.getOa().setBody(new OapiMessageCorpconversationAsyncsendV2Request.Body()); |
| | | msg.getOa().getBody().setTitle(dingTalkReqVo.getTitle()); |
| | | // msg.getOa().getBody().setContent("å¾
å¤ç:" + "123" + "æ¡"); |
| | | |
| | | msg.getOa().getBody().setForm(objects); |
| | | msg.setMsgtype("oa"); |
| | | request.setMsg(msg); |
| | | // log.info("è·ååééç¥æ¶æ¯ä½åè·ååééç¥äººå®æ"); |
| | | OapiMessageCorpconversationAsyncsendV2Response response = null; |
| | | try { |
| | | response = client.execute(request, accessToken); |
| | | } catch (ApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | // log.info("æ¶æ¯ä»»å¡ID"+response.getTaskId()); |
| | | System.out.println(response.getTaskId()); |
| | | |
| | | result = response.isSuccess(); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·å access_token |
| | | */ |
| | | private String getAccessToken() throws ApiException { |
| | | DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken"); |
| | | OapiGettokenRequest request = new OapiGettokenRequest(); |
| | | //Appkey |
| | | request.setAppkey(dingAppid); |
| | | //Appsecret |
| | | request.setAppsecret(dingAppSecret); |
| | | /*è¯·æ±æ¹å¼*/ |
| | | request.setHttpMethod("GET"); |
| | | OapiGettokenResponse response = client.execute(request); |
| | | return response.getAccessToken(); |
| | | } |
| | | } |
| | |
| | | |
| | | return count; |
| | | } |
| | | |
| | | 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"; |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.project.domain.ServiceFundShared; |
| | | import com.ruoyi.project.domain.ServiceReimbursementShared; |
| | | import com.ruoyi.project.mapper.ServiceFundSharedMapper; |
| | | import com.ruoyi.project.service.IServiceFundSharedService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<ServiceFundShared> queryFundShareList() { |
| | | LambdaQueryWrapper<ServiceFundShared> wrappers = Wrappers.lambdaQuery(); |
| | | wrappers.eq(ServiceFundShared::getDel_flag, 0); |
| | | wrappers.isNotNull(ServiceFundShared::getCxrjyj); |
| | | |
| | | return this.list(wrappers); |
| | | } |
| | | |
| | | @Override |
| | | public List<ServiceFundShared> getFundShareInfoById(Long fundid) |
| | | { |
| | | return serviceFundSharedMapper.getFundShareInfoById(fundid); |
| | | // return null; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean delfundsharedInfoById(Long fundId) { |
| | | return serviceFundSharedMapper.delfundsharedInfoById(fundId); |
| | | } |
| | | |
| | | } |
| | |
| | | import com.ruoyi.project.service.IServiceReimbursementdetailSharedService; |
| | | import com.ruoyi.project.service.IServiceReimbursementpayeeSharedService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | |
| | | @Override |
| | | public List<ServiceReimbursement> queryList(ServiceReimbursement serviceReimbursement) { |
| | | LambdaQueryWrapper<ServiceReimbursement> wrappers = Wrappers.lambdaQuery(); |
| | | if (ObjectUtils.isNotEmpty(serviceReimbursement.getId())) { |
| | | wrappers.eq(ServiceReimbursement::getId, serviceReimbursement.getId()); |
| | | } |
| | | if (StringUtils.isNotBlank(serviceReimbursement.getCreateBy())) { |
| | | wrappers.eq(ServiceReimbursement::getCreateBy, serviceReimbursement.getCreateBy()); |
| | | } |
| | |
| | | * @date 2023-01-10 |
| | | */ |
| | | @Service |
| | | public class ServiceReimbursementSharedServiceImpl extends ServiceImpl<ServiceReimbursementSharedMapper, ServiceReimbursementShared> implements IServiceReimbursementSharedService |
| | | { |
| | | public class ServiceReimbursementSharedServiceImpl extends ServiceImpl<ServiceReimbursementSharedMapper, ServiceReimbursementShared> implements IServiceReimbursementSharedService { |
| | | |
| | | |
| | | @Autowired |
| | |
| | | if (StringUtils.isNotBlank(serviceReimbursementShared.getFileid())){ |
| | | wrappers.eq(ServiceReimbursementShared::getFileid ,serviceReimbursementShared.getFileid()); |
| | | } |
| | | |
| | | return this.list(wrappers); |
| | | } |
| | | |
| | | @Override |
| | | public List<ServiceReimbursementShared> getRemShareInfoByRemId(Long remeid) |
| | | { |
| | | public List<ServiceReimbursementShared> queryReShareList() { |
| | | LambdaQueryWrapper<ServiceReimbursementShared> wrappers = Wrappers.lambdaQuery(); |
| | | wrappers.eq(ServiceReimbursementShared::getDelFlag, 0); |
| | | wrappers.isNotNull(ServiceReimbursementShared::getCxrjyj); |
| | | |
| | | return this.list(wrappers); |
| | | } |
| | | |
| | | @Override |
| | | public List<ServiceReimbursementShared> getRemShareInfoByRemId(Long remeid) { |
| | | return serviceReimbursementSharedMapper.getRemShareInfoByRemId(remeid); |
| | | // return null; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean delResharedInfoById(Long id) { |
| | | |
| | | return serviceReimbursementSharedMapper.delResharedInfoById(id); |
| | | } |
| | | |
| | | } |
| | |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.project.mapper.ServiceFundMapper"> |
| | | |
| | | <resultMap type="ServiceFund" id="ServiceFundResult"> |
| | | <resultMap type="com.ruoyi.project.domain.ServiceFund" id="ServiceFundResult"> |
| | | <result property="id" column="ID" /> |
| | | <result property="infoid" column="InfoID" /> |
| | | <result property="donorno" column="DonorNo" /> |
| | |
| | | <result property="flowlevel" column="FlowLevel" /> |
| | | <result property="pretaxcost" column="PretaxCost" /> |
| | | <result property="taxedcost" column="TaxedCost" /> |
| | | <result property="backflowlevel" column="backFlowLevel"/> |
| | | |
| | | </resultMap> |
| | | |
| | | <sql id="selectServiceFundVo"> |
| | | select ID, InfoID, DonorNo, DonorName, del_flag, create_by, create_time, update_by, update_time, UserNo, UserName, UnitName, UnitNo, UnitUserNo, PretaxCost, TaxedCost, Phone, AnnexBankCard, AnnexRegistForm, AmountRequested, ApplyType, PrepaidAmount, InvoiceCount, AttachCount, ManagerNo, ManagerName, DeptmentNo, DeptmentName, OPOchecker, FinVicePresident, BusVicePresident, OfficeDirector, FinanceDirector, FinanceChecher, TotalCost, ProcurementCost, ExpertCost, EthicsCost, MedicalCost, FamilyCost, AftercareCost, Remark, RecordStatus, uploadflag, uploadtime,FlowLevel from service_fund |
| | | select ID, |
| | | InfoID, |
| | | DonorNo, |
| | | DonorName, |
| | | del_flag, |
| | | create_by, |
| | | create_time, |
| | | update_by, |
| | | update_time, |
| | | UserNo, |
| | | UserName, |
| | | UnitName, |
| | | UnitNo, |
| | | UnitUserNo, |
| | | PretaxCost, |
| | | TaxedCost, |
| | | Phone, |
| | | AnnexBankCard, |
| | | AnnexRegistForm, |
| | | AmountRequested, |
| | | ApplyType, |
| | | PrepaidAmount, |
| | | InvoiceCount, |
| | | AttachCount, |
| | | ManagerNo, |
| | | ManagerName, |
| | | DeptmentNo, |
| | | DeptmentName, |
| | | OPOchecker, |
| | | FinVicePresident, |
| | | BusVicePresident, |
| | | OfficeDirector, |
| | | FinanceDirector, |
| | | FinanceChecher, |
| | | TotalCost, |
| | | ProcurementCost, |
| | | ExpertCost, |
| | | EthicsCost, |
| | | MedicalCost, |
| | | FamilyCost, |
| | | AftercareCost, |
| | | Remark, |
| | | RecordStatus, |
| | | uploadflag, |
| | | uploadtime, |
| | | backflowlevel, |
| | | FlowLevel |
| | | from service_fund |
| | | </sql> |
| | | |
| | | <select id="selectServiceFundList" parameterType="ServiceFund" resultMap="ServiceFundResult"> |
| | |
| | | <if test="userno != null and userno != ''"> and UserNo = #{userno}</if> |
| | | <if test="username != null and username != ''"> and UserName like concat('%', #{username}, '%')</if> |
| | | <if test="applytype != null and applytype != ''"> and ApplyType = #{applytype}</if> |
| | | <if test="deptmentname != null and deptmentname != ''"> and DeptmentName like concat('%', #{deptmentname}, '%')</if> |
| | | <if test="deptmentname != null and deptmentname != ''">and DeptmentName like concat('%', #{deptmentname}, |
| | | '%') |
| | | </if> |
| | | <if test="recordstatus != null"> and RecordStatus = #{recordstatus}</if> |
| | | <if test="uploadflag != null and uploadflag != ''"> and uploadflag = #{uploadflag}</if> |
| | | <if test="uploadtime != null "> and uploadtime = #{uploadtime}</if> |
| | |
| | | </select> |
| | | |
| | | <select id="getFundId" resultType="java.lang.Long"> |
| | | select max(ID) from service_fund |
| | | select max(ID) |
| | | from service_fund |
| | | where infoid = #{infoid} |
| | | </select> |
| | | <select id="selectVOList" resultType="com.ruoyi.project.domain.vo.FundVO"> |
| | |
| | | |
| | | </select> |
| | | |
| | | <select id="getListBypower" statementType="CALLABLE" resultType="com.ruoyi.project.domain.vo.SpFinancialExpensesFundOut"> |
| | | <select id="getListBypower" statementType="CALLABLE" |
| | | resultType="com.ruoyi.project.domain.vo.SpFinancialExpensesFundOut"> |
| | | call SP_FINANCIAL_EXPENSES(#{PAUSERNO,mode=IN,jdbcType=VARCHAR},#{PAFUNDTYPE,mode=IN,jdbcType=INTEGER},#{PAAPPLICANT,mode=IN,jdbcType=VARCHAR},#{PAAPPLICATIONBEGTIME,mode=IN,jdbcType=VARCHAR},#{PAAPPLICATIONENDTIME,mode=IN,jdbcType=VARCHAR},#{PADEPARTMENT,mode=IN,jdbcType=VARCHAR},#{CHECKFLAG,mode=IN,jdbcType=INTEGER},#{APPLYTYPE,mode=IN,jdbcType=INTEGER}) |
| | | </select> |
| | | |
| | |
| | | <if test="fileid != null and fileid != ''"> and fileid = #{fileid}</if> |
| | | </where> |
| | | </select> |
| | | |
| | | <update id="delfundsharedInfoById"> |
| | | UPDATE service_fund_shared |
| | | SET del_flag = 1 |
| | | WHERE ID = #{fundId} |
| | | and del_flag != 1 |
| | | </update> |
| | | </mapper> |
| | |
| | | where create_time like concat(#{startTime}, '%') and beneficiaryNo=#{beneficiaryNo} |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.project.mapper.ServiceReimbursementMapper"> |
| | | |
| | | <resultMap type="ServiceReimbursement" id="ServiceReimbursementResult"> |
| | | <resultMap type="com.ruoyi.project.domain.ServiceReimbursement" id="ServiceReimbursementResult"> |
| | | <result property="id" column="ID"/> |
| | | <result property="delFlag" column="del_flag"/> |
| | | <result property="createBy" column="create_by"/> |
| | |
| | | <result property="donorremark" column="donorremark"/> |
| | | <result property="donoramount" column="donoramount"/> |
| | | <result property="donorrelatives" column="donorrelatives"/> |
| | | <result property="backflowlevel" column="backFlowLevel"/> |
| | | </resultMap> |
| | | |
| | | <sql id="selectServiceReimbursementVo"> |
| | |
| | | donorbankcard, |
| | | donorremark, |
| | | donoramount, |
| | | donorrelatives |
| | | donorrelatives, |
| | | backFlowLevel |
| | | from service_reimbursement |
| | | </sql> |
| | | |
| | | <select id="selectServiceReimbursementList" parameterType="ServiceReimbursement" |
| | | <select id="selectServiceReimbursementList" parameterType="com.ruoyi.project.domain.ServiceReimbursement" |
| | | resultMap="ServiceReimbursementResult"> |
| | | <include refid="selectServiceReimbursementVo"/> |
| | | <where> |
| | |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.project.mapper.ServiceReimbursementSharedMapper"> |
| | | |
| | | <resultMap type="ServiceReimbursementShared" id="ServiceReimbursementSharedResult"> |
| | | <resultMap type="com.ruoyi.project.domain.ServiceReimbursementShared" id="ServiceReimbursementSharedResult"> |
| | | <result property="id" column="ID" /> |
| | | <result property="delFlag" column="del_flag" /> |
| | | <result property="createBy" column="create_by" /> |
| | |
| | | </resultMap> |
| | | |
| | | <sql id="selectServiceReimbursementSharedVo"> |
| | | select ID, del_flag, create_by, create_time, update_by, update_time, UserNo, UserName, Travelers, IDCardType, IDCardNo, Phone, DepositBank, BankCardNo, BranchBankName, AnnexBankCard, AnnexFiles, AmountRequested, PrepaidAmount, InvoiceCount, AttachCount, ManagerNo, ManagerName, DeptmentNo, DeptmentName, OPOchecker, FinVicePresident, BusVicePresident, OfficeDirector, FinanceDirector, FinanceChecher, InfoID, DonorNo, DonorName, Reason, remark, RecordStatus, uploadflag, uploadtime, totalAmount, bigStrMoney, FlowLevel, costtype, costtypename, oaid, oabdzt, filename, fileid,reimid ,donorbank,donorbankcard,donorremark, donoramount,donorrelatives from service_reimbursement_shared |
| | | select ID, |
| | | del_flag, |
| | | create_by, |
| | | create_time, |
| | | update_by, |
| | | update_time, |
| | | UserNo, |
| | | UserName, |
| | | Travelers, |
| | | IDCardType, |
| | | IDCardNo, |
| | | Phone, |
| | | DepositBank, |
| | | BankCardNo, |
| | | BranchBankName, |
| | | AnnexBankCard, |
| | | AnnexFiles, |
| | | AmountRequested, |
| | | PrepaidAmount, |
| | | InvoiceCount, |
| | | AttachCount, |
| | | ManagerNo, |
| | | ManagerName, |
| | | DeptmentNo, |
| | | DeptmentName, |
| | | OPOchecker, |
| | | FinVicePresident, |
| | | BusVicePresident, |
| | | OfficeDirector, |
| | | FinanceDirector, |
| | | FinanceChecher, |
| | | InfoID, |
| | | DonorNo, |
| | | DonorName, |
| | | Reason, |
| | | remark, |
| | | RecordStatus, |
| | | uploadflag, |
| | | uploadtime, |
| | | totalAmount, |
| | | bigStrMoney, |
| | | FlowLevel, |
| | | costtype, |
| | | costtypename, |
| | | oaid, |
| | | oabdzt, |
| | | filename, |
| | | fileid, |
| | | reimid, |
| | | donorbank, |
| | | donorbankcard, |
| | | donorremark, |
| | | donoramount, |
| | | donorrelatives |
| | | from service_reimbursement_shared |
| | | </sql> |
| | | |
| | | <select id="getRemShareInfoByRemId" resultType="com.ruoyi.project.domain.ServiceReimbursementShared" resultMap="ServiceReimbursementSharedResult"> |
| | | <select id="getRemShareInfoByRemId" resultType="com.ruoyi.project.domain.ServiceReimbursementShared" |
| | | resultMap="ServiceReimbursementSharedResult"> |
| | | <include refid="selectServiceReimbursementSharedVo"/> |
| | | where reimid = #{RemId} |
| | | where reimid = #{RemId} and del_flag!=1 |
| | | </select> |
| | | |
| | | <select id="selectServiceReimbursementSharedList" parameterType="ServiceReimbursementShared" resultMap="ServiceReimbursementSharedResult"> |
| | | <select id="selectServiceReimbursementSharedList" parameterType="com.ruoyi.project.domain.ServiceReimbursementShared" |
| | | resultMap="ServiceReimbursementSharedResult"> |
| | | <include refid="selectServiceReimbursementSharedVo"/> |
| | | <where> |
| | | <if test="userno != null and userno != ''"> and UserNo = #{userno}</if> |
| | |
| | | <if test="phone != null and phone != ''"> and Phone = #{phone}</if> |
| | | <if test="depositbank != null and depositbank != ''"> and DepositBank = #{depositbank}</if> |
| | | <if test="bankcardno != null and bankcardno != ''"> and BankCardNo = #{bankcardno}</if> |
| | | <if test="branchbankname != null and branchbankname != ''"> and BranchBankName like concat('%', #{branchbankname}, '%')</if> |
| | | <if test="branchbankname != null and branchbankname != ''">and BranchBankName like concat('%', |
| | | #{branchbankname}, '%') |
| | | </if> |
| | | <if test="annexbankcard != null and annexbankcard != ''"> and AnnexBankCard = #{annexbankcard}</if> |
| | | <if test="annexfiles != null and annexfiles != ''"> and AnnexFiles = #{annexfiles}</if> |
| | | <if test="amountrequested != null "> and AmountRequested = #{amountrequested}</if> |
| | |
| | | <if test="invoicecount != null "> and InvoiceCount = #{invoicecount}</if> |
| | | <if test="attachcount != null "> and AttachCount = #{attachcount}</if> |
| | | <if test="managerno != null and managerno != ''"> and ManagerNo = #{managerno}</if> |
| | | <if test="managername != null and managername != ''"> and ManagerName like concat('%', #{managername}, '%')</if> |
| | | <if test="managername != null and managername != ''">and ManagerName like concat('%', #{managername}, |
| | | '%') |
| | | </if> |
| | | <if test="deptmentno != null and deptmentno != ''"> and DeptmentNo = #{deptmentno}</if> |
| | | <if test="deptmentname != null and deptmentname != ''"> and DeptmentName like concat('%', #{deptmentname}, '%')</if> |
| | | <if test="deptmentname != null and deptmentname != ''">and DeptmentName like concat('%', #{deptmentname}, |
| | | '%') |
| | | </if> |
| | | <if test="opochecker != null and opochecker != ''"> and OPOchecker = #{opochecker}</if> |
| | | <if test="finvicepresident != null and finvicepresident != ''"> and FinVicePresident = #{finvicepresident}</if> |
| | | <if test="busvicepresident != null and busvicepresident != ''"> and BusVicePresident = #{busvicepresident}</if> |
| | | <if test="finvicepresident != null and finvicepresident != ''">and FinVicePresident = #{finvicepresident} |
| | | </if> |
| | | <if test="busvicepresident != null and busvicepresident != ''">and BusVicePresident = #{busvicepresident} |
| | | </if> |
| | | <if test="officedirector != null and officedirector != ''"> and OfficeDirector = #{officedirector}</if> |
| | | <if test="financedirector != null and financedirector != ''"> and FinanceDirector = #{financedirector}</if> |
| | | <if test="financechecher != null and financechecher != ''"> and FinanceChecher = #{financechecher}</if> |
| | |
| | | <if test="bigstrmoney != null and bigstrmoney != ''"> and bigStrMoney = #{bigstrmoney}</if> |
| | | <if test="flowlevel != null "> and FlowLevel = #{flowlevel}</if> |
| | | <if test="costtype != null and costtype != ''"> and costtype = #{costtype}</if> |
| | | <if test="costtypename != null and costtypename != ''"> and costtypename like concat('%', #{costtypename}, '%')</if> |
| | | <if test="costtypename != null and costtypename != ''">and costtypename like concat('%', #{costtypename}, |
| | | '%') |
| | | </if> |
| | | <if test="oaid != null and oaid != ''"> and oaid = #{oaid}</if> |
| | | <if test="oabdzt != null and oabdzt != ''"> and oabdzt = #{oabdzt}</if> |
| | | <if test="filename != null and filename != ''"> and filename like concat('%', #{filename}, '%')</if> |
| | |
| | | </where> |
| | | </select> |
| | | |
| | | <update id="delResharedInfoById"> |
| | | UPDATE service_reimbursement_shared |
| | | SET del_flag = 1 |
| | | WHERE id = #{id} |
| | | and del_flag != 1 |
| | | </update> |
| | | |
| | | </mapper> |
| | |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.ruoyi.project.mapper.ServiceReimbursementpayeeSharedMapper"> |
| | | |
| | | <resultMap type="ServiceReimbursementpayeeShared" id="ServiceReimbursementpayeeSharedResult"> |
| | | <resultMap type="com.ruoyi.project.domain.ServiceReimbursementpayeeShared" id="ServiceReimbursementpayeeSharedResult"> |
| | | <result property="id" column="id" /> |
| | | <result property="rpid" column="rpid" /> |
| | | <result property="rbid" column="rbid" /> |
| | |
| | | select id, rpid, rbid, orderno, persontype, personname, bankname, bankcardno, amount, phone, familyrelations, paiddate, remark, del_flag, create_by, create_time, update_by, update_time, uploadflag, uploadtime from service_reimbursementpayee_shared |
| | | </sql> |
| | | |
| | | <select id="selectServiceReimbursementpayeeSharedList" parameterType="ServiceReimbursementpayeeShared" resultMap="ServiceReimbursementpayeeSharedResult"> |
| | | <select id="selectServiceReimbursementpayeeSharedList" parameterType="com.ruoyi.project.domain.ServiceReimbursementpayeeShared" resultMap="ServiceReimbursementpayeeSharedResult"> |
| | | <include refid="selectServiceReimbursementpayeeSharedVo"/> |
| | | <where> |
| | | <if test="rpid != null "> and rpid = #{rpid}</if> |
| | |
| | | <groupId>com.ruoyi</groupId> |
| | | <artifactId>ruoyi-common</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.ruoyi</groupId> |
| | | <artifactId>ruoyi-project</artifactId> |
| | | <version>3.7.0</version> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | |
| | |
| | | package com.ruoyi.quartz.task; |
| | | |
| | | import com.ruoyi.project.domain.*; |
| | | import com.ruoyi.project.domain.vo.DingTalkReqVo; |
| | | import com.ruoyi.project.service.*; |
| | | import com.ruoyi.project.service.impl.DingTalkServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | |
| | | import java.lang.reflect.Array; |
| | | import java.util.*; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | |
| | | /** |
| | | * 宿¶ä»»å¡è°åº¦æµè¯ |
| | |
| | | * @author ruoyi |
| | | */ |
| | | @Component("ryTask") |
| | | public class RyTask |
| | | { |
| | | public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) |
| | | { |
| | | public class RyTask { |
| | | @Autowired |
| | | private DingTalkService dingTalkService; |
| | | |
| | | @Autowired |
| | | private IServiceReimbursementSharedService serviceReimbursementSharedService; |
| | | |
| | | @Autowired |
| | | private IServiceFundSharedService serviceFundSharedService; |
| | | |
| | | |
| | | @Autowired |
| | | private IServiceFundService serviceFundService; |
| | | |
| | | @Autowired |
| | | private IServiceReimbursementService serviceReimbursementService; |
| | | |
| | | @Autowired |
| | | private IServiceFundflowService fundflowService; |
| | | |
| | | public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { |
| | | System.out.println(StringUtils.format("æ§è¡å¤åæ¹æ³ï¼ å符串类å{}ï¼å¸å°ç±»å{}ï¼é¿æ´å{}ï¼æµ®ç¹å{}ï¼æ´å½¢{}", s, b, l, d, i)); |
| | | } |
| | | |
| | | public void ryParams(String params) |
| | | { |
| | | public void ryParams(String params) { |
| | | System.out.println("æ§è¡æåæ¹æ³ï¼" + params); |
| | | } |
| | | |
| | | public void ryNoParams() |
| | | { |
| | | public void ryNoParams() { |
| | | System.out.println("æ§è¡æ åæ¹æ³"); |
| | | } |
| | | |
| | | public void checkReportInfo() { |
| | | //æ¥åºææè¢«å»é¢éåçFundæ°æ® |
| | | List<ServiceFundShared> serviceFundShareds = serviceFundSharedService.queryFundShareList(); |
| | | for (ServiceFundShared serviceFundShared : serviceFundShareds) { |
| | | String[] split = serviceFundShared.getCxrjyj().split("&"); |
| | | String phone = serviceFundShared.getPhone(); |
| | | //å°å享éçè¯¥æ°æ®å é¤ |
| | | serviceFundSharedService.delfundsharedInfoById(serviceFundShared.getId()); |
| | | |
| | | ServiceFund serviceFund = new ServiceFund(); |
| | | serviceFund.setId(serviceFundShared.getSerfunid()); |
| | | List<ServiceFund> serviceFunds = serviceFundService.queryList(serviceFund); |
| | | ServiceFund serviceFund1 = serviceFunds.get(0); |
| | | serviceFund1.setFlowlevel(0); |
| | | serviceFund1.setDel_flag(0); |
| | | serviceFund1.setBackflowlevel(199); |
| | | serviceFundService.updateById(serviceFund1); |
| | | sendMeg(split,phone); |
| | | } |
| | | |
| | | |
| | | //æ¥åºææè¢«å»é¢éåçReimbursementæ°æ® |
| | | List<ServiceReimbursementShared> serviceReimbursementShareds = serviceReimbursementSharedService.queryReShareList(); |
| | | for (ServiceReimbursementShared serviceReimbursementShared : serviceReimbursementShareds) { |
| | | String phone = serviceReimbursementShared.getPhone(); |
| | | String[] split = serviceReimbursementShared.getCxrjyj().split("&"); |
| | | |
| | | //å°å享éçè¯¥æ°æ®å é¤ |
| | | serviceReimbursementSharedService.delResharedInfoById(serviceReimbursementShared.getId()); |
| | | |
| | | //å°Flowlevel 设置为0; |
| | | ServiceReimbursement serviceReimbursement = new ServiceReimbursement(); |
| | | serviceReimbursement.setId(serviceReimbursementShared.getReimid()); |
| | | List<ServiceReimbursement> serviceReimbursementList = serviceReimbursementService.queryList(serviceReimbursement); |
| | | ServiceReimbursement serviceReimbursement1 = serviceReimbursementList.get(0); |
| | | serviceReimbursement1.setFlowlevel(0L); |
| | | serviceReimbursement1.setDelFlag(0); |
| | | serviceReimbursement1.setBackflowlevel(199L); |
| | | serviceReimbursementService.updateById(serviceReimbursement1); |
| | | sendMeg(split,phone); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | public void sendMeg(String[] split,String phone) { |
| | | //è®°å½æä½è®°å½ |
| | | ServiceFundflow serviceFundflow = new ServiceFundflow(); |
| | | serviceFundflow.setCreateBy("admin"); |
| | | serviceFundflow.setCreateTime(new Date()); |
| | | serviceFundflow.setUpdateBy("admin"); |
| | | serviceFundflow.setUpdateTime(new Date()); |
| | | serviceFundflow.setCheckusername(split[0]); |
| | | serviceFundflow.setFlowcontent(split[2]); |
| | | serviceFundflow.setFlowconclusion(2); |
| | | serviceFundflow.setFundtype(2); |
| | | serviceFundflow.setFlowlevel(100); |
| | | fundflowService.save(serviceFundflow); |
| | | |
| | | ArrayList<ConcurrentHashMap<String, String>> contentList = new ArrayList<>(); |
| | | ConcurrentHashMap map = new ConcurrentHashMap(); |
| | | map.put("审æ¹äºº", split[0]); |
| | | map.put("å®¡æ¹æ¶é´", split[1]); |
| | | map.put("æè§", split[2]); |
| | | contentList.add(map); |
| | | DingTalkReqVo dingTalkReqVo = new DingTalkReqVo(); |
| | | dingTalkReqVo.setTitle("è´¢å¡ç³»ç»é©³åä¿¡æ¯"); |
| | | dingTalkReqVo.setNumber("13634195431"); |
| | | dingTalkReqVo.setContents(contentList); |
| | | dingTalkService.sendNotification(dingTalkReqVo); |
| | | } |
| | | |
| | | } |