123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- package thyyxxk.webserver.service.zhuyuanyiji;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import thyyxxk.webserver.config.exception.ExceptionEnum;
- import thyyxxk.webserver.dao.his.zhuyuanyiji.MedicineManagementDao;
- import thyyxxk.webserver.entity.ResultVo;
- import thyyxxk.webserver.entity.medicaltechnology.FetchMedicines;
- import thyyxxk.webserver.entity.medicaltechnology.MedicinePage;
- import thyyxxk.webserver.entity.medicaltechnology.PoisonousAnesthetics;
- import thyyxxk.webserver.service.PublicServer;
- import thyyxxk.webserver.utils.ResultVoUtil;
- import thyyxxk.webserver.utils.StringUtil;
- import thyyxxk.webserver.utils.TokenUtil;
- import java.math.BigDecimal;
- import java.util.*;
- @Slf4j
- @Service
- public class MedicineManagementService {
- private final MedicineManagementDao dao;
- private final PublicServer publicService;
- @Autowired
- public MedicineManagementService(MedicineManagementDao dao, PublicServer publicService) {
- this.dao = dao;
- this.publicService = publicService;
- }
- public ResultVo<List<MedicinePage>> fetchMedicinePages(FetchMedicines params) {
- transformDateToDatetime(params);
- buildChildDepartments(params);
- List<MedicinePage> list = dao.selectMedicinePages(params);
- if (list.isEmpty()) {
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
- }
- return ResultVoUtil.success(list);
- }
- public ResultVo<List<MedicinePage>> fetchUsedMedicines(FetchMedicines params) {
- transformDateToDatetime(params);
- buildChildDepartments(params);
- List<MedicinePage> list = dao.selectUsedMedicines(params);
- if (list.isEmpty()) {
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
- }
- return ResultVoUtil.success(list);
- }
- public ResultVo<List<MedicinePage>> submitMedicinePages(FetchMedicines newMedicinePage) {
- if (StringUtil.isBlank(newMedicinePage.getChargeCodes())) {
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "请勾选需要提交的药品。");
- }
- int pageNo = publicService.getTheDrugListNo();
- dao.deleteExistTargetPageNo(pageNo);
- transformDateToDatetime(newMedicinePage);
- newMedicinePage.setPageNo(pageNo);
- dao.insertNewPageNo(newMedicinePage);
- dao.submitMedicinePages(newMedicinePage);
- log.info("【操作员:{}】提交药品单:{}", TokenUtil.getTokenUserId(), newMedicinePage);
- return ResultVoUtil.success(dao.selectMedicinePages(newMedicinePage));
- }
- public ResultVo<Map<String, Object>> fetchPoisonousAnesthetics(FetchMedicines params) {
- transformDateToDatetime(params);
- List<PoisonousAnesthetics> list = dao.selectPoisonousAnesthetics(params);
- if (list.isEmpty()) {
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
- }
- Map<String, List<PoisonousAnesthetics>> medicines = new TreeMap<>();
- for (PoisonousAnesthetics item : list) {
- String key = item.getChargeDate() + "^" + item.getChargeCode();
- if (medicines.containsKey(key)) {
- medicines.get(key).add(item);
- } else {
- List<PoisonousAnesthetics> temp = new ArrayList<>();
- temp.add(item);
- medicines.put(key, temp);
- }
- }
- Map<String, BigDecimal> amounts = new HashMap<>();
- for (Map.Entry<String, List<PoisonousAnesthetics>> entry : medicines.entrySet()) {
- BigDecimal sum = BigDecimal.ZERO;
- for (PoisonousAnesthetics item : entry.getValue()) {
- sum = sum.add(item.getChargeAmount());
- }
- amounts.put(entry.getKey(), sum);
- }
- Map<String, Object> map = new HashMap<>();
- map.put("medicines", medicines);
- map.put("amounts", amounts);
- return ResultVoUtil.success(map);
- }
- private void transformDateToDatetime(FetchMedicines params) {
- params.setStart(params.getStart() + " 00:00:00.000");
- params.setEnd(params.getEnd() + " 23:59:59.999");
- }
- private void buildChildDepartments(FetchMedicines params) {
- String dept = params.getDept();
- List<String> children = dao.selectChildDepartments(dept);
- StringBuilder builder = new StringBuilder();
- builder.append("'").append(dept).append("'");
- for (String child : children) {
- builder.append(",'").append(child).append("'");
- }
- params.setDept(builder.toString());
- }
- }
|