|  | @@ -1,15 +1,18 @@
 | 
	
		
			
				|  |  |  package thyyxxk.webserver.service.zhuyuanyiji;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
	
		
			
				|  |  |  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.AsidePage;
 | 
	
		
			
				|  |  |  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.service.redislike.RedisLikeService;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.ResultVoUtil;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.StringUtil;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.TokenUtil;
 | 
	
	
		
			
				|  | @@ -22,17 +25,18 @@ import java.util.*;
 | 
	
		
			
				|  |  |  public class MedicineManagementService {
 | 
	
		
			
				|  |  |      private final MedicineManagementDao dao;
 | 
	
		
			
				|  |  |      private final PublicServer publicService;
 | 
	
		
			
				|  |  | +    private final RedisLikeService redis;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    public MedicineManagementService(MedicineManagementDao dao, PublicServer publicService) {
 | 
	
		
			
				|  |  | +    public MedicineManagementService(MedicineManagementDao dao, PublicServer publicService, RedisLikeService redis) {
 | 
	
		
			
				|  |  |          this.dao = dao;
 | 
	
		
			
				|  |  |          this.publicService = publicService;
 | 
	
		
			
				|  |  | +        this.redis = redis;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public ResultVo<List<MedicinePage>> fetchMedicinePages(FetchMedicines params) {
 | 
	
		
			
				|  |  |          transformDateToDatetime(params);
 | 
	
		
			
				|  |  | -        buildChildDepartments(params);
 | 
	
		
			
				|  |  | -        List<MedicinePage> list = dao.selectMedicinePages(params);
 | 
	
		
			
				|  |  | +        List<MedicinePage> list = dao.selectMedicinePages(buildFetchPageNoQw(params));
 | 
	
		
			
				|  |  |          if (list.isEmpty()) {
 | 
	
		
			
				|  |  |              return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -49,18 +53,31 @@ public class MedicineManagementService {
 | 
	
		
			
				|  |  |          return ResultVoUtil.success(list);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public ResultVo<List<MedicinePage>> submitMedicinePages(FetchMedicines newMedicinePage) {
 | 
	
		
			
				|  |  | -        if (StringUtil.isBlank(newMedicinePage.getChargeCodes())) {
 | 
	
		
			
				|  |  | +    public ResultVo<List<MedicinePage>> submitMedicinePages(FetchMedicines params) {
 | 
	
		
			
				|  |  | +        if (StringUtil.isBlank(params.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));
 | 
	
		
			
				|  |  | +        transformDateToDatetime(params);
 | 
	
		
			
				|  |  | +        params.setPageNo(pageNo);
 | 
	
		
			
				|  |  | +        dao.insertNewPageNo(params);
 | 
	
		
			
				|  |  | +        dao.submitMedicinePages(params);
 | 
	
		
			
				|  |  | +        log.info("【操作员:{}】提交药品单:{}", TokenUtil.getTokenUserId(), params);
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(dao.selectMedicinePages(buildFetchPageNoQw(params)));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private QueryWrapper<?> buildFetchPageNoQw(FetchMedicines params) {
 | 
	
		
			
				|  |  | +        QueryWrapper<?> qw = new QueryWrapper<>();
 | 
	
		
			
				|  |  | +        qw.ge("charge_date", params.getStart())
 | 
	
		
			
				|  |  | +                .le("charge_date", params.getEnd())
 | 
	
		
			
				|  |  | +                .eq("isnull(a.page_no,0)", "0")
 | 
	
		
			
				|  |  | +                .eq("isnull(confirm_flag,'0')", "0")
 | 
	
		
			
				|  |  | +                .eq("a.group_no", "73")
 | 
	
		
			
				|  |  | +                .apply(" a.charge_code=b.code and isnull(a.serial,'01')=b.serial")
 | 
	
		
			
				|  |  | +                .in("exec_unit", publicService.getChildDeptByUserCode(false))
 | 
	
		
			
				|  |  | +                .groupBy("b.code,b.serial having sum(a.amount)!=0");
 | 
	
		
			
				|  |  | +        return qw;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public ResultVo<Map<String, Object>> fetchPoisonousAnesthetics(FetchMedicines params) {
 | 
	
	
		
			
				|  | @@ -94,6 +111,35 @@ public class MedicineManagementService {
 | 
	
		
			
				|  |  |          return ResultVoUtil.success(map);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    public ResultVo<List<AsidePage>> fetchSubmittedPageNos(FetchMedicines params) {
 | 
	
		
			
				|  |  | +        transformDateToDatetime(params);
 | 
	
		
			
				|  |  | +        QueryWrapper<?> qw = new QueryWrapper<>();
 | 
	
		
			
				|  |  | +        qw.ge("charge_date", params.getStart())
 | 
	
		
			
				|  |  | +                .le("charge_date", params.getEnd())
 | 
	
		
			
				|  |  | +                .gt("page_no", 0).eq("group_no", "73")
 | 
	
		
			
				|  |  | +                .in("exec_unit", publicService.getChildDeptByUserCode(false))
 | 
	
		
			
				|  |  | +                .groupBy("page_no,exec_unit");
 | 
	
		
			
				|  |  | +        if (null != params.getPageNo()) {
 | 
	
		
			
				|  |  | +            qw.eq("page_no", params.getPageNo());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        List<AsidePage> list = dao.selectSubmittedPageNos(qw);
 | 
	
		
			
				|  |  | +        if (list.isEmpty()) {
 | 
	
		
			
				|  |  | +            return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        list.forEach(item -> item.setConfirmId(redis.getEmployeeName(item.getConfirmId())));
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(list);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public ResultVo<List<MedicinePage>> fetchMedicinePageDetail(AsidePage params) {
 | 
	
		
			
				|  |  | +        QueryWrapper<?> qw = new QueryWrapper<>();
 | 
	
		
			
				|  |  | +        qw.eq("a.page_no", params.getPageNo())
 | 
	
		
			
				|  |  | +                .eq("a.group_no", "73")
 | 
	
		
			
				|  |  | +                .eq("a.exec_unit", params.getExecUnit())
 | 
	
		
			
				|  |  | +                .apply("a.charge_code=b.code and isnull(a.serial,'01')=b.serial")
 | 
	
		
			
				|  |  | +                .groupBy("b.code,b.serial having sum(a.amount)!=0");
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(dao.fetchMedicinePageDetail(qw));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private void transformDateToDatetime(FetchMedicines params) {
 | 
	
		
			
				|  |  |          params.setStart(params.getStart() + " 00:00:00.000");
 | 
	
		
			
				|  |  |          params.setEnd(params.getEnd() + " 23:59:59.999");
 |