李宇
2021-08-18 c3510da29a7974c6af7ff3de1ade3db429d6f848
src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java
@@ -1,6 +1,7 @@
package com.nanometer.smartlab.service;
import com.nanometer.smartlab.dao.BaseMetaDao;
import com.nanometer.smartlab.dao.OpeReagentStatusDao;
import com.nanometer.smartlab.dao.SysWarehouseDao;
import com.nanometer.smartlab.entity.*;
import com.nanometer.smartlab.entity.dto.InWarehouseInfoDto;
@@ -23,10 +24,8 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * Created by cmower on 17/11/20.
@@ -52,6 +51,10 @@
    OpeUseFlowService opeUseFlowService;
    @Resource
    OpeWarehouseReserveService opeWarehouseReserveService;
    @Resource
    private SysLaboratoryService sysLaboratoryService;
    @Resource
    private OpeReagentStatusDao opeReagentStatusDao;
    @Transactional(propagation = Propagation.REQUIRED)
    public List<SysWarehouse> getSysWarehouseList(String type, String name, Integer first, Integer pageSize) {
@@ -168,7 +171,7 @@
   public List<SysWarehouse> getAllSysWarehouseList() {
      return this.sysWarehouseDao.getAllSysWarehouseList();
   }
   @Transactional(propagation = Propagation.REQUIRED)
    public boolean isSysWarehouseExist(String barCode, String editId) {
        try {
@@ -224,6 +227,21 @@
                String reagentName = dangerousEncodes.get(0).getReagentName();
                String cas = dangerousEncodes.get(0).getCas();
                //危险性质 reagent_character
                String dangerousInfo = dangerousEncodes.get(0).getMemo();
                BaseMeta meta = baseMetaService.getBaseMeta("reagent_character", null, dangerousInfo);
                BaseMeta baseMeta = new BaseMeta();
                if (meta == null){
                    baseMeta.setId(IDUtils.uuid());
                    baseMeta.setGroupId("reagent_character");
                    baseMeta.setValidFlag(ValidFlag.VALID);
                    baseMeta.setMetaValue(dangerousInfo);
                    baseMeta.setMetaKey(dangerousInfo);
                    baseMetaService.insertBaseMeta(baseMeta);
                }else{
                    baseMeta = meta;
                }
                //查找是否存在试剂
                List<SysReagent> reagent = sysReagentService
                        .getReagent(reagentName, cas, factory.getId(), specifications.getId(), packing.getId());
@@ -243,6 +261,8 @@
                    sr.setProductHome(factory.getId());
                    sr.setReagentFormat(specifications.getId());
                    sr.setReagentUnit(packing.getId());
                    //危险性质
                    sr.setReagentCharacter(baseMeta.getId());
                    //设备生成试剂类型 为3
                    sr.setType(3);
                    sr.setDangerousFlag(DangerousFlag.NORMAL);
@@ -290,6 +310,7 @@
                    opeWarehouseReserve.setArticleNumber(inWarehouseInfo.getArticleNumber());
                    opeWarehouseReserve.setReserve(0);
                    opeWarehouseReserve.setWarehouseId(inWarehouseInfo.getWarehouseId());
                    opeWarehouseReserve.setUserId("admin");
                }
                //库存加1
                opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + 1);
@@ -307,17 +328,60 @@
    @Override
    @Transactional
    public void reagentReceiving(ReagentReceivingDto reagentReceiving) {
        String number = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
        String receiptNum = "BS" + number;
        reagentReceiving.getReagentCode().forEach(code->{
                //
            OpeReagentStatus ors = opeReagentStatusService.getOpeReagentStatusByReagentCode(code);
            //1.更新试剂状态  在仓库-》领用
            ors.setStatus(ArrivalStatus.PERSONAL);
//            ors.setStatus(ArrivalStatus.PERSONAL);
            ors.setContainerId(reagentReceiving.getLabContainerId());
            ors.setHouseId(reagentReceiving.getLabId());
            ors.setUserId(reagentReceiving.getApplyUserId());
            opeReagentStatusService.updateReagentStatus(ors);
            if (opeReagentStatusService.isAllowWarehouseUse(ors)) {
                // 减少库存
                OpeWarehouseReserve opeWarehouseReserve = opeWarehouseReserveService.getOpeWarehouseReserve(
                        ors.getReagent().getId(), ors.getArticleNumber());
                opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() - 1);
                opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve);
            }
            ors.setStatus(ArrivalStatus.NOREGISTER);
            opeReagentStatusDao.updateOpeReagentStatusDao(ors);
            OpeUseFlow opeUseFlow = new OpeUseFlow();
            opeUseFlow.setReagentCode(ors.getReagentCode());
            opeUseFlow.setStatus(ors.getStatus());
            opeUseFlow.setHouseId(ors.getHouseId());
            opeUseFlow.setContainerId(ors.getContainerId());
            opeUseFlow.setUserId(ors.getUserId());
            opeUseFlow.setPlace(ors.getPlace());
            opeUseFlow.setRemainder(ors.getRemainder());
            //新增 领用单号
            opeUseFlow.setReceiptNumber(receiptNum);
            Map<String, String> metaMap = new HashMap<>();
            metaMap.put("groupId", "operate_status");
            metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
            List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
            opeUseFlow.setOperateState(baseMetaList.get(0).getId());
            this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
        });
    }
    @Override
    @Transactional
    public void updateSysWarehouse2(SysWarehouse sysWarehouse, SysLaboratory sysLaboratory) {
        //1.0更新自己
        this.updateSysWarehouse(sysWarehouse);
        //2.更新实验室
        sysLaboratory.setInfoCode(sysWarehouse.getInfoCode());
        sysLaboratory.setBarCode(sysWarehouse.getBarCode());
        sysLaboratory.setLocation1(sysWarehouse.getLocation1());
        sysLaboratory.setLocation2(sysWarehouse.getLocation2());
        sysLaboratory.setDepartment(sysWarehouse.getDepartment());
        sysLaboratoryService.updateSysLaboratory(sysLaboratory);
    }
}