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.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.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.BpmOAAssetClaimItemDO;
|
||||
import cn.iocoder.yudao.module.bpm.service.oa.BpmOAAssetClaimItemService;
|
||||
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.dto.AssetsTypeDTO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -18,14 +17,9 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
|
||||
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.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;
|
||||
|
||||
@Tag(name = "管理后台 - OA 资金申领")
|
||||
@ -38,7 +32,7 @@ public class BpmOAAssetClaimController {
|
||||
private BpmOAAssetClaimService assetClaimService;
|
||||
|
||||
@Resource
|
||||
private AssetsTypeApi assetsTypeApi;
|
||||
private BpmOAAssetClaimItemService itemService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建请求申请")
|
||||
@ -54,16 +48,11 @@ public class BpmOAAssetClaimController {
|
||||
|
||||
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<ReceiveRespVO> respVOS = assetClaimDO.getReceive().stream()
|
||||
.map(item -> BeanUtils.toBean(item, ReceiveRespVO.class)
|
||||
.setAssetsTypeName(assetsTypeNameMap.get(item.getAssetsTypeId())))
|
||||
.collect(Collectors.toList());
|
||||
// 获取明细数据
|
||||
List<BpmOAAssetClaimItemDO> itemDOS = itemService.getAssetClaimItem(id);
|
||||
|
||||
return success(BeanUtils.toBean(assetClaimDO, BpmOAAssetClaimRespVO.class)
|
||||
.setReceive(respVOS));
|
||||
.setReceive(itemDOS));
|
||||
}
|
||||
|
||||
@GetMapping("/getByProcessInstanceId")
|
||||
@ -73,15 +62,10 @@ public class BpmOAAssetClaimController {
|
||||
|
||||
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<ReceiveRespVO> respVOS = assetClaimDO.getReceive().stream()
|
||||
.map(item -> BeanUtils.toBean(item, ReceiveRespVO.class)
|
||||
.setAssetsTypeName(assetsTypeNameMap.get(item.getAssetsTypeId())))
|
||||
.collect(Collectors.toList());
|
||||
// 获取明细数据
|
||||
List<BpmOAAssetClaimItemDO> itemDOS = itemService.getAssetClaimItem(assetClaimDO.getId());
|
||||
|
||||
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;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Schema(description = "管理后台 - 资产申领明细VO")
|
||||
@Data
|
||||
public class Receive {
|
||||
public class BpmOAAssetClaimItemSaveVO {
|
||||
|
||||
@Schema(description = "资产申领编号")
|
||||
private Long assetClaimId;
|
||||
|
||||
@Schema(description = "资产类型编号")
|
||||
@NotNull(message = "资产类型不能为空")
|
||||
private Long assetsTypeId;
|
||||
|
||||
@Schema(description = "资产类型名称")
|
||||
private String assetsTypeName;
|
||||
|
||||
@Schema(description = "业务类型")
|
||||
private Integer businessType;
|
||||
|
||||
@Schema(description = "资产编号")
|
||||
private String assetsNo;
|
||||
|
||||
@Schema(description = "资产名称")
|
||||
private String assetsName;
|
||||
|
||||
@Schema(description = "数量")
|
||||
@NotNull(message = "数量不能为空")
|
||||
private Integer num;
|
||||
|
||||
@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.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -19,7 +20,7 @@ import java.util.List;
|
||||
public class BpmOAAssetClaimRespVO extends BpmOABaseRespVO {
|
||||
|
||||
@Schema(description = "申领明细")
|
||||
private List<ReceiveRespVO> receive;
|
||||
private List<BpmOAAssetClaimItemDO> receive;
|
||||
|
||||
@Schema(description = "申请原因")
|
||||
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.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 com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
@ -38,12 +37,6 @@ public class BpmOAAssetClaimDO extends BaseDO {
|
||||
*/
|
||||
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.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.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.BpmOAAssetClaimItemDO;
|
||||
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.service.task.BpmHistoryProcessInstanceService;
|
||||
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.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.dto.AdminUserRespDTO;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
@ -47,6 +46,9 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
||||
@Resource
|
||||
private BpmOAAssetClaimMapper assetClaimMapper;
|
||||
|
||||
@Resource
|
||||
private BpmOAAssetClaimItemService itemService;
|
||||
|
||||
@Resource
|
||||
private BpmProcessInstanceService processInstanceService;
|
||||
|
||||
@ -67,6 +69,10 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
||||
.setResult(BpmProcessInstanceResultEnum.PROCESS.getResult());
|
||||
assetClaimMapper.insert(assetClaim);
|
||||
|
||||
// 同步插入明细数据
|
||||
createReqVO.getReceive().forEach(item -> item.setAssetClaimId(assetClaim.getId()));
|
||||
itemService.createAssetClaimItem(createReqVO.getReceive());
|
||||
|
||||
// 发起 BPM 流程
|
||||
Map<String, Object> processInstanceVariables = new HashMap<>();
|
||||
String processInstanceId = processInstanceService.createProcessInstance(userId,
|
||||
@ -87,6 +93,7 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
||||
if (fileItems != null && !fileItems.isEmpty()) {
|
||||
uploadBpmFileProcessInstanceId(processInstanceId, fileItems);
|
||||
}
|
||||
|
||||
return assetClaim.getId();
|
||||
}
|
||||
|
||||
@ -107,6 +114,8 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
||||
public void updateAssetClaimResult(String processInstanceId, Long id, Integer result) {
|
||||
|
||||
BpmOAAssetClaimDO assetClaim = validateLeaveExists(id);
|
||||
// 获取明细数据
|
||||
List<BpmOAAssetClaimItemDO> itemDOs = itemService.getAssetClaimItem(id);
|
||||
|
||||
// 获取用户信息
|
||||
AdminUserRespDTO userRespDTO = userApi.getUser(assetClaim.getUserId()).getCheckedData();
|
||||
@ -119,13 +128,16 @@ public class BpmOAAssetClaimServiceImpl extends BpmOABaseService implements BpmO
|
||||
if (instance.isEnded()) {
|
||||
|
||||
List<AssetReceiveSaveDTO> receiveDTOs = new ArrayList<>();
|
||||
for (Receive receive : assetClaim.getReceive()) {
|
||||
for (BpmOAAssetClaimItemDO itemDO : itemDOs) {
|
||||
|
||||
receiveDTOs.add(new AssetReceiveSaveDTO()
|
||||
.setUserId(assetClaim.getUserId())
|
||||
.setDeptId(userRespDTO.getDeptId())
|
||||
.setAssetsTypeId(receive.getAssetsTypeId())
|
||||
.setNum(receive.getNum())
|
||||
.setAssetsTypeId(itemDO.getAssetsTypeId())
|
||||
.setAssetsTypeName(itemDO.getAssetsTypeName())
|
||||
.setAssetsNo(itemDO.getAssetsNo())
|
||||
.setAssetsName(itemDO.getAssetsName())
|
||||
.setNum(itemDO.getNum())
|
||||
.setApplyDate(assetClaim.getCreateTime().toLocalDate())
|
||||
.setStatus(0));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user