
17 changed files with 1235 additions and 3 deletions
@ -0,0 +1,91 @@ |
|||
package com.yxt.anrui.oa.api; |
|||
|
|||
import com.yxt.anrui.oa.biz.adfeesreimbursableapply.AdFeesReimbursableApplyDetailVo; |
|||
import com.yxt.anrui.oa.biz.adfeesreimbursableapply.AdFeesReimbursableApplyDto; |
|||
import com.yxt.anrui.oa.biz.adfeesreimbursableapply.AdFeesReimbursableApplyService; |
|||
import com.yxt.anrui.oa.biz.adfeesreimbursableapply.AdFeesReimbursableApplyVo; |
|||
import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto; |
|||
import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery; |
|||
import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.cloud.openfeign.SpringQueryMap; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.validation.Valid; |
|||
|
|||
@RestController |
|||
@RequestMapping("v1/AdFeesReimbursableApply") |
|||
public class AdFeesReimbursableApplyRest { |
|||
|
|||
|
|||
@Autowired |
|||
private AdFeesReimbursableApplyService adFeesReimbursableApplyService; |
|||
|
|||
@ApiOperation("初始化(新增或修改)") |
|||
@GetMapping({"/getInit", "/getInit/{sid}"}) |
|||
public ResultBean<AdFeesReimbursableApplyVo> getInit( |
|||
@PathVariable(value = "sid", required = false) String sid, |
|||
@RequestParam(value = "userSid", required = false) String userSid, |
|||
@RequestParam(value = "orgPath", required = false) String orgPath) { |
|||
ResultBean<AdFeesReimbursableApplyVo> rb = ResultBean.fireFail(); |
|||
if (sid == null || sid.isEmpty()) { |
|||
// 执行新增初始化
|
|||
if (userSid == null || orgPath == null) { |
|||
return rb.setMsg("userSid和orgPath不能为空"); |
|||
} |
|||
return adFeesReimbursableApplyService.getSaveInit(userSid, orgPath); |
|||
} else { |
|||
// 执行修改初始化
|
|||
return adFeesReimbursableApplyService.getUpdateInit(sid); |
|||
} |
|||
} |
|||
|
|||
@ApiOperation("新增或修改") |
|||
@PostMapping("/save") |
|||
public ResultBean save(@RequestBody AdFeesReimbursableApplyDto dto) { |
|||
return adFeesReimbursableApplyService.saveOrUpdateDto(dto); |
|||
} |
|||
|
|||
@ApiOperation("根据sid批量删除") |
|||
@DeleteMapping("/delBySids") |
|||
public ResultBean delBySids(@RequestBody String[] sids) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
adFeesReimbursableApplyService.delAll(sids); |
|||
return rb.success(); |
|||
} |
|||
|
|||
@ApiOperation("详情") |
|||
@GetMapping("/details/{sid}") |
|||
ResultBean<AdFeesReimbursableApplyDetailVo> details(@PathVariable("sid") String sid |
|||
, @RequestParam(value = "application", required = false) String application) { |
|||
return adFeesReimbursableApplyService.details(sid,application); |
|||
} |
|||
|
|||
@ApiOperation("提交审批流程") |
|||
@PostMapping("/submit") |
|||
public ResultBean submit(@RequestBody @Valid AdFeesReimbursableApplyDto dto) { |
|||
return adFeesReimbursableApplyService.submit(dto); |
|||
} |
|||
|
|||
@ApiOperation(value = "办理(同意)") |
|||
@PutMapping("/complete") |
|||
public ResultBean complete(@Valid @RequestBody CompleteDto dto) { |
|||
return adFeesReimbursableApplyService.complete(dto); |
|||
} |
|||
|
|||
@ApiOperation(value = "驳回任务") |
|||
@PutMapping(value = "/reject") |
|||
public ResultBean reject(@Valid @RequestBody TaskDto dto) { |
|||
return adFeesReimbursableApplyService.reject(dto); |
|||
} |
|||
|
|||
@ApiOperation("获取流程操作标题") |
|||
@GetMapping("/getFlowOperateTitle") |
|||
@ResponseBody |
|||
ResultBean<String> getFlowOperateTitle(@SpringQueryMap NodeQuery query) { |
|||
return adFeesReimbursableApplyService.getFlowOperateTitle(query); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,89 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursableapply; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.yxt.common.core.domain.BaseEntity; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
@ApiModel(value = "行政类费用报销", description = "行政类费用报销") |
|||
@TableName("ad_fees_reimbursable_apply") |
|||
public class AdFeesReimbursableApply extends BaseEntity { |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
@ApiModelProperty("基础表单sid") |
|||
private String formSid; // 基础表单sid
|
|||
@ApiModelProperty("关联审批sid列表,英文逗号分隔") |
|||
private String linkFormSids; // 关联审批sid列表,英文逗号分隔
|
|||
|
|||
@ApiModelProperty("报销人sid") |
|||
private String reimbursementSid; // 报销人sid
|
|||
@ApiModelProperty("报销人") |
|||
private String reimbursement; // 报销人
|
|||
@ApiModelProperty("销售区域") |
|||
private String salesZone; // 销售区域
|
|||
@ApiModelProperty("报销人岗位") |
|||
private String post; // 报销人岗位
|
|||
@ApiModelProperty("是否乘坐交通工具特殊坐席(1是,0否)") |
|||
private String isSpecialSeatKey; // 是否乘坐交通工具特殊坐席(1是,0否)
|
|||
@ApiModelProperty("是否乘坐交通工具特殊坐席(1是,0否)") |
|||
private String isSpecialSeatValue; // 是否乘坐交通工具特殊坐席(1是,0否)
|
|||
@ApiModelProperty("出差出发日期及具体时间") |
|||
private Date departureTime; // 出差出发日期及具体时间
|
|||
@ApiModelProperty("出差返程到达日期及时间") |
|||
private Date returnTime; // 出差返程到达日期及时间
|
|||
|
|||
@ApiModelProperty("是否涉及高消费招待(1是,0否)") |
|||
private String isExpensiveKey; // 是否涉及高消费招待(1是,0否)
|
|||
@ApiModelProperty("是否涉及高消费招待(1是,0否)") |
|||
private String isExpensiveValue; // 是否涉及高消费招待(1是,0否)
|
|||
|
|||
@ApiModelProperty("是否超事前审批额度(1是,0否)") |
|||
private String isBeyondQuotaKey; // 是否超事前审批额度(1是,0否)
|
|||
@ApiModelProperty("是否超事前审批额度(1是,0否)") |
|||
private String isBeyondQuotaValue; // 是否超事前审批额度(1是,0否)
|
|||
|
|||
@ApiModelProperty("费用明细") |
|||
private String feeBreakdown; // 费用明细
|
|||
@ApiModelProperty("报销金额") |
|||
private BigDecimal reimbursedAmount; // 报销金额
|
|||
@ApiModelProperty("现金、打卡或平借款") |
|||
private String reimbursedWay; // 现金、打卡或平借款
|
|||
@ApiModelProperty("打卡请输入(姓名、卡号、开户行)") |
|||
private String reimbursedInfo; // 打卡请输入(姓名、卡号、开户行)
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
} |
@ -0,0 +1,61 @@ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursableapply; |
|||
|
|||
import com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableListDetailsVo; |
|||
import com.yxt.anrui.oa.biz.oaform.OaFormCommonVo; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @description: |
|||
* @author: dimengzhe |
|||
* @date: 2025/1/21 |
|||
**/ |
|||
@Data |
|||
public class AdFeesReimbursableApplyDetailVo extends OaFormCommonVo { |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
@ApiModelProperty("报销人") |
|||
private String reimbursement; // 报销人
|
|||
@ApiModelProperty("销售区域") |
|||
private String salesZone; // 销售区域
|
|||
@ApiModelProperty("报销人岗位") |
|||
private String post; // 报销人岗位
|
|||
|
|||
@ApiModelProperty("是否乘坐交通工具特殊坐席(1是,0否)") |
|||
private String isSpecialSeatValue; // 是否乘坐交通工具特殊坐席(1是,0否)
|
|||
@ApiModelProperty("出差出发日期及具体时间") |
|||
private String departureTime; // 出差出发日期及具体时间
|
|||
@ApiModelProperty("出差返程到达日期及时间") |
|||
private String returnTime; // 出差返程到达日期及时间
|
|||
|
|||
|
|||
@ApiModelProperty("是否涉及高消费招待(1是,0否)") |
|||
private String isExpensiveValue; // 是否涉及高消费招待(1是,0否)
|
|||
|
|||
|
|||
@ApiModelProperty("是否超事前审批额度(1是,0否)") |
|||
private String isBeyondQuotaValue; // 是否超事前审批额度(1是,0否)
|
|||
|
|||
@ApiModelProperty("费用明细") |
|||
private String feeBreakdown; // 费用明细
|
|||
@ApiModelProperty("报销金额") |
|||
private String reimbursedAmount; // 报销金额
|
|||
@ApiModelProperty("现金、打卡或平借款") |
|||
private String reimbursedWay; // 现金、打卡或平借款
|
|||
@ApiModelProperty("打卡请输入(姓名、卡号、开户行)") |
|||
private String reimbursedInfo; // 打卡请输入(姓名、卡号、开户行)
|
|||
@ApiModelProperty("图片") |
|||
private List<String> files = new ArrayList<>(); |
|||
@ApiModelProperty("附件") |
|||
private List<String> appes = new ArrayList<>(); |
|||
|
|||
|
|||
private List<AdFeesReimbursableListDetailsVo> list = new ArrayList<>(); |
|||
|
|||
} |
@ -0,0 +1,108 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursableapply; |
|||
|
|||
|
|||
import com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableDetailsDto; |
|||
import com.yxt.anrui.oa.biz.oaform.FormCommon; |
|||
import com.yxt.anrui.oa.biz.oaform.OaFormDto; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* Project: oa(驻外人员认定申请) <br/> |
|||
* File: AdExpatriatesApplyDto.java <br/> |
|||
* Class: com.yxt.anrui.oa.api.adexpatriatesapply.AdExpatriatesApplyDto <br/> |
|||
* Description: 驻外人员认定申请 数据传输对象. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2025-01-16 15:22:53 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@Data |
|||
@ApiModel(value = "行政类费用报销 数据传输对象", description = "行政类费用报销 数据传输对象") |
|||
public class AdFeesReimbursableApplyDto extends OaFormDto { |
|||
|
|||
|
|||
|
|||
|
|||
@ApiModelProperty("报销人sid") |
|||
private String reimbursementSid; // 报销人sid
|
|||
@ApiModelProperty("报销人") |
|||
private String reimbursement; // 报销人
|
|||
@ApiModelProperty("销售区域") |
|||
private String salesZone; // 销售区域
|
|||
@ApiModelProperty("报销人岗位") |
|||
private String post; // 报销人岗位
|
|||
|
|||
private FormCommon isSpecialSeatObj; |
|||
@ApiModelProperty("是否乘坐交通工具特殊坐席(1是,0否)") |
|||
private String isSpecialSeatKey; // 是否乘坐交通工具特殊坐席(1是,0否)
|
|||
@ApiModelProperty("是否乘坐交通工具特殊坐席(1是,0否)") |
|||
private String isSpecialSeatValue; // 是否乘坐交通工具特殊坐席(1是,0否)
|
|||
|
|||
@ApiModelProperty("出差出发日期及具体时间") |
|||
private String departureTime; // 出差出发日期及具体时间
|
|||
@ApiModelProperty("出差返程到达日期及时间") |
|||
private String returnTime; // 出差返程到达日期及时间
|
|||
|
|||
private FormCommon isExpensiveObj; |
|||
@ApiModelProperty("是否涉及高消费招待(1是,0否)") |
|||
private String isExpensiveKey; // 是否涉及高消费招待(1是,0否)
|
|||
@ApiModelProperty("是否涉及高消费招待(1是,0否)") |
|||
private String isExpensiveValue; // 是否涉及高消费招待(1是,0否)
|
|||
|
|||
private FormCommon isBeyondQuotaObj; |
|||
@ApiModelProperty("是否超事前审批额度(1是,0否)") |
|||
private String isBeyondQuotaKey; // 是否超事前审批额度(1是,0否)
|
|||
@ApiModelProperty("是否超事前审批额度(1是,0否)") |
|||
private String isBeyondQuotaValue; // 是否超事前审批额度(1是,0否)
|
|||
|
|||
@ApiModelProperty("费用明细") |
|||
private String feeBreakdown; // 费用明细
|
|||
@ApiModelProperty("报销金额") |
|||
private String reimbursedAmount; // 报销金额
|
|||
@ApiModelProperty("现金、打卡或平借款") |
|||
private String reimbursedWay; // 现金、打卡或平借款
|
|||
@ApiModelProperty("打卡请输入(姓名、卡号、开户行)") |
|||
private String reimbursedInfo; // 打卡请输入(姓名、卡号、开户行)
|
|||
|
|||
|
|||
@ApiModelProperty("图片") |
|||
private List<String> files = new ArrayList<>(); |
|||
@ApiModelProperty("附件") |
|||
private List<String> appes = new ArrayList<>(); |
|||
|
|||
private List<AdFeesReimbursableDetailsDto> list = new ArrayList<>(); |
|||
|
|||
} |
@ -0,0 +1,37 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursableapply; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface AdFeesReimbursableApplyMapper extends BaseMapper<AdFeesReimbursableApply> { |
|||
|
|||
int selectBySid(String join); |
|||
|
|||
AdFeesReimbursableApplyDetailVo details(String sid); |
|||
} |
@ -0,0 +1,57 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.yxt.anrui.oa.biz.adfeesreimbursableapply.AdFeesReimbursableApplyMapper"> |
|||
<!-- <where> ${ew.sqlSegment} </where>--> |
|||
<!-- ${ew.customSqlSegment} --> |
|||
|
|||
<select id="selectBySid" resultType="int"> |
|||
SELECT COUNT(*) |
|||
FROM ad_fees_reimbursable_apply ae |
|||
left join oa_form ofm on ae.formSid = ofm.sid |
|||
WHERE ofm.nodeState != '待提交' |
|||
and find_in_set(oa.sid, #{list}) |
|||
</select> |
|||
|
|||
<select id="details" resultMap="detailMap"> |
|||
select sid, |
|||
reimbursement, |
|||
salesZone, |
|||
post, |
|||
isSpecialSeatValue, |
|||
DATE_FORMAT(departureTime, '%Y-%m-%d %H:%i:%s') departureTime, |
|||
DATE_FORMAT(returnTime, '%Y-%m-%d %H:%i:%s') returnTime, |
|||
isExpensiveValue, |
|||
isBeyondQuotaValue, |
|||
feeBreakdown, |
|||
reimbursedAmount, |
|||
reimbursedWay, |
|||
reimbursedInfo |
|||
from ad_fees_reimbursable_apply |
|||
where sid = #{sid} |
|||
</select> |
|||
|
|||
<resultMap id="detailMap" type="com.yxt.anrui.oa.biz.adfeesreimbursableapply.AdFeesReimbursableApplyDetailVo"> |
|||
<result column="reimbursement" property="reimbursement"/> |
|||
<result column="salesZone" property="salesZone"/> |
|||
<result column="post" property="post"/> |
|||
<result column="isSpecialSeatValue" property="isSpecialSeatValue"/> |
|||
<result column="departureTime" property="departureTime"/> |
|||
<result column="returnTime" property="returnTime"/> |
|||
<result column="isExpensiveValue" property="isExpensiveValue"/> |
|||
<result column="isBeyondQuotaValue" property="isBeyondQuotaValue"/> |
|||
<result column="feeBreakdown" property="feeBreakdown"/> |
|||
<result column="reimbursedAmount" property="reimbursedAmount"/> |
|||
<result column="reimbursedWay" property="reimbursedWay"/> |
|||
<result column="reimbursedInfo" property="reimbursedInfo"/> |
|||
|
|||
<collection property="list" ofType="com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableListDetailsVo" |
|||
select="selectList" column="sid"> |
|||
</collection> |
|||
</resultMap> |
|||
|
|||
<select id="selectList" resultType="com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableListDetailsVo"> |
|||
select * |
|||
from ad_fees_reimbursable_details |
|||
where mainSid = #{sid} |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,352 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursableapply; |
|||
|
|||
import cn.hutool.core.bean.BeanUtil; |
|||
import com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableDetailsDto; |
|||
import com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableDetailsService; |
|||
import com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableDetailsVo; |
|||
import com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableListDetailsVo; |
|||
import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; |
|||
import com.yxt.anrui.oa.biz.oaform.*; |
|||
import com.yxt.anrui.oa.biz.oaform.flowable.*; |
|||
import com.yxt.anrui.oa.feign.file.OaFileEnum; |
|||
import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum; |
|||
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign; |
|||
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo; |
|||
import com.yxt.anrui.oa.feign.sysuser.SysUserFeign; |
|||
import com.yxt.anrui.oa.feign.sysuser.SysUserVo; |
|||
import com.yxt.common.base.service.MybatisBaseService; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.text.SimpleDateFormat; |
|||
import java.util.Collections; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@Service |
|||
public class AdFeesReimbursableApplyService extends MybatisBaseService<AdFeesReimbursableApplyMapper, AdFeesReimbursableApply> { |
|||
|
|||
@Autowired |
|||
private OaAppendixService oaAppendixService; |
|||
@Autowired |
|||
private OaFormService oaFormService; |
|||
@Autowired |
|||
private AdFeesReimbursableDetailsService adFeesReimbursableDetailsService; |
|||
@Autowired |
|||
private SysOrganizationFeign sysOrganizationFeign; |
|||
@Autowired |
|||
private SysUserFeign sysUserFeign; |
|||
|
|||
public ResultBean<AdFeesReimbursableApplyVo> getSaveInit(String userSid, String orgPath) { |
|||
ResultBean<AdFeesReimbursableApplyVo> rb = ResultBean.fireFail(); |
|||
AdFeesReimbursableApplyVo applyVo = new AdFeesReimbursableApplyVo(); |
|||
applyVo.setCreateBySid(userSid); |
|||
applyVo.setOrgSidPath(orgPath); |
|||
applyVo.setReimbursementSid(userSid); |
|||
SysUserVo userVo = sysUserFeign.fetchBySid(userSid).getData(); |
|||
if (null != userVo) { |
|||
applyVo.setReimbursement(userVo.getName()); |
|||
} |
|||
return rb.success().setData(applyVo); |
|||
} |
|||
|
|||
public ResultBean<AdFeesReimbursableApplyVo> getUpdateInit(String sid) { |
|||
ResultBean<AdFeesReimbursableApplyVo> rb = ResultBean.fireFail(); |
|||
AdFeesReimbursableApplyVo applyVo = new AdFeesReimbursableApplyVo(); |
|||
AdFeesReimbursableApply apply = fetchBySid(sid); |
|||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|||
if (apply == null) { |
|||
return rb.setMsg("该申请不存在"); |
|||
} |
|||
OaForm oaForm = oaFormService.fetchBySid(sid); |
|||
applyVo.setTaskId(oaForm.getTaskId()); |
|||
applyVo.setProcInsId(oaForm.getProcInstId()); |
|||
//根据部门sid获取orgPath并赋值
|
|||
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData(); |
|||
String orgSidPath = organizationVo.getOrgSidPath(); |
|||
applyVo.setOrgSidPath(orgSidPath); |
|||
applyVo.setCreateBySid(oaForm.getCreateBySid()); |
|||
BeanUtil.copyProperties(apply, applyVo); |
|||
if (null != apply.getDepartureTime()) { |
|||
applyVo.setDepartureTime(sdf.format(apply.getDepartureTime())); |
|||
} |
|||
if (null != apply.getReturnTime()) { |
|||
applyVo.setReturnTime(sdf.format(apply.getReturnTime())); |
|||
} |
|||
FormCommon obj1 = FormCommon.of(apply.getIsSpecialSeatKey(), apply.getIsSpecialSeatValue()); |
|||
applyVo.setIsSpecialSeatObj(obj1); |
|||
FormCommon obj2 = FormCommon.of(apply.getIsExpensiveKey(), apply.getIsExpensiveValue()); |
|||
applyVo.setIsExpensiveObj(obj2); |
|||
FormCommon obj3 = FormCommon.of(apply.getIsBeyondQuotaKey(), apply.getIsBeyondQuotaValue()); |
|||
applyVo.setIsBeyondQuotaObj(obj3); |
|||
List<AdFeesReimbursableDetailsVo> list = adFeesReimbursableDetailsService.getUpdateInit(sid); |
|||
list.removeAll(Collections.singleton(null)); |
|||
if (!list.isEmpty()) { |
|||
list.stream().forEach(details -> { |
|||
FormCommon objv1 = FormCommon.of(details.getBelongsDeptSid(), details.getBelongsDept()); |
|||
details.setBelongsDeptObj(objv1); |
|||
FormCommon objv2 = FormCommon.of(details.getFeesTypeKey(), details.getFeesTypeValue()); |
|||
details.setFeesTypeObj(objv2); |
|||
List<String> appes = oaAppendixService.selectByLinkSid(details.getSid(), "文件"); |
|||
applyVo.setAppes(appes); |
|||
}); |
|||
} |
|||
List<String> files = oaAppendixService.selectByLinkSid(sid, "图片"); |
|||
applyVo.setFiles(files); |
|||
List<String> appes = oaAppendixService.selectByLinkSid(sid, "文件"); |
|||
applyVo.setAppes(appes); |
|||
applyVo.setList(list); |
|||
applyVo.setSid(sid); |
|||
return rb.success().setData(applyVo); |
|||
} |
|||
|
|||
public ResultBean<String> saveOrUpdateDto(AdFeesReimbursableApplyDto dto) { |
|||
ResultBean<String> rb = ResultBean.fireFail(); |
|||
String sid = dto.getSid(); |
|||
if (StringUtils.isBlank(sid)) { |
|||
// 新建操作
|
|||
AdFeesReimbursableApply entity = new AdFeesReimbursableApply(); |
|||
BeanUtil.copyProperties(dto, entity, "sid"); |
|||
dto.setBillNo("XZLFYBXSQ"); |
|||
dto.setSid(entity.getSid()); |
|||
ResultBean<String> resultBean = oaFormService.saveOaForm(dto); |
|||
if (!resultBean.getSuccess()) { |
|||
return rb; |
|||
} |
|||
entity.setFormSid(resultBean.getData()); |
|||
baseMapper.insert(entity); |
|||
sid = entity.getSid(); |
|||
} else { |
|||
// 更新操作
|
|||
AdFeesReimbursableApply entity = fetchBySid(sid); |
|||
BeanUtil.copyProperties(dto, entity, "id", "sid"); |
|||
baseMapper.updateById(entity); |
|||
} |
|||
List<AdFeesReimbursableDetailsDto> list = dto.getList(); |
|||
if (!list.isEmpty()) { |
|||
adFeesReimbursableDetailsService.saveDetails(list, sid); |
|||
} |
|||
List<String> files = dto.getFiles(); |
|||
List<String> appes = dto.getAppes(); |
|||
// 处理附件
|
|||
saveFiles(sid, files, OaFileEnum.ADALLOCATEASSETAPPLY.getAttachType(), "图片"); |
|||
saveFiles(sid, appes, OaFileEnum.ADALLOCATEASSETAPPLY.getAttachType(), "文件"); |
|||
return rb.success().setData(sid); |
|||
} |
|||
|
|||
// 保存文件
|
|||
private void saveFiles(String sid, List<String> files, String attachType, String fileType) { |
|||
files.removeAll(Collections.singleton(null)); |
|||
oaAppendixService.saveFile(sid, files, attachType, fileType); |
|||
} |
|||
|
|||
public ResultBean delAll(String[] sids) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
//查询该sid中是否有流程不是待提交的
|
|||
int count = baseMapper.selectBySid(StringUtils.join(sids, ",")); |
|||
if (count > 0) { |
|||
return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败"); |
|||
} |
|||
delBySids(sids); |
|||
return rb.success(); |
|||
} |
|||
|
|||
public ResultBean<AdFeesReimbursableApplyDetailVo> details(String sid, String application) { |
|||
ResultBean<AdFeesReimbursableApplyDetailVo> rb = ResultBean.fireFail(); |
|||
AdFeesReimbursableApplyDetailVo applyDetailVo = baseMapper.details(sid); |
|||
if (applyDetailVo == null) { |
|||
return rb.setMsg("该申请不存在"); |
|||
} |
|||
List<String> files = oaAppendixService.selectByLinkSid(sid, "图片"); |
|||
List<String> appes = oaAppendixService.selectByLinkSid(sid, "文件"); |
|||
applyDetailVo.setFiles(files); |
|||
applyDetailVo.setAppes(appes); |
|||
List<AdFeesReimbursableListDetailsVo> list = applyDetailVo.getList(); |
|||
if (!list.isEmpty()) { |
|||
for (AdFeesReimbursableListDetailsVo l : list) { |
|||
List<String> listAppes = oaAppendixService.selectByLinkSid(l.getSid(), "文件"); |
|||
l.setAppesList(listAppes); |
|||
} |
|||
} |
|||
//基础字段赋值
|
|||
BeanUtil.copyProperties(oaFormService.getDetails(sid), applyDetailVo); |
|||
return rb.success().setData(applyDetailVo); |
|||
} |
|||
|
|||
/** |
|||
* 提交 |
|||
* |
|||
* @param dto |
|||
* @return |
|||
*/ |
|||
public ResultBean submit(AdFeesReimbursableApplyDto dto) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
ResultBean<String> stringResultBean = saveOrUpdateDto(dto); |
|||
if (!stringResultBean.getSuccess()) { |
|||
return rb.setMsg(stringResultBean.getData()); |
|||
} |
|||
String businessSid = stringResultBean.getData(); |
|||
|
|||
SubmitDto submitDto = new SubmitDto(); |
|||
submitDto.setUserSid(dto.getCreateBySid()); |
|||
submitDto.setBusinessSid(businessSid); |
|||
|
|||
Map<String, Object> formVariables = new HashMap<>(); |
|||
formVariables = getMap(formVariables, businessSid); |
|||
submitDto.setFormVariables(formVariables); |
|||
submitDto.setProcDefId(ProcDefEnum.HIHIREAPPLY.getProDefId()); |
|||
submitDto.setNextTaskId(dto.getTaskId()); |
|||
submitDto.setRule(OaFormRuleEnum.DIRECTLY_UNDER.getRule()); |
|||
return oaFormService.submit(submitDto); |
|||
} |
|||
|
|||
/** |
|||
* 办理(同意) |
|||
* |
|||
* @param dto |
|||
* @return |
|||
*/ |
|||
public ResultBean complete(CompleteDto dto) { |
|||
Map<String, Object> formVariables = dto.getFormVariables(); |
|||
formVariables = getMap(formVariables, dto.getBusinessSid()); |
|||
dto.setFormVariables(formVariables); |
|||
BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto(); |
|||
BeanUtil.copyProperties(dto, businessVariablesDto); |
|||
return oaFormService.complete(businessVariablesDto); |
|||
} |
|||
|
|||
/** |
|||
* 驳回 |
|||
* |
|||
* @param dto |
|||
* @return |
|||
*/ |
|||
public ResultBean reject(TaskDto dto) { |
|||
Map<String, Object> formVariables = dto.getFormVariables(); |
|||
formVariables = getMap(formVariables, dto.getBusinessSid()); |
|||
dto.setFormVariables(formVariables); |
|||
return oaFormService.reject(dto); |
|||
} |
|||
|
|||
public ResultBean<String> getFlowOperateTitle(NodeQuery query) { |
|||
// 默认失败返回
|
|||
ResultBean<String> rb = ResultBean.fireFail(); |
|||
|
|||
// 获取next值和formVariables
|
|||
int next = query.getNext(); |
|||
|
|||
// 获取并更新formVariables
|
|||
Map<String, Object> formVariables = getMap(query.getFormVariables(), query.getBusinessSid()); |
|||
query.setFormVariables(formVariables); |
|||
|
|||
// 校验next参数是否有效(只允许0或1)
|
|||
if (next != 0 && next != 1) { |
|||
return rb.setMsg("参数错误:next"); // 如果next不是0或1,返回错误信息
|
|||
} |
|||
|
|||
// 获取节点名称
|
|||
String data = getNodeName(query, next); |
|||
|
|||
// 如果data为null,表示未获取到有效的节点信息
|
|||
if (data == null) { |
|||
return rb.setMsg("没有获取到节点信息"); // 返回错误消息
|
|||
} |
|||
|
|||
// 返回成功的结果和获取到的节点名称
|
|||
return rb.success().setData(data); |
|||
} |
|||
|
|||
/** |
|||
* 网关参数组成 |
|||
* |
|||
* @param formVariables |
|||
* @param sid |
|||
* @return |
|||
*/ |
|||
public Map<String, Object> getMap(Map<String, Object> formVariables, String sid) { |
|||
Map<String, Object> appMap = new HashMap<>(); |
|||
appMap.put("sid", sid); |
|||
/*appMap.put("editUrl", "approval/#/pages/EditOnboradingApplyActivity?sid=" + sid); |
|||
appMap.put("detailUrl", "approval/#/pages/DetailOnboradingApplyActivity?sid=" + sid); |
|||
appMap.put("flowOperateUrl", "oa/v1/HrHireApply/getFlowOperateTitle"); |
|||
appMap.put("agreeUrl", "oa/v1/HrHireApply/complete"); |
|||
appMap.put("stopUrl", "oa/v1/oaform/breakProcess"); |
|||
appMap.put("rejectUrl", "oa/v1/HrHireApply/reject"); |
|||
appMap.put("recallUrl", "oa/v1/oaform/revokeProcess"); |
|||
appMap.put("signUrl", "oa/v1/oaform/delegate"); |
|||
appMap.put("transferUrl", "oa/v1/oaform/assignTask");*/ |
|||
appMap.put(OaFormUrlEnum.HRHIREAPPLY_EDIT.getType(), OaFormUrlEnum.HRHIREAPPLY_EDIT.getUrl() + "?sid=" + sid); |
|||
appMap.put(OaFormUrlEnum.HRHIREAPPLY_DETAIL.getType(), OaFormUrlEnum.HRHIREAPPLY_DETAIL.getUrl() + "?sid=" + sid); |
|||
appMap.put(OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getUrl()); |
|||
appMap.put(OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getUrl()); |
|||
appMap.put(OaFormUrlEnum.STOPURL.getType(), OaFormUrlEnum.STOPURL.getUrl()); |
|||
appMap.put(OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getType(), OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getUrl()); |
|||
appMap.put(OaFormUrlEnum.RECALLURL.getType(), OaFormUrlEnum.RECALLURL.getUrl()); |
|||
appMap.put(OaFormUrlEnum.SIGNURL.getType(), OaFormUrlEnum.SIGNURL.getUrl()); |
|||
appMap.put(OaFormUrlEnum.TRANSFERURL.getType(), OaFormUrlEnum.TRANSFERURL.getUrl()); |
|||
formVariables.put("app", appMap); |
|||
//根据组织查询是否是分公司
|
|||
OaForm oaForm = oaFormService.fetchBySid(sid); |
|||
AdFeesReimbursableApply adExpatriatesApply = fetchBySid(sid); |
|||
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(oaForm.getUseOrgSid()).getData(); |
|||
//是否是分公司
|
|||
formVariables.put("isTrue", sysOrganization.getIsDept() == 0); |
|||
return formVariables; |
|||
} |
|||
|
|||
/** |
|||
* 根据next的值获取前一个节点或下一个节点的名称。 |
|||
* |
|||
* @param query 包含查询所需参数的NodeQuery对象 |
|||
* @param next 参数,0表示上一环节,1表示下一环节 |
|||
* @return 节点名称,如果失败则返回null |
|||
*/ |
|||
private String getNodeName(NodeQuery query, int next) { |
|||
// 根据next值选择相应的服务方法获取节点信息
|
|||
ResultBean<List<NodeVo>> resultBean = (next == 0) |
|||
? oaFormService.getPreviousNodesForReject(query) // 获取上一环节的节点
|
|||
: oaFormService.getNextNodesForSubmit(query); // 获取下一环节的节点
|
|||
// 如果服务调用成功
|
|||
if (resultBean.getSuccess()) { |
|||
// 清除结果列表中的null值,避免空节点
|
|||
resultBean.getData().removeAll(Collections.singleton(null)); |
|||
// 如果结果列表非空,返回第一个节点的名称
|
|||
if (!resultBean.getData().isEmpty()) { |
|||
return resultBean.getData().get(0).getName(); |
|||
} |
|||
} else { |
|||
// 如果服务调用失败,返回null
|
|||
return null; |
|||
} |
|||
// 如果结果为空,返回null
|
|||
return null; |
|||
} |
|||
} |
@ -0,0 +1,98 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursableapply; |
|||
|
|||
import com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableDetailsVo; |
|||
import com.yxt.anrui.oa.biz.oaform.FormCommon; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class AdFeesReimbursableApplyVo { |
|||
|
|||
private String sid; |
|||
/* private String userSid; |
|||
private String orgPath;*/ |
|||
private String orgSidPath; |
|||
private String createBySid; |
|||
|
|||
@ApiModelProperty("报销人sid") |
|||
private String reimbursementSid; // 报销人sid
|
|||
@ApiModelProperty("报销人") |
|||
private String reimbursement; // 报销人
|
|||
@ApiModelProperty("销售区域") |
|||
private String salesZone; // 销售区域
|
|||
@ApiModelProperty("报销人岗位") |
|||
private String post; // 报销人岗位
|
|||
|
|||
private FormCommon isSpecialSeatObj; |
|||
@ApiModelProperty("是否乘坐交通工具特殊坐席(1是,0否)") |
|||
private String isSpecialSeatKey; // 是否乘坐交通工具特殊坐席(1是,0否)
|
|||
@ApiModelProperty("是否乘坐交通工具特殊坐席(1是,0否)") |
|||
private String isSpecialSeatValue; // 是否乘坐交通工具特殊坐席(1是,0否)
|
|||
|
|||
@ApiModelProperty("出差出发日期及具体时间") |
|||
private String departureTime; // 出差出发日期及具体时间
|
|||
@ApiModelProperty("出差返程到达日期及时间") |
|||
private String returnTime; // 出差返程到达日期及时间
|
|||
|
|||
private FormCommon isExpensiveObj; |
|||
@ApiModelProperty("是否涉及高消费招待(1是,0否)") |
|||
private String isExpensiveKey; // 是否涉及高消费招待(1是,0否)
|
|||
@ApiModelProperty("是否涉及高消费招待(1是,0否)") |
|||
private String isExpensiveValue; // 是否涉及高消费招待(1是,0否)
|
|||
|
|||
private FormCommon isBeyondQuotaObj; |
|||
@ApiModelProperty("是否超事前审批额度(1是,0否)") |
|||
private String isBeyondQuotaKey; // 是否超事前审批额度(1是,0否)
|
|||
@ApiModelProperty("是否超事前审批额度(1是,0否)") |
|||
private String isBeyondQuotaValue; // 是否超事前审批额度(1是,0否)
|
|||
|
|||
@ApiModelProperty("费用明细") |
|||
private String feeBreakdown; // 费用明细
|
|||
@ApiModelProperty("报销金额") |
|||
private String reimbursedAmount; // 报销金额
|
|||
@ApiModelProperty("现金、打卡或平借款") |
|||
private String reimbursedWay; // 现金、打卡或平借款
|
|||
@ApiModelProperty("打卡请输入(姓名、卡号、开户行)") |
|||
private String reimbursedInfo; // 打卡请输入(姓名、卡号、开户行)
|
|||
|
|||
|
|||
@ApiModelProperty("图片") |
|||
private List<String> files = new ArrayList<>(); |
|||
@ApiModelProperty("附件") |
|||
private List<String> appes = new ArrayList<>(); |
|||
|
|||
private List<AdFeesReimbursableDetailsVo> list = new ArrayList<>(); |
|||
|
|||
private String taskId; |
|||
@ApiModelProperty("流程实例id") |
|||
private String procInsId; |
|||
|
|||
} |
@ -0,0 +1,57 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursabledetails; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.yxt.common.core.domain.BaseEntity; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
|
|||
@Data |
|||
@ApiModel(value = "行政类费用报销列表", description = "行政类费用报销") |
|||
@TableName("ad_fees_reimbursable_details") |
|||
public class AdFeesReimbursableDetails extends BaseEntity { |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
@ApiModelProperty("申请sid") |
|||
private String mainSid; // 申请sid
|
|||
@ApiModelProperty("所属部门") |
|||
private String belongsDeptSid; // 所属部门
|
|||
@ApiModelProperty("所属部门") |
|||
private String belongsDept; // 所属部门
|
|||
|
|||
@ApiModelProperty("费用类别") |
|||
private String feesTypeKey; // 费用类别
|
|||
@ApiModelProperty("费用类别") |
|||
private String feesTypeValue; // 费用类别
|
|||
|
|||
@ApiModelProperty("金额") |
|||
private BigDecimal amount; // 金额
|
|||
|
|||
} |
@ -0,0 +1,62 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursabledetails; |
|||
|
|||
|
|||
import com.yxt.anrui.oa.biz.oaform.FormCommon; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
|
|||
@Data |
|||
@ApiModel(value = "行政类费用报销列表 视图数据对象", description = "行政类费用报销列表 视图数据对象") |
|||
public class AdFeesReimbursableDetailsDto { |
|||
|
|||
private FormCommon belongsDeptObj; |
|||
@ApiModelProperty("所属部门") |
|||
private String belongsDeptSid; // 所属部门
|
|||
@ApiModelProperty("所属部门") |
|||
private String belongsDept; // 所属部门
|
|||
|
|||
private FormCommon feesTypeObj; |
|||
@ApiModelProperty("费用类别") |
|||
private String feesTypeKey; // 费用类别
|
|||
@ApiModelProperty("费用类别") |
|||
private String feesTypeValue; // 费用类别
|
|||
|
|||
@ApiModelProperty("金额") |
|||
private String amount; // 金额
|
|||
private String remarks; // 备注
|
|||
@ApiModelProperty("附件") |
|||
private List<String> appesList = new ArrayList<>(); |
|||
|
|||
|
|||
|
|||
} |
@ -0,0 +1,42 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursabledetails; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Select; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Mapper |
|||
public interface AdFeesReimbursableDetailsMapper extends BaseMapper<AdFeesReimbursableDetails> { |
|||
|
|||
@Select("select * from ad_fees_reimbursable_details where mainSid = #{mainSid}") |
|||
List<AdFeesReimbursableDetails> selectByMainSid(String mainSid); |
|||
|
|||
@Select("select * from ad_fees_reimbursable_details where mainSid = #{mainSid}") |
|||
List<AdFeesReimbursableDetailsVo> getUpdateInit(String mainSid); |
|||
} |
@ -0,0 +1,5 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.yxt.anrui.oa.biz.adfeesreimbursabledetails.AdFeesReimbursableDetailsMapper"> |
|||
|
|||
</mapper> |
@ -0,0 +1,78 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursabledetails; |
|||
|
|||
import cn.hutool.core.bean.BeanUtil; |
|||
import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; |
|||
import com.yxt.anrui.oa.feign.file.OaFileEnum; |
|||
import com.yxt.common.base.service.MybatisBaseService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.Collections; |
|||
import java.util.List; |
|||
|
|||
@Service |
|||
public class AdFeesReimbursableDetailsService extends MybatisBaseService<AdFeesReimbursableDetailsMapper, AdFeesReimbursableDetails> { |
|||
|
|||
@Autowired |
|||
private OaAppendixService oaAppendixService; |
|||
|
|||
public void saveDetails(List<AdFeesReimbursableDetailsDto> list, String sid) { |
|||
//根据sid查询明细并删除
|
|||
List<AdFeesReimbursableDetails> list2 = baseMapper.selectByMainSid(sid); |
|||
list2.removeAll(Collections.singleton(null)); |
|||
if (!list2.isEmpty()) { |
|||
list2.stream().forEach(v -> { |
|||
deleteBySid(v.getSid()); |
|||
oaAppendixService.deleteByLinkSid(v.getSid(),"文件"); |
|||
}); |
|||
} |
|||
list.removeAll(Collections.singleton(null)); |
|||
if (!list.isEmpty()) { |
|||
list.stream().forEach(details -> { |
|||
AdFeesReimbursableDetails entity = new AdFeesReimbursableDetails(); |
|||
BeanUtil.copyProperties(details, entity); |
|||
entity.setMainSid(sid); |
|||
baseMapper.insert(entity); |
|||
List<String> appes = details.getAppesList(); |
|||
if (!appes.isEmpty()) { |
|||
saveFiles(entity.getSid(), appes, OaFileEnum.ADFEESREIMBURSABLEAPPLY.getAttachType(), "文件"); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
|
|||
public List<AdFeesReimbursableDetailsVo> getUpdateInit(String mainSid) { |
|||
return baseMapper.getUpdateInit(mainSid); |
|||
} |
|||
|
|||
// 保存文件
|
|||
private void saveFiles(String sid, List<String> files, String attachType, String fileType) { |
|||
files.removeAll(Collections.singleton(null)); |
|||
oaAppendixService.saveFile(sid, files, attachType, fileType); |
|||
} |
|||
} |
@ -0,0 +1,33 @@ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursabledetails; |
|||
|
|||
import com.yxt.anrui.oa.biz.oaform.FormCommon; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class AdFeesReimbursableDetailsVo { |
|||
|
|||
private String sid; |
|||
|
|||
private FormCommon belongsDeptObj; |
|||
@ApiModelProperty("所属部门") |
|||
private String belongsDeptSid; // 所属部门
|
|||
@ApiModelProperty("所属部门") |
|||
private String belongsDept; // 所属部门
|
|||
|
|||
private FormCommon feesTypeObj; |
|||
@ApiModelProperty("费用类别") |
|||
private String feesTypeKey; // 费用类别
|
|||
@ApiModelProperty("费用类别") |
|||
private String feesTypeValue; // 费用类别
|
|||
|
|||
@ApiModelProperty("金额") |
|||
private String amount; // 金额
|
|||
@ApiModelProperty("附件") |
|||
private List<String> appesList = new ArrayList<>(); |
|||
private String remarks; // 备注
|
|||
|
|||
} |
@ -0,0 +1,57 @@ |
|||
/********************************************************* |
|||
********************************************************* |
|||
******************** ******************* |
|||
************* ************ |
|||
******* _oo0oo_ ******* |
|||
*** o8888888o *** |
|||
* 88" . "88 * |
|||
* (| -_- |) * |
|||
* 0\ = /0 * |
|||
* ___/`---'\___ * |
|||
* .' \\| |// '. *
|
|||
* / \\||| : |||// \ *
|
|||
* / _||||| -:- |||||- \ * |
|||
* | | \\\ - /// | | *
|
|||
* | \_| ''\---/'' |_/ | * |
|||
* \ .-\__ '-' ___/-. / * |
|||
* ___'. .' /--.--\ `. .'___ * |
|||
* ."" '< `.___\_<|>_/___.' >' "". * |
|||
* | | : `- \`.;`\ _ /`;.`/ - ` : | | * |
|||
* \ \ `_. \_ __\ /__ _/ .-` / / * |
|||
* =====`-.____`.___ \_____/___.-`___.-'===== * |
|||
* `=---=' * |
|||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * |
|||
*********__佛祖保佑__永无BUG__验收通过__钞票多多__********* |
|||
*********************************************************/ |
|||
package com.yxt.anrui.oa.biz.adfeesreimbursabledetails; |
|||
|
|||
|
|||
import com.yxt.common.core.vo.Vo; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
|
|||
@Data |
|||
@ApiModel(value = "行政类费用报销列表 视图数据对象", description = "行政类费用报销列表 视图数据对象") |
|||
public class AdFeesReimbursableListDetailsVo implements Vo { |
|||
|
|||
private String sid; |
|||
|
|||
|
|||
|
|||
|
|||
@ApiModelProperty("所属部门") |
|||
private String belongsDept; // 所属部门
|
|||
@ApiModelProperty("费用类别") |
|||
private String feesTypeValue; // 费用类别
|
|||
@ApiModelProperty("金额") |
|||
private String amount; // 金额
|
|||
@ApiModelProperty("附件") |
|||
private List<String> appesList = new ArrayList<>(); |
|||
private String remarks; // 备注
|
|||
|
|||
} |
Loading…
Reference in new issue