package com.lantone.qc.kernel.catalogue.beilun.consultation;

import com.lantone.qc.kernel.catalogue.QCCatalogue;
import com.lantone.qc.kernel.util.CatalogueUtil;
import com.lantone.qc.pub.model.InputInfo;
import com.lantone.qc.pub.model.OutputInfo;
import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
import com.lantone.qc.pub.util.DateUtil;
import com.lantone.qc.pub.util.StringUtil;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * @ClassName : CON0528
 * @Description : 无会诊记录单
 * @Author : 楼辉荣
 * @Date: 2020-03-06 17:28
 */
@Component
public class CON0528 extends QCCatalogue {

    public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
        status.set("0");
        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
        if (consultationDocs.size() == 0) {
            return;
        }
        for (ConsultationDoc con : consultationDocs) {
            if (con.getConsultationResultsDoc() != null) {
                Map<String, String> structureMap = con.getConsultationResultsDoc().getStructureMap();
                String applyDate = structureMap.get("申请日期");
                if (StringUtil.isNotBlank(applyDate) && !"申请日期".equals(applyDate)) {
                    if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(applyDate), StringUtil.parseDateTime(DateUtil.nowString()),
                            Long.valueOf(24 * 60))) {//如果接收未超过24小时，规则不判断
                        return;
                    }
                }
            }
        }
        long consultationRecordCount = consultationDocs
                .stream().map(ConsultationDoc::getConsultationRecordDoc).filter(Objects::nonNull).count();

        long consultationResultsCount = consultationDocs
                .stream().map(ConsultationDoc::getConsultationResultsDoc).filter(Objects::nonNull).count();

        if (consultationRecordCount < consultationResultsCount) {
            status.set("-1");
            info.set("会诊记录病程数：" + consultationRecordCount + ",会诊结果数：" + consultationResultsCount);
        }
    }
}