会审起草节点校验+JMS任务分发至集成平台

会审与采购检验

/**
     * 会审与采购检验
     * @param approvalParamDto
     * @return Boolean
     */
    @Override
    public Boolean checkAuditAndPurchase(ApprovalParamDto approvalParamDto) {
        final LoginAuthDto loginAuthDto = approvalParamDto.getLoginAuthDto();
        final ResponseDto<List<SysDict>> itemByDicCode = this.dicFeignApi.getItemByDicCode(CommonConstant.MDSG_PROVINCE_CONFIG);
        final List<SysDict> body = itemByDicCode.getBody();
        final SysDict sysDict = body.stream().filter(item -> CommonConstant.MDSG_AUDIT_CHECK.equalsIgnoreCase(item.getItemCode())).findFirst().orElse(null);
        if (Objects.isNull(sysDict)){
            //字典项不存在
            return true;
        }else {
            log.info("当前用户省份信息:{},字典项省份信息:{}",loginAuthDto.getAreaId(),sysDict.getItemValue());
            if (CommonConstant.ZERO.equals(sysDict.getItemFlag())){
                log.info("字典项已停用,无需校验!");
                return true;
            }
            final List<String> dictList = Arrays.asList(sysDict.getItemValue().split(","));
            //分省校验 若字典值中存在当前用户省份则进行会审采购校验,不存在则直接返回
            if (!dictList.contains(loginAuthDto.getAreaId())){
                log.info("当前省份用户无需进行会审采购校验!");
                return true;
            }
        }
        final QueryPurchaseOrderInfo queryPurchaseOrderInfo = new QueryPurchaseOrderInfo();
        final List<String> expenseTypeList = new ArrayList<>();
        queryPurchaseOrderInfo.setCompanyCode(loginAuthDto.getCompanyCode());
        queryPurchaseOrderInfo.setMicroserviceIdentification(CommonConstant.MDSG);
        expenseTypeList.add(CommonConstant.EXPENSES_TYPE_SJ);
        expenseTypeList.add(CommonConstant.EXPENSES_TYPE_SG);
        expenseTypeList.add(CommonConstant.EXPENSES_TYPE_JL);
        queryPurchaseOrderInfo.setExpenseTypes(expenseTypeList);
        final Audit audit = (Audit) new Audit().selectById(approvalParamDto.getBusinessId());
        final List<TaskStatus> taskStatusList = this.taskStatusService.list(Wrappers.<TaskStatus>lambdaQuery().eq(TaskStatus::getAuditId, audit.getId()).eq(BaseEntity::getDeleteFlag, 0));
        queryPurchaseOrderInfo.setProjectCode(taskStatusList.get(0).getProjectCode());
        queryPurchaseOrderInfo.setProjectName(taskStatusList.get(0).getProjectName());
        log.info("taskStatusList:{}",JSON.toJSONString(taskStatusList));
        final List<TaskDto> taskDtoList = taskStatusList.stream().map(item -> {
            TaskDto taskDto = new TaskDto();
            taskDto.setTaskCode(item.getTaskCode());
            taskDto.setTaskName(item.getTaskName());
            return taskDto;
        }).collect(Collectors.toList());
        queryPurchaseOrderInfo.setTaskDtos(taskDtoList);
        ResponseDto<QueryPurchaseOrderOutInfo> responseDto = purchaseFeignApi.queryPurchaseOrderInfo(queryPurchaseOrderInfo);
        log.info("查询PMS采购订单信息:{}", JSON.toJSONString(responseDto));
        if (Objects.nonNull(responseDto.getBody())){
            QueryPurchaseOrderOutInfo queryPurchaseOrderOutInfo = JSON.parseObject(JSON.toJSONString(responseDto.getBody()), QueryPurchaseOrderOutInfo.class);
            if (Objects.nonNull(queryPurchaseOrderOutInfo)){
                //当code为FALSE时,返回采购接口错误信息
                if(CommonConstant.FALSE.equalsIgnoreCase(queryPurchaseOrderOutInfo.getCode())){
                    throw new BusinessException(queryPurchaseOrderOutInfo.getMessage());
                }
                //允许提交不做操作,不允许提交则抛异常
                if (CommonConstant.TRUE.equalsIgnoreCase(queryPurchaseOrderOutInfo.getCode()) && Objects.nonNull(queryPurchaseOrderOutInfo.getBody())){
                    final Map<String, List<RequLineDto>> taskMap = queryPurchaseOrderOutInfo.getBody().stream().collect(Collectors.groupingBy(RequLineDto::getTaskCode));
                    //采购只会返回做了派工的数据,未做派工的费用类型就不去控制
                    new ArrayList<>(taskMap.keySet()).forEach(taskCode -> {
                        taskMap.get(taskCode).forEach(res -> {
                            if (Objects.isNull(res.getDispatchAmt())){
                                log.info("派工金额不存在,不做控制!");
                                return;
                            }
                            //未生成PMS订单 && 派工金额不为0
                            if (CommonConstant.POOL_REQU_STATUS_ZERO.equals(res.getPoolRequStatus()) && !(CommonConstant.DISPATCH_AMT_ZERO.compareTo(res.getDispatchAmt()) == 0)){
                                final String exceptionMsg = taskCode + CommonConstant.APPEND_EXP_MSG + convertThreeFeeMsg(res.getExpenseType()) + ExceptionEnum.NO_GENERATED_PMS_ORDERS.getMessage();
                                throw new BusinessException(ExceptionEnum.NO_GENERATED_PMS_ORDERS.getCode(),exceptionMsg);
                            }
                            //已生成PMS订单 && 未生成ERP订单
                            if (CommonConstant.POOL_REQU_STATUS_ONE.equals(res.getPoolRequStatus()) && CommonConstant.ERP_ORDER_ZERO.equals(res.getErpOrder())){
                                final String exceptionMsg = taskCode + CommonConstant.APPEND_EXP_MSG + convertThreeFeeMsg(res.getExpenseType()) + ExceptionEnum.NO_GENERATED_ERP_ORDERS.getMessage();
                                throw new BusinessException(ExceptionEnum.NO_GENERATED_ERP_ORDERS.getCode(),exceptionMsg);
                            }
                        });
                    });
                    log.info("会审采购校验完成!");
                }
            }
        }
        return true;
    }
    private static String convertThreeFeeMsg(String threeFee) {
        String reStr = "";
        switch (threeFee) {
            case "SG":
                reStr = CommonConstant.COOPERATION_MSG;
                break;
            case "SJ":
                reStr = CommonConstant.SUPERVISOR_MSG;
                break;
            case "JL":
                reStr = CommonConstant.CONSTRUCTION_MSG;
                break;
        }
        return reStr;
    }

集中化PMS系统将新增、修改的任务信息发送到集成平台

   /**
     * 集中化PMS系统将新增、修改的任务信息发送到集成平台
     * @param distTaskDot
     * @return String
     */
    @Override
    public String dictTaskInfoToSoa(final DistTaskDot distTaskDot) {
        final DistTaskInfoInputParameters distTaskInfoInputParameters = new DistTaskInfoInputParameters();
        final InputCollectionItem<DistTaskInputCollection> inputCollectionItem = new InputCollectionItem<>();
        final List<DistTaskInputCollection> distTaskInputCollections = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(distTaskDot.getIds())){
            final List<BreakdownTask> breakdownTasks = (List<BreakdownTask>) this.breakdownTaskService.listByIds(distTaskDot.getIds());
            breakdownTasks.stream().filter(task -> CommonConstant.CODE_00.equals(task.getImperpStatus())).forEach(task -> {
                final DistTaskInputCollection distTaskInputCollection = new DistTaskInputCollection();
                BeanUtils.copyProperties(task, distTaskInputCollection);
                distTaskInputCollection.setPriKey(task.getId().toString());
                distTaskInputCollection.setChangeType(distTaskDot.getChangeType());
                final BreakdownTaskExt breakdownTaskExt = this.breakdownTaskExtService.getOne(Wrappers.<BreakdownTaskExt>lambdaQuery().eq(BreakdownTaskExt::getProjectCode, distTaskInputCollection.getProjectCode())
                        .eq(BreakdownTaskExt::getTaskCode, distTaskInputCollection.getTaskCode()).eq(BreakdownTaskExt::getDeleteFlag, 0));
                if (Objects.nonNull(breakdownTaskExt)){
                    if (StringUtils.isNotEmpty(breakdownTaskExt.getIsResearchNature())){
                        distTaskInputCollection.setIsResearchNature(breakdownTaskExt.getIsResearchNature());
                    }
                    if (StringUtils.isNotEmpty(breakdownTaskExt.getIsResearchNatureRms())){
                        distTaskInputCollection.setIsResearchNatureRms(breakdownTaskExt.getIsResearchNatureRms());
                    }
                }
                distTaskInputCollections.add(distTaskInputCollection);
            });
        }
        inputCollectionItem.setItemList(distTaskInputCollections);
        final MsgHeader jmsMsgHeader = getJmsMsgHeader(soaConfig);
        distTaskInfoInputParameters.setMsgHeader(jmsMsgHeader);
        distTaskInfoInputParameters.setInputCollectionList(inputCollectionItem);
        log.info("发往soa集成平台入参:{}",JSON.toJSONString(distTaskInfoInputParameters));
        final JSONObject requestBody = new JSONObject();
        requestBody.put("InputParameters", JSONObject.toJSON(distTaskInfoInputParameters));
        requestBody.put("MSGHEADER", jmsMsgHeader);
        final String request = JSON.toJSONString(requestBody, this.filter);
        String resultMsg = "JMS开关未打开";
        if (this.soaConfig.isSoaEnable()){
            log.info("-------JMS开关打开,推送任务信息至集成平台------");
            //TODO 待验证
            resultMsg = httpPost(this.soaConfig.getSoaDistPushUrl(), MediaType.APPLICATION_JSON_UTF8, request);
        }
        return resultMsg;
    }

    private final ValueFilter filter = new ValueFilter() {
        @Override
        public Object process(final Object obj, final String s, final Object v) {
            if (v == null) {
                return "";
            }
            return v;
        }
    };

    public static String httpPost(final String url, final MediaType mediaType, final String reqBody) {

        final StringBuilder stb = new StringBuilder("");
        stb.append("请求报文:").append(reqBody)
                .append("请求路径:").append(url);
        log.info("请求报文:" + reqBody);
        log.info("请求路径:" + url);
        final RestTemplate restTemplate = new RestTemplate();

        final HttpHeaders headers = new HttpHeaders();
        headers.setContentType(mediaType);

        final HttpEntity<String> reqEntity = new HttpEntity<>(reqBody, headers);

        final ResponseEntity<String> response = restTemplate.postForEntity(url, reqEntity, String.class);
        if (response.hasBody()) {
            log.info("请求响应:" + response.getBody());
            stb.append("请求响应:").append(response.getBody());
            return stb.toString();
        }
        log.info("请求发送取消...");
        return stb.toString();
    }

筛选出已推送erp的任务,并给pri_key赋值

        //筛选出已推送erp的任务,并给pri_key赋值
        final List<DictTaskOutInfo> distFilter = dictTaskOutInfos.stream().filter(task -> CommonConstant.CODE_00.equals(task.getImperpStatus())).collect(
                Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(ele -> ele.getProjectCode() + ";" + ele.getTaskCode()))), ArrayList::new)
        );
        final List<DistTaskInputCollection> filterTaskInfo = itemList.stream().filter(item ->
                distFilter.stream().anyMatch(dist -> dist.getProjectCode().equals(item.getProjectCode()) && dist.getTaskCode().equals(item.getTaskCode()))
        ).peek(item -> {
            for (DictTaskOutInfo taskOutInfo : distFilter) {
                if (StringUtils.isEmpty(item.getPriKey()) && taskOutInfo.getProjectCode().equals(item.getProjectCode()) && taskOutInfo.getTaskCode().equals(item.getTaskCode())){
                    item.setPriKey(taskOutInfo.getId().toString());
                }
            }
        }).collect(Collectors.toList());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值