| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.ruoyi.approve.bean.dto.ApprovalInstanceDto; |
| | | import com.ruoyi.approve.bean.vo.ApproveProcessVO; |
| | | import com.ruoyi.approve.mapper.ApprovalTemplateMapper; |
| | | import com.ruoyi.approve.pojo.ApprovalInstance; |
| | | import com.ruoyi.approve.pojo.ApprovalTemplate; |
| | |
| | | } |
| | | } |
| | | |
| | | purchaseLedger.setApprovalStatus(1); |
| | | boolean newPurchase = purchaseLedger.getId() == null; |
| | | if (newPurchase) { |
| | | purchaseLedger.setApprovalStatus(ApprovalStatusEnum.PENDING.getCode()); |
| | | } else { |
| | | PurchaseLedger stored = purchaseLedgerMapper.selectById(purchaseLedger.getId()); |
| | | if (stored != null) { |
| | | purchaseLedger.setApprovalStatus(stored.getApprovalStatus()); |
| | | } |
| | | } |
| | | // 实际合同金额始终等于合同金额 |
| | | purchaseLedger.setNetContractAmount(purchaseLedger.getContractAmount()); |
| | | // 3. 新增或更新主表 |
| | |
| | | } |
| | | // 6.采购审核新增;审批管理未配置采购审批人时,审批服务会自动置为审批通过。 |
| | | //查询当前采购合同号是否已添加审批,如果有且不是驳回状态,则不重复添加 |
| | | ApprovalInstance oldApprovalInstance = approvalInstanceService.getOne(Wrappers.<ApprovalInstance>lambdaQuery() |
| | | .eq(ApprovalInstance::getDeleted, 0) |
| | | .eq(ApprovalInstance::getBusinessType, TypeEnums.PURCHASE_APPROVAL.getCode()) |
| | | .eq(ApprovalInstance::getBusinessId, purchaseLedger.getId()) |
| | | .ne(ApprovalInstance::getStatus,"REJECTED") |
| | | ApproveProcess oldApprovalProcess = approveProcessService.getOne( |
| | | Wrappers.<ApproveProcess>lambdaQuery() |
| | | .eq(ApproveProcess::getApproveType, TypeEnums.PURCHASE_APPROVAL.getCode()) |
| | | .eq(ApproveProcess::getApproveReason, purchaseLedger.getPurchaseContractNumber()) |
| | | .in(ApproveProcess::getApproveStatus, 0, 1) |
| | | .last("limit 1") |
| | | ); |
| | | if(Objects.isNull(oldApprovalInstance)){ |
| | | if (Objects.isNull(oldApprovalProcess) |
| | | && !ApprovalStatusEnum.APPROVED.getCode().equals(purchaseLedger.getApprovalStatus())) { |
| | | addApproveByPurchase(loginUser, purchaseLedger, productList); |
| | | } |
| | | // 5. 迁移临时文件到正式目录 |
| | |
| | | return resultDto; |
| | | } |
| | | |
| | | public void addApproveByPurchase(LoginUser loginUser, PurchaseLedger purchaseLedger, List<SalesLedgerProduct> productList) { |
| | | public void addApproveByPurchase(LoginUser loginUser, PurchaseLedger purchaseLedger, |
| | | List<SalesLedgerProduct> productList) throws Exception { |
| | | if (loginUser == null) { |
| | | return; |
| | | } |
| | | ApprovalTemplate approvalTemplate = approvalTemplateMapper.selectOne( |
| | | new LambdaQueryWrapper<ApprovalTemplate>() |
| | | .eq(ApprovalTemplate::getBusinessType, 5L) |
| | | .eq(ApprovalTemplate::getDeleted, 0) |
| | | .orderByDesc(ApprovalTemplate::getId) |
| | | .last("LIMIT 1") |
| | | ); |
| | | if (approvalTemplate == null) { |
| | | throw new BaseException("请先配置采购审批模板"); |
| | | } |
| | | |
| | | ApprovalInstanceDto approvalInstance = new ApprovalInstanceDto(); |
| | | approvalInstance.setTemplateId(approvalTemplate.getId()); |
| | | approvalInstance.setTemplateName(approvalTemplate.getTemplateName()); |
| | | approvalInstance.setBusinessId(purchaseLedger.getId()); |
| | | approvalInstance.setBusinessType(5L); |
| | | approvalInstance.setCurrentLevel(1); |
| | | approvalInstance.setApplicantId(loginUser.getUserId()); |
| | | approvalInstance.setTitle(purchaseLedger.getPurchaseContractNumber()+"审批"); |
| | | approvalInstance.setApplicantName(loginUser.getNickName()); |
| | | approvalInstance.setApplyTime(LocalDateTime.now()); |
| | | PurchaseLedgerDto snapshot = new PurchaseLedgerDto(); |
| | | BeanUtils.copyProperties(purchaseLedger, snapshot); |
| | | snapshot.setProductData(productList == null ? Collections.emptyList() : new ArrayList<>(productList)); |
| | | approvalInstance.setFormConfig(JSON.toJSONString(snapshot)); |
| | | approvalInstanceService.add(approvalInstance); |
| | | |
| | | ApproveProcessVO approval = new ApproveProcessVO(); |
| | | approval.setApproveType(TypeEnums.PURCHASE_APPROVAL.getCode().intValue()); |
| | | approval.setApproveDeptId(loginUser.getCurrentDeptId()); |
| | | approval.setApproveUser(loginUser.getUserId()); |
| | | approval.setApproveReason(purchaseLedger.getPurchaseContractNumber()); |
| | | approval.setPrice(purchaseLedger.getContractAmount()); |
| | | approveProcessService.addApprove(approval); |
| | | } |
| | | |
| | | /** |