备用金、报销逻辑修改
This commit is contained in:
furongxin 2024-03-24 18:51:10 +08:00
parent cdb3fe978b
commit ee28419e4e
18 changed files with 210 additions and 28 deletions

View File

@ -36,7 +36,6 @@ public class BpmOAContractController {
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建请求申请") @Operation(summary = "创建请求申请")
public CommonResult<Long> createContract(@Valid @RequestBody BpmOAContractCreateReqVO createReqVO) { public CommonResult<Long> createContract(@Valid @RequestBody BpmOAContractCreateReqVO createReqVO) {
return success(contractService.createContract(getLoginUserId(), createReqVO)); return success(contractService.createContract(getLoginUserId(), createReqVO));
} }

View File

@ -60,4 +60,15 @@ public class BpmOAImprestController {
return success(BpmOAImprestConvert.INSTANCE.convert(imprest)); return success(BpmOAImprestConvert.INSTANCE.convert(imprest));
} }
@GetMapping("/getProcessInstanceId")
@Operation(summary = "获得备用金表单")
@Parameter(name = "reimbursementId", description = "编号", required = true, example = "1024")
public CommonResult<BpmOAImprestRespVO> getImprestByReimbursementId(@RequestParam("reimbursementId") Long reimbursementId) {
//根据user 查询审批通过并且未报销得表单
BpmOAImprestDO imprest = imprestService.getImprestByReimbursementId(reimbursementId);
return success(BpmOAImprestConvert.INSTANCE.convert(imprest));
}
} }

View File

@ -6,6 +6,9 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.shiftjobs.BpmOAShiftjo
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAShiftjobsConvert; import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAShiftjobsConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAShiftjobsDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAShiftjobsDO;
import cn.iocoder.yudao.module.bpm.service.oa.BpmOAShiftjobsService; import cn.iocoder.yudao.module.bpm.service.oa.BpmOAShiftjobsService;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.PostApi;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -33,6 +36,15 @@ public class BpmOAShiftjobsController {
@Resource @Resource
private BpmOAShiftjobsService shiftjobsService; private BpmOAShiftjobsService shiftjobsService;
@Resource
private DeptApi deptApi;
@Resource
private AdminUserApi userApi;
@Resource
private PostApi postApi;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建请求申请") @Operation(summary = "创建请求申请")
public CommonResult<Long> createShiftjobs(@Valid @RequestBody BpmOAShiftjobsCreateReqVO createReqVO) { public CommonResult<Long> createShiftjobs(@Valid @RequestBody BpmOAShiftjobsCreateReqVO createReqVO) {
@ -47,6 +59,22 @@ public class BpmOAShiftjobsController {
BpmOAShiftjobsDO shiftjobs = shiftjobsService.getShiftjobs(id); BpmOAShiftjobsDO shiftjobs = shiftjobsService.getShiftjobs(id);
return success(BpmOAShiftjobsConvert.INSTANCE.convert(shiftjobs)); BpmOAShiftjobsRespVO bpmOAShiftjobsRespVO = BpmOAShiftjobsConvert.INSTANCE.convert(shiftjobs);
//设置原部门名称
bpmOAShiftjobsRespVO.setOldDeptName(deptApi.getDept(shiftjobs.getOldDeptId()).getCheckedData().getName());
//设置原岗位名称
bpmOAShiftjobsRespVO.setOldPostName(postApi.getPost(shiftjobs.getOldPostId()).getCheckedData().getName());
//设置原负责人昵称
bpmOAShiftjobsRespVO.setOldParentName(userApi.getUser(shiftjobs.getOldParentId()).getCheckedData().getNickname());
//设置新部门名称
bpmOAShiftjobsRespVO.setNewDeptName(deptApi.getDept(shiftjobs.getNewDeptId()).getCheckedData().getName());
//设置新岗位名称
bpmOAShiftjobsRespVO.setNewPostName(postApi.getPost(shiftjobs.getNewPostId()).getCheckedData().getName());
//设置新负责人昵称
bpmOAShiftjobsRespVO.setNewParentName(userApi.getUser(shiftjobs.getNewParentId()).getCheckedData().getNickname());
return success(bpmOAShiftjobsRespVO);
} }
} }

View File

@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.contract;
import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -20,9 +18,6 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
* @author 符溶馨 * @author 符溶馨
*/ */
@Schema(description = "管理后台 - 合同审批创建 Request VO") @Schema(description = "管理后台 - 合同审批创建 Request VO")
@Data
@EqualsAndHashCode()
@ToString(callSuper = true)
public class BpmOAContractCreateReqVO { public class BpmOAContractCreateReqVO {
@Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED)
@ -52,4 +47,82 @@ public class BpmOAContractCreateReqVO {
@Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED)
private List<UploadUserFile> fileItems; private List<UploadUserFile> fileItems;
public BpmOAContractCreateReqVO() {
}
public BpmOAContractCreateReqVO(String contractName, String contractNumber, LocalDate signingDate, String mCompanyName, String mHeadName, String oCompanyName, String oHeadName, List<UploadUserFile> fileItems) {
this.contractName = contractName;
this.contractNumber = contractNumber;
this.signingDate = signingDate;
this.mCompanyName = mCompanyName;
this.mHeadName = mHeadName;
this.oCompanyName = oCompanyName;
this.oHeadName = oHeadName;
this.fileItems = fileItems;
}
public String getContractName() {
return contractName;
}
public void setContractName(String contractName) {
this.contractName = contractName;
}
public String getContractNumber() {
return contractNumber;
}
public void setContractNumber(String contractNumber) {
this.contractNumber = contractNumber;
}
public LocalDate getSigningDate() {
return signingDate;
}
public void setSigningDate(LocalDate signingDate) {
this.signingDate = signingDate;
}
public String getmCompanyName() {
return mCompanyName;
}
public void setmCompanyName(String mCompanyName) {
this.mCompanyName = mCompanyName;
}
public String getmHeadName() {
return mHeadName;
}
public void setmHeadName(String mHeadName) {
this.mHeadName = mHeadName;
}
public String getoCompanyName() {
return oCompanyName;
}
public void setoCompanyName(String oCompanyName) {
this.oCompanyName = oCompanyName;
}
public String getoHeadName() {
return oHeadName;
}
public void setoHeadName(String oHeadName) {
this.oHeadName = oHeadName;
}
public List<UploadUserFile> getFileItems() {
return fileItems;
}
public void setFileItems(List<UploadUserFile> fileItems) {
this.fileItems = fileItems;
}
} }

View File

@ -41,6 +41,9 @@ public class BpmOAImprestRespVO extends BpmOABaseRespVO {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate date; private LocalDate date;
@Schema(description = "报销流程编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private Integer reimbursementId;
@Schema(description = "报销状态", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "报销状态", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "报销状态不能为空") @NotNull(message = "报销状态不能为空")
private Integer status; private Integer status;

View File

@ -27,8 +27,11 @@ public class BpmOAReimbursementCreateReqVO {
@NotNull(message = "报销总金额中文大写不能为空") @NotNull(message = "报销总金额中文大写不能为空")
private String totalMoneyChinese ; private String totalMoneyChinese ;
@Schema(description = "报销类型", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "报销类型不能为空")
private BigDecimal reimbursementType ;
@Schema(description = "备用金差额", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "备用金差额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@NotNull(message = "备用金差额不能为空")
private BigDecimal difference ; private BigDecimal difference ;
@Schema(description = "报销发票总数", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "报销发票总数", requiredMode = Schema.RequiredMode.REQUIRED)

View File

@ -28,8 +28,11 @@ public class BpmOAReimbursementRespVO extends BpmOABaseRespVO {
@NotNull(message = "报销总金额中文大写不能为空") @NotNull(message = "报销总金额中文大写不能为空")
private String totalMoneyChinese ; private String totalMoneyChinese ;
@Schema(description = "报销类型", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "报销类型不能为空")
private BigDecimal reimbursementType ;
@Schema(description = "备用金差额", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "备用金差额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@NotNull(message = "备用金差额不能为空")
private BigDecimal difference ; private BigDecimal difference ;
@Schema(description = "报销发票总数", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "报销发票总数", requiredMode = Schema.RequiredMode.REQUIRED)

View File

@ -23,25 +23,25 @@ public class BpmOAShiftjobsRespVO extends BpmOABaseRespVO {
@NotNull(message = "调岗类型不能为空") @NotNull(message = "调岗类型不能为空")
private Integer type; private Integer type;
@Schema(description = "原部门编号", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "原部门名称", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "原部门不能为空") @NotNull(message = "原部门不能为空")
private Long oldDeptId; private String oldDeptName;
@Schema(description = "原上级领导编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "原上级领导昵称", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private Long oldParentId; private String oldParentName;
@Schema(description = "原岗位编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "原岗位名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private Long oldPostId; private String oldPostName;
@Schema(description = "新部门编号", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "新部门名臣", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "新部门不能为空") @NotNull(message = "新部门不能为空")
private Long newDeptId; private String newDeptName;
@Schema(description = "新上级领导编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "新上级领导昵称", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private Long newParentId; private String newParentName;
@Schema(description = "新岗位编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "新岗位名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private Long newPostId; private String newPostName;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private String notes; private String notes;

View File

@ -21,7 +21,7 @@ import java.util.List;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
@Builder //@Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class BpmOAContractDO extends BaseDO { public class BpmOAContractDO extends BaseDO {

View File

@ -69,6 +69,11 @@ public class BpmOAImprestDO extends BaseDO {
*/ */
private LocalDate date; private LocalDate date;
/**
* 报销流程业务编号
*/
private Long reimbursementId;
/** /**
* 申请的结果 * 申请的结果
* *

View File

@ -28,6 +28,15 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
public class BpmOAReimbursementDO extends BaseDO { public class BpmOAReimbursementDO extends BaseDO {
/**
* 1: 自费
*/
public static final Integer EXPENSE_TYPE = 1;
/**
* 2: 备用金
*/
public static final Integer IMPREST_TYPE = 2;
/** /**
* 请假表单主键 * 请假表单主键
*/ */
@ -55,6 +64,11 @@ public class BpmOAReimbursementDO extends BaseDO {
*/ */
private String totalMoneyChinese; private String totalMoneyChinese;
/**
* 报销类型
*/
private Integer reimbursementType;
/** /**
* 备用差额 * 备用差额
*/ */

View File

@ -18,7 +18,7 @@ public interface BpmOAImprestMapper extends BaseMapperX<BpmOAImprestDO> {
default BpmOAImprestDO selectByUserId(Long userId, Integer status){ default BpmOAImprestDO selectByUserId(Long userId, Integer status){
return selectOne(new LambdaQueryWrapperX<BpmOAImprestDO>().eq(BpmOAImprestDO::getUserId, userId) return selectOne(new LambdaQueryWrapperX<BpmOAImprestDO>().eq(BpmOAImprestDO::getUserId, userId)
.eq(BpmOAImprestDO::getResult, BpmProcessInstanceResultEnum.PROCESS.getResult()) .eq(BpmOAImprestDO::getResult, BpmProcessInstanceResultEnum.APPROVE.getResult())
.eq(BpmOAImprestDO::getStatus, status)); .eq(BpmOAImprestDO::getStatus, status));
} }
} }

View File

@ -45,4 +45,12 @@ public interface BpmOAImprestService {
* @return 备用金申请 * @return 备用金申请
*/ */
BpmOAImprestDO getImprestByUserId(Long userId); BpmOAImprestDO getImprestByUserId(Long userId);
/**
* 获得备用金表单
*
* @param reimbursementId 编号
* @return 备用金申请
*/
BpmOAImprestDO getImprestByReimbursementId(Long reimbursementId);
} }

View File

@ -91,4 +91,11 @@ public class BpmOAImprestServiceImpl extends BpmOABaseService implements BpmOAIm
//根据user 查询审批通过并且未报销得表单 //根据user 查询审批通过并且未报销得表单
return imprestMapper.selectByUserId(userId, BpmOAImprestDO.FLAG_FALSE); return imprestMapper.selectByUserId(userId, BpmOAImprestDO.FLAG_FALSE);
} }
@Override
public BpmOAImprestDO getImprestByReimbursementId(Long reimbursementId) {
//根据报销业务编号获取备用金详情
return imprestMapper.selectOne(BpmOAImprestDO::getReimbursementId, reimbursementId);
}
} }

View File

@ -72,10 +72,10 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B
// 将工作流的编号更新到 OA 报销表单中 // 将工作流的编号更新到 OA 报销表单中
reimbursementMapper.updateById(new BpmOAReimbursementDO().setId(reimbursement.getId()).setProcessInstanceId(processInstanceId)); reimbursementMapper.updateById(new BpmOAReimbursementDO().setId(reimbursement.getId()).setProcessInstanceId(processInstanceId));
//如果是备用金报销则更新备用金流程status //如果是备用金报销则更新备用金流程status,并存入当前报销流程ID
if (createReqVO.getDifference() != null) { if (createReqVO.getDifference() != null) {
BpmOAImprestDO bpmOAImprestDO = bpmOAImprestService.getImprestByUserId(userId); BpmOAImprestDO bpmOAImprestDO = bpmOAImprestService.getImprestByUserId(userId);
bpmOAImprestMapper.updateById(new BpmOAImprestDO().setId(bpmOAImprestDO.getId()).setStatus(BpmOAImprestDO.IN_PROGRESS)); bpmOAImprestMapper.updateById(new BpmOAImprestDO().setId(bpmOAImprestDO.getId()).setReimbursementId(reimbursement.getId()).setStatus(BpmOAImprestDO.IN_PROGRESS));
} }
List<UploadUserFile> fileItems = createReqVO.getFileItems() ; List<UploadUserFile> fileItems = createReqVO.getFileItems() ;
@ -95,7 +95,7 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B
if (BpmProcessInstanceResultEnum.APPROVE.getResult().equals(result)) { if (BpmProcessInstanceResultEnum.APPROVE.getResult().equals(result)) {
ProcessInstance instance = bpmProcessInstanceService.getProcessInstance(processInstanceId); ProcessInstance instance = bpmProcessInstanceService.getProcessInstance(processInstanceId);
BpmOAImprestDO bpmOAImprestDO = bpmOAImprestMapper.selectByUserId(Long.valueOf(instance.getStartUserId()), BpmOAImprestDO.IN_PROGRESS); BpmOAImprestDO bpmOAImprestDO = bpmOAImprestMapper.selectOne(BpmOAImprestDO::getReimbursementId, id);
if (instance.isEnded() && bpmOAImprestDO != null) { if (instance.isEnded() && bpmOAImprestDO != null) {
@ -111,8 +111,7 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B
|| BpmProcessInstanceResultEnum.CANCEL.getResult().equals(result) || BpmProcessInstanceResultEnum.CANCEL.getResult().equals(result)
|| BpmProcessInstanceResultEnum.BACK.getResult().equals(result)) { || BpmProcessInstanceResultEnum.BACK.getResult().equals(result)) {
ProcessInstance instance = bpmProcessInstanceService.getProcessInstance(processInstanceId); BpmOAImprestDO bpmOAImprestDO = bpmOAImprestMapper.selectOne(BpmOAImprestDO::getReimbursementId, id);
BpmOAImprestDO bpmOAImprestDO = bpmOAImprestMapper.selectByUserId(Long.valueOf(instance.getStartUserId()), BpmOAImprestDO.IN_PROGRESS);
if (bpmOAImprestDO != null) { if (bpmOAImprestDO != null) {

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.system.api.dept; package cn.iocoder.yudao.module.system.api.dept;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.system.api.dept.dto.PostRespVO;
import cn.iocoder.yudao.module.system.enums.ApiConstants; import cn.iocoder.yudao.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -22,4 +23,8 @@ public interface PostApi {
@Parameter(name = "ids", description = "岗位编号数组", example = "1,2", required = true) @Parameter(name = "ids", description = "岗位编号数组", example = "1,2", required = true)
CommonResult<Boolean> validPostList(@RequestParam("ids") Collection<Long> ids); CommonResult<Boolean> validPostList(@RequestParam("ids") Collection<Long> ids);
@GetMapping(PREFIX + "/get")
@Operation(summary = "获得部门信息")
@Parameter(name = "id", description = "岗位编号", example = "1024", required = true)
CommonResult<PostRespVO> getPost(@RequestParam("id") Long id);
} }

View File

@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.system.api.dept.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "RPC 服务 - 岗位 Response DTO")
@Data
public class PostRespVO {
@Schema(description = "岗位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Long id;
@Schema(description = "岗位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "总监")
private String name;
}

View File

@ -1,6 +1,9 @@
package cn.iocoder.yudao.module.system.api.dept; package cn.iocoder.yudao.module.system.api.dept;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.api.dept.dto.PostRespVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
import cn.iocoder.yudao.module.system.service.dept.PostService; import cn.iocoder.yudao.module.system.service.dept.PostService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -23,4 +26,10 @@ public class PostApiImpl implements PostApi {
return success(true); return success(true);
} }
@Override
public CommonResult<PostRespVO> getPost(Long id) {
PostDO postDO = postService.getPost(id);
return success(BeanUtils.toBean(postDO, PostRespVO.class));
}
} }