李宇
2021-01-27 d6c65a4e3d1ca7d9a7bd6806c99fee035d0a44eb
src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
@@ -1,21 +1,19 @@
package com.nanometer.smartlab.service;
import java.math.BigDecimal;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.annotation.Resource;
import javax.ejb.EJB;
import com.nanometer.smartlab.dao.BaseMetaDao;
import com.nanometer.smartlab.dao.SysLaboratoryContainerDao;
import com.nanometer.smartlab.dao.SysWarehouseContainerDao;
import com.nanometer.smartlab.entity.*;
import com.nanometer.smartlab.entity.enumtype.OperateStatus;
import com.nanometer.smartlab.util.Constants;
import com.nanometer.smartlab.util.Utils;
import com.sun.org.apache.regexp.internal.RE;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.log4j.Logger;
@@ -54,6 +52,14 @@
    @Resource
    private SysUserService sysUserService;
    @Resource
    private OpeReagentStatusService opeReagentStatusService;
    @Resource
    private OpeUseFlowService opeUseFlowService;
    @Resource
    private SysReagentService sysReagentService;
    @Resource
    private BaseMetaDao baseMetaDao;
    @Transactional(propagation = Propagation.REQUIRED)
@@ -363,4 +369,89 @@
    public OpeUseFlow getOpeUseFlowByCode(String reagentCode) {
        return opeUseFlowDao.getOpeUseFlowByCode(reagentCode);
    }
    @Override
    public void updateReceiptNumber(String code, String receiptNumber) {
        opeUseFlowDao.updateReceiptNumber(code, receiptNumber);
    }
    @Transactional
    public void updateReceiptNumberByCode(List<OpeApplyReserve> selectedTmpOrderList,String receiptNumber) {
        for (OpeApplyReserve oar : selectedTmpOrderList) {
            //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向
            List<String> codeTmp = opeReagentStatusService
                    .generateReagentCode(oar.getStartReagentCode2(), oar.getEndReagentCode2());
            assert codeTmp.size() > 0;
            if (oar.getFlag() == 1) {
                //库中领取 code存的是 试剂状态的id
                for (String statusId : codeTmp) {
                    String code = opeReagentStatusService.getOpeReagentStatus(statusId).getReagentCode();
                    //此时状态为领用待入库
                    opeUseFlowService.updateReceiptNumber(code, receiptNumber);
                }
            }else{
                for (String code : codeTmp) {
                    opeUseFlowService.updateReceiptNumber(code, receiptNumber);
                }
            }
        }
    }
    @Override
    public Map<String, Integer> getRegentInfoFromReceiptNumber(String receiptNumber) {
        List<Map> maps = opeUseFlowDao.getRegentInfoFromReceiptNumber(receiptNumber);
        if (maps.size() > 0) {
            Map<String, Integer> printInfo = new HashMap<>();
            for (Map map : maps) {
                Integer count =Integer.parseInt(String.valueOf(map.get("count")));;
                String reagentId = (String) map.get("reagentId");
                SysReagent reagent = sysReagentService.getSysReagent(reagentId);
                printInfo.put(reagent.getId(), count);
            }
            return printInfo;
        }
        return null;
    }
    @Override
    public Map getApplyUserByReagentCode(String reagentCode) {
        Map<String, String> metaMap2 = new HashMap<>();
        metaMap2.put("groupId", "operate_status");
        metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
        List<BaseMeta> baseMetaList2 = baseMetaDao.getBaseMetaList(metaMap2);
        String id = baseMetaList2.get(0).getId();
        return opeUseFlowDao.getUserIdByReagentCode(reagentCode, id);
    }
    @Override
    public void updateReceiptNumberByCode2(List<OpeWarehouseReserve> selectTmpList, String receiptNumber) {
        for (OpeWarehouseReserve owr : selectTmpList) {
            //根据id或者试剂的条码直接查找 状态表单 查询订单所有的流向
            List<String> codeTmp = opeReagentStatusService
                    .generateReagentCode(owr.getStartReagentCode2(), owr.getEndReagentCode2());
            assert codeTmp.size() > 0;
            if (owr.getFlag() == 1) {
                //库中领取 code存的是 试剂状态的id
                for (String statusId : codeTmp) {
                    String code = opeReagentStatusService.getOpeReagentStatus(statusId).getReagentCode();
                    //此时状态为领用待入库
                    opeUseFlowService.updateReceiptNumber(code, receiptNumber);
                }
            }else{
                for (String code : codeTmp) {
                    opeUseFlowService.updateReceiptNumber(code, receiptNumber);
                }
            }
        }
    }
}