package thyyxxk.webserver.service.zhuyuanyisheng;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import thyyxxk.webserver.config.exception.ExceptionEnum;
import thyyxxk.webserver.constants.GetDateFormat;
import thyyxxk.webserver.dao.his.inpatient.XiangMuLuRuDao;
import thyyxxk.webserver.dao.his.zhuyuanyisheng.CaoYaoYiZhuDao;
import thyyxxk.webserver.dao.his.zhuyuanyisheng.YiZhuLuRuDao;
import thyyxxk.webserver.entity.ResultVo;
import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
import thyyxxk.webserver.entity.zhuyuanyisheng.caoyaoyizhu.CaoYaoChaXunTiaoJian;
import thyyxxk.webserver.entity.zhuyuanyisheng.caoyaoyizhu.YzActOrderCy;
import thyyxxk.webserver.entity.zhuyuanyisheng.caoyaoyizhu.YzActOrderCyDetail;
import thyyxxk.webserver.entity.zhuyuanyisheng.caoyaoyizhu.YzOrderPatternCy;
import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.XinZhenYiZhu;
import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.XinZhenYzActOrder;
import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.YiZhuMingChen;
import thyyxxk.webserver.service.PublicServer;
import thyyxxk.webserver.service.hospitalizationCosts.HospitalizationCostsService;
import thyyxxk.webserver.utils.*;
import java.math.BigDecimal;
import java.util.*;
/**
*
* 描述:
*
*
* @author xc
* @date 2022-02-26 08:39
*/
@Service
@Slf4j
public class CaoYaoYiZhuService {
private final CaoYaoYiZhuDao dao;
private final PublicServer publicServer;
private final YiZhuLuRuDao yiZhuLuRuDao;
private final YiZhuLuRuServer yiZhuLuRuServer;
private final XiangMuLuRuDao xiangMuLuRuDao;
private final HospitalizationCostsService hospitalizationCostsService;
public CaoYaoYiZhuService(CaoYaoYiZhuDao dao, PublicServer publicServer, YiZhuLuRuDao yiZhuLuRuDao, YiZhuLuRuServer yiZhuLuRuServer, XiangMuLuRuDao xiangMuLuRuDao, HospitalizationCostsService hospitalizationCostsService) {
this.dao = dao;
this.publicServer = publicServer;
this.yiZhuLuRuDao = yiZhuLuRuDao;
this.yiZhuLuRuServer = yiZhuLuRuServer;
this.xiangMuLuRuDao = xiangMuLuRuDao;
this.hospitalizationCostsService = hospitalizationCostsService;
}
public ResultVo> huoQuCaoYaoShuJu(CaoYaoChaXunTiaoJian param) {
QueryWrapper> qw = new QueryWrapper<>();
qw.eq("inpatient_no", param.getPatNo());
qw.eq("admiss_times", param.getTimes());
qw.orderByDesc("input_date");
if (StringUtil.notBlank(param.getStartTime())) {
qw.ge("input_date", param.getStartTime());
qw.le("input_date", param.getEndTime());
}
List list = dao.huoQuCaoYaoShuJu(qw);
if (ListUtil.notBlank(list)) {
for (YzActOrderCy item : list) {
item.setDaiJianFei(item.getQuantityDj().multiply(item.getOrderJeDj()));
item.setJiaGe(item.getQuantity().multiply(item.getOrderJe()));
item.setZongJia(item.getDaiJianFei().add(item.getJiaGe()));
}
}
return ResultVoUtil.success(list);
}
public ResultVo> huoQuChaoYaoMingXi(BigDecimal orderNo) {
return ResultVoUtil.success(dao.huoQuChaoYaoMingXi(orderNo));
}
public ResultVo> fuYongFangFa() {
return ResultVoUtil.success(dao.fuYongFangFa());
}
public ResultVo> huoQuCaoYao(String queryName, Integer groupNo) {
String name = StringUtil.englishToCapital(queryName);
QueryWrapper> qw = new QueryWrapper<>();
qw.and(q -> q
.like("py_code", name)
.or()
.like("name", name)
.or()
.like("d_code", name)
.or()
.like("code", name)
)
.eq("group_no", groupNo);
return ResultVoUtil.success(dao.huoQuCaoYao(qw));
}
public ResultVo> huoQuMuBan(String queryName, String deptCode, long currentPage, long pageSize, long total) {
IPage page = new Page<>(currentPage, pageSize, total == 0);
String name = StringUtil.englishToCapital(queryName);
QueryWrapper> qw = new QueryWrapper<>();
qw.and(q -> q
.like("py_code", name)
.or()
.like("d_code", name)
.or()
.like("pattern_name", name)
);
if (publicServer.noNeedRule(38)) {
if (StringUtil.notBlank(deptCode)) {
qw.eq("dept_code", deptCode);
}
}
qw.groupBy("pattern_name");
dao.huoQuMuBan(page, qw);
return ResultVoUtil.success(page);
}
public ResultVo> muBanXiangQing(String name, String deptCode) {
return ResultVoUtil.success(dao.muBanXiangQing(name, deptCode));
}
public ResultVo chongFuMuBanMing(String name) {
return ResultVoUtil.success(dao.chongFuMuBanMing(name) > 1);
}
public ResultVo cunMuBan(YzOrderPatternCy param) {
log.info("插入模板草药模板:{}", JSON.toJSONString(param));
String py = PingYinUtils.pyShouZiMuDaXie(param.getPatternName());
if (py.length() > 7) {
py = py.substring(0, 7);
}
String wb = PingYinUtils.getWBCode(param.getPatternName());
if (wb.length() > 7) {
wb = wb.substring(0, 7);
}
dao.chaRuMuBan(param.getList(), param.getPatternName(),
TokenUtil.getInstance().getTokenUserId(), py, wb,
param.getDeptCode());
return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE);
}
public ResultVo