refactor(bpm): 重构资产申领流程,优化数据处理逻辑
重构了资产申领的业务逻辑,调整了数据处理方式。具体变更包括: - 移除了不必要的`Receive`类,将其重命名为`BpmOAAssetClaimItemSaveVO`,以更清晰地表示其用途。 - 在`BpmOAAssetClaimController`中,改用`BpmOAAssetClaimItemDO`来处理明细数据。- 在`BpmOAAssetClaimRespVO`中,将`receive`字段的类型从`List<ReceiveRespVO>`更改为`List<BpmOAAssetClaimItemDO>`,以统一数据对象。 - 在`BpmOAAssetClaimServiceImpl`中,实现了明细数据的同步插入逻辑,并优化了资产接收的处理逻辑。 这些变更简化了代码结构,优化了数据流的处理,提升了代码可维护性和业务逻辑的清晰度。
This commit is contained in:
parent
61f0fe509b
commit
811c5b3509
@ -4,12 +4,11 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.BpmOAAssetClaimCreateReqVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.BpmOAAssetClaimCreateReqVO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.BpmOAAssetClaimRespVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.BpmOAAssetClaimRespVO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.Receive;
|
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.ReceiveRespVO;
|
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAAssetClaimDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAAssetClaimDO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAAssetClaimItemDO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.service.oa.BpmOAAssetClaimItemService;
|
||||||
import cn.iocoder.yudao.module.bpm.service.oa.BpmOAAssetClaimService;
|
import cn.iocoder.yudao.module.bpm.service.oa.BpmOAAssetClaimService;
|
||||||
import cn.iocoder.yudao.module.system.api.assets.AssetsTypeApi;
|
import cn.iocoder.yudao.module.system.api.assets.AssetsTypeApi;
|
||||||
import cn.iocoder.yudao.module.system.api.assets.dto.AssetsTypeDTO;
|
|
||||||
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;
|
||||||
@ -18,14 +17,9 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
|
||||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - OA 资金申领")
|
@Tag(name = "管理后台 - OA 资金申领")
|
||||||
@ -38,7 +32,7 @@ public class BpmOAAssetClaimController {
|
|||||||
private BpmOAAssetClaimService assetClaimService;
|
private BpmOAAssetClaimService assetClaimService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AssetsTypeApi assetsTypeApi;
|
private BpmOAAssetClaimItemService itemService;
|
||||||
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "创建请求申请")
|
@Operation(summary = "创建请求申请")
|
||||||
@ -54,16 +48,11 @@ public class BpmOAAssetClaimController {
|
|||||||
|
|
||||||
BpmOAAssetClaimDO assetClaimDO = assetClaimService.getAssetClaim(id);
|
BpmOAAssetClaimDO assetClaimDO = assetClaimService.getAssetClaim(id);
|
||||||
|
|
||||||
List<AssetsTypeDTO> assetsTypeDTO = assetsTypeApi.getList(convertList(assetClaimDO.getReceive(), Receive::getAssetsTypeId)).getCheckedData();
|
// 获取明细数据
|
||||||
Map<Long, String> assetsTypeNameMap = convertMap(assetsTypeDTO, AssetsTypeDTO::getId, AssetsTypeDTO::getName);
|
List<BpmOAAssetClaimItemDO> itemDOS = itemService.getAssetClaimItem(id);
|
||||||
|
|
||||||
List<ReceiveRespVO> respVOS = assetClaimDO.getReceive().stream()
|
|
||||||
.map(item -> BeanUtils.toBean(item, ReceiveRespVO.class)
|
|
||||||
.setAssetsTypeName(assetsTypeNameMap.get(item.getAssetsTypeId())))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
return success(BeanUtils.toBean(assetClaimDO, BpmOAAssetClaimRespVO.class)
|
return success(BeanUtils.toBean(assetClaimDO, BpmOAAssetClaimRespVO.class)
|
||||||
.setReceive(respVOS));
|
.setReceive(itemDOS));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/getByProcessInstanceId")
|
@GetMapping("/getByProcessInstanceId")
|
||||||
@ -73,15 +62,10 @@ public class BpmOAAssetClaimController {
|
|||||||
|
|
||||||
BpmOAAssetClaimDO assetClaimDO = assetClaimService.getByProcessInstanceId(processInstanceId);
|
BpmOAAssetClaimDO assetClaimDO = assetClaimService.getByProcessInstanceId(processInstanceId);
|
||||||
|
|
||||||
List<AssetsTypeDTO> assetsTypeDTO = assetsTypeApi.getList(convertList(assetClaimDO.getReceive(), Receive::getAssetsTypeId)).getCheckedData();
|
// 获取明细数据
|
||||||
Map<Long, String> assetsTypeNameMap = convertMap(assetsTypeDTO, AssetsTypeDTO::getId, AssetsTypeDTO::getName);
|
List<BpmOAAssetClaimItemDO> itemDOS = itemService.getAssetClaimItem(assetClaimDO.getId());
|
||||||
|
|
||||||
List<ReceiveRespVO> respVOS = assetClaimDO.getReceive().stream()
|
|
||||||
.map(item -> BeanUtils.toBean(item, ReceiveRespVO.class)
|
|
||||||
.setAssetsTypeName(assetsTypeNameMap.get(item.getAssetsTypeId())))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
return success(BeanUtils.toBean(assetClaimDO, BpmOAAssetClaimRespVO.class)
|
return success(BeanUtils.toBean(assetClaimDO, BpmOAAssetClaimRespVO.class)
|
||||||
.setReceive(respVOS));
|
.setReceive(itemDOS));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,35 @@
|
|||||||
package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim;
|
package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 资产申领明细VO")
|
@Schema(description = "管理后台 - 资产申领明细VO")
|
||||||
@Data
|
@Data
|
||||||
public class Receive {
|
public class BpmOAAssetClaimItemSaveVO {
|
||||||
|
|
||||||
|
@Schema(description = "资产申领编号")
|
||||||
|
private Long assetClaimId;
|
||||||
|
|
||||||
@Schema(description = "资产类型编号")
|
@Schema(description = "资产类型编号")
|
||||||
|
@NotNull(message = "资产类型不能为空")
|
||||||
private Long assetsTypeId;
|
private Long assetsTypeId;
|
||||||
|
|
||||||
|
@Schema(description = "资产类型名称")
|
||||||
|
private String assetsTypeName;
|
||||||
|
|
||||||
@Schema(description = "业务类型")
|
@Schema(description = "业务类型")
|
||||||
private Integer businessType;
|
private Integer businessType;
|
||||||
|
|
||||||
|
@Schema(description = "资产编号")
|
||||||
|
private String assetsNo;
|
||||||
|
|
||||||
|
@Schema(description = "资产名称")
|
||||||
|
private String assetsName;
|
||||||
|
|
||||||
@Schema(description = "数量")
|
@Schema(description = "数量")
|
||||||
|
@NotNull(message = "数量不能为空")
|
||||||
private Integer num;
|
private Integer num;
|
||||||
|
|
||||||
@Schema(description = "使用单位")
|
@Schema(description = "使用单位")
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
|
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAAssetClaimItemDO;
|
||||||
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.EqualsAndHashCode;
|
||||||
@ -19,7 +20,7 @@ import java.util.List;
|
|||||||
public class BpmOAAssetClaimRespVO extends BpmOABaseRespVO {
|
public class BpmOAAssetClaimRespVO extends BpmOABaseRespVO {
|
||||||
|
|
||||||
@Schema(description = "申领明细")
|
@Schema(description = "申领明细")
|
||||||
private List<ReceiveRespVO> receive;
|
private List<BpmOAAssetClaimItemDO> receive;
|
||||||
|
|
||||||
@Schema(description = "申请原因")
|
@Schema(description = "申请原因")
|
||||||
private String reason;
|
private String reason;
|
||||||
|
@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
|
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.Receive;
|
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
@ -38,12 +37,6 @@ public class BpmOAAssetClaimDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 申领明细
|
|
||||||
*/
|
|
||||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
|
||||||
private List<Receive> receive;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 申请事由
|
* 申请事由
|
||||||
*/
|
*/
|
||||||
|
@ -4,16 +4,15 @@ import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
|
|||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
|
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.BpmOAAssetClaimCreateReqVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.BpmOAAssetClaimCreateReqVO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.Receive;
|
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.assetClaim.BpmOAAssetClaimItemSaveVO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAAssetClaimDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAAssetClaimDO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAAssetClaimItemDO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAAssetClaimMapper;
|
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAAssetClaimMapper;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
|
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
|
||||||
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
|
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
|
||||||
import cn.iocoder.yudao.module.system.api.assetreceive.AssetReceiveApi;
|
import cn.iocoder.yudao.module.system.api.assetreceive.AssetReceiveApi;
|
||||||
import cn.iocoder.yudao.module.system.api.assetreceive.dto.AssetReceiveSaveDTO;
|
import cn.iocoder.yudao.module.system.api.assetreceive.dto.AssetReceiveSaveDTO;
|
||||||
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
|
||||||
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
|
||||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
import org.flowable.engine.runtime.ProcessInstance;
|
import org.flowable.engine.runtime.ProcessInstance;
|
||||||
@ -47,6 +46,9 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
|||||||
@Resource
|
@Resource
|
||||||
private BpmOAAssetClaimMapper assetClaimMapper;
|
private BpmOAAssetClaimMapper assetClaimMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private BpmOAAssetClaimItemService itemService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private BpmProcessInstanceService processInstanceService;
|
private BpmProcessInstanceService processInstanceService;
|
||||||
|
|
||||||
@ -67,6 +69,10 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
|||||||
.setResult(BpmProcessInstanceResultEnum.PROCESS.getResult());
|
.setResult(BpmProcessInstanceResultEnum.PROCESS.getResult());
|
||||||
assetClaimMapper.insert(assetClaim);
|
assetClaimMapper.insert(assetClaim);
|
||||||
|
|
||||||
|
// 同步插入明细数据
|
||||||
|
createReqVO.getReceive().forEach(item -> item.setAssetClaimId(assetClaim.getId()));
|
||||||
|
itemService.createAssetClaimItem(createReqVO.getReceive());
|
||||||
|
|
||||||
// 发起 BPM 流程
|
// 发起 BPM 流程
|
||||||
Map<String, Object> processInstanceVariables = new HashMap<>();
|
Map<String, Object> processInstanceVariables = new HashMap<>();
|
||||||
String processInstanceId = processInstanceService.createProcessInstance(userId,
|
String processInstanceId = processInstanceService.createProcessInstance(userId,
|
||||||
@ -87,6 +93,7 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
|||||||
if (fileItems != null && !fileItems.isEmpty()) {
|
if (fileItems != null && !fileItems.isEmpty()) {
|
||||||
uploadBpmFileProcessInstanceId(processInstanceId, fileItems);
|
uploadBpmFileProcessInstanceId(processInstanceId, fileItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
return assetClaim.getId();
|
return assetClaim.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +114,8 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
|||||||
public void updateAssetClaimResult(String processInstanceId, Long id, Integer result) {
|
public void updateAssetClaimResult(String processInstanceId, Long id, Integer result) {
|
||||||
|
|
||||||
BpmOAAssetClaimDO assetClaim = validateLeaveExists(id);
|
BpmOAAssetClaimDO assetClaim = validateLeaveExists(id);
|
||||||
|
// 获取明细数据
|
||||||
|
List<BpmOAAssetClaimItemDO> itemDOs = itemService.getAssetClaimItem(id);
|
||||||
|
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
AdminUserRespDTO userRespDTO = userApi.getUser(assetClaim.getUserId()).getCheckedData();
|
AdminUserRespDTO userRespDTO = userApi.getUser(assetClaim.getUserId()).getCheckedData();
|
||||||
@ -119,13 +128,16 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
|||||||
if (instance.isEnded()) {
|
if (instance.isEnded()) {
|
||||||
|
|
||||||
List<AssetReceiveSaveDTO> receiveDTOs = new ArrayList<>();
|
List<AssetReceiveSaveDTO> receiveDTOs = new ArrayList<>();
|
||||||
for (Receive receive : assetClaim.getReceive()) {
|
for (BpmOAAssetClaimItemDO itemDO : itemDOs) {
|
||||||
|
|
||||||
receiveDTOs.add(new AssetReceiveSaveDTO()
|
receiveDTOs.add(new AssetReceiveSaveDTO()
|
||||||
.setUserId(assetClaim.getUserId())
|
.setUserId(assetClaim.getUserId())
|
||||||
.setDeptId(userRespDTO.getDeptId())
|
.setDeptId(userRespDTO.getDeptId())
|
||||||
.setAssetsTypeId(receive.getAssetsTypeId())
|
.setAssetsTypeId(itemDO.getAssetsTypeId())
|
||||||
.setNum(receive.getNum())
|
.setAssetsTypeName(itemDO.getAssetsTypeName())
|
||||||
|
.setAssetsNo(itemDO.getAssetsNo())
|
||||||
|
.setAssetsName(itemDO.getAssetsName())
|
||||||
|
.setNum(itemDO.getNum())
|
||||||
.setApplyDate(assetClaim.getCreateTime().toLocalDate())
|
.setApplyDate(assetClaim.getCreateTime().toLocalDate())
|
||||||
.setStatus(0));
|
.setStatus(0));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user