kongzy
2024-07-01 47a751cb301d05276ae5d75145d57b2d090fe4e1
src/main/java/com/nanometer/smartlab/service/OpeOrderServiceImpl.java
@@ -1,8 +1,6 @@
package com.nanometer.smartlab.service;
import com.nanometer.smartlab.dao.BaseMetaDao;
import com.nanometer.smartlab.dao.EmailStatusDao;
import com.nanometer.smartlab.dao.OpeOrderDao;
import com.nanometer.smartlab.dao.*;
import com.nanometer.smartlab.entity.*;
import com.nanometer.smartlab.entity.enumtype.ApplyStatus;
import com.nanometer.smartlab.entity.enumtype.ArrivalStatus;
@@ -13,10 +11,12 @@
import com.nanometer.smartlab.exception.AlarmException;
import com.nanometer.smartlab.exception.BusinessException;
import com.nanometer.smartlab.exception.ExceptionEnumCode;
import com.nanometer.smartlab.util.IDUtils;
import com.nanometer.smartlab.util.MessageUtil;
import com.nanometer.smartlab.util.StringToolUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.DuplicateKeyException;
@@ -32,6 +32,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * Created by johnny on 17/12/14.
@@ -49,10 +50,13 @@
    private SysSequenceService sysSequenceService;
    @Resource
    private OpeApplyService opeApplyService;
    @Lazy
    @Resource
    private OpeReagentStatusService opeReagentStatusService;
    @Lazy
    @Resource
    private OpeWarehouseReserveService opeWarehouseReserveService;
    @Lazy
    @Resource
    private OpeUseFlowService opeUseFlowService;
    @Resource
@@ -60,6 +64,14 @@
    @Resource(name="baseMetaDao")
    BaseMetaDao baseMetaDao;
    @Resource
    DangerousEncodeMapper dangerousEncodeMapper;
    @Resource
    OpeReagentCodeDao opeReagentCodeDao;
    @Resource
    OpeApplyDao opeApplyDao;
    @Transactional(propagation = Propagation.REQUIRED)
    public List<OpeOrder> getOpeOrderList(String orderCode, String orderName, Timestamp startTime, Timestamp endTime, Integer status, String orderUserName,
@@ -111,7 +123,7 @@
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public OpeOrder getOpeOrder(String id) {
    public OpeOrder getOpeOrder(Long id) {
        try {
            return this.opeOrderDao.getOpeOrder(id);
        } catch (DataAccessException e) {
@@ -123,7 +135,6 @@
    @Transactional(propagation = Propagation.REQUIRED)
    public OpeOrder insertOpeOrder(OpeOrder opeOrder) {
        try {
            opeOrder.setId(IDUtils.uuid());
            this.opeOrderDao.insertOpeOrder(opeOrder);
            return opeOrder;
        } catch (DuplicateKeyException ex) {
@@ -163,7 +174,7 @@
                return false;
            }
            List<String> ids = new ArrayList<String>();
            List<Long> ids = new ArrayList<Long>();
            for (OpeOrder opeOrder : opeOrderList) {
                ids.add(opeOrder.getId());
@@ -183,31 +194,136 @@
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public void createOpeOrder(OpeOrder opeOrder, List<OpeApply> opeApplyList, SysUser orderUser) {
    public void  createOpeOrder(OpeOrder opeOrder, List<OpeApply> opeApplyList, SysUser orderUser) {
        if (opeOrder == null
                || opeApplyList == null
                || orderUser == null) {
            return;
        }
        opeOrder.setOrderCode(this.sysSequenceService.getOrderCode());
        opeOrder.setStatus(ApplyStatus.PENDING_PURCHASE);
        opeOrder.setConsigneeUserId(null);
        opeOrder.setOrderUserId(orderUser.getId());
        opeOrder.setArrivalTime(null);
        opeOrder.setSupplyId(opeApplyList.get(0).getReagent().getSupplierId());
        opeOrder.setSupplyName(opeApplyList.get(0).getReagent().getSupplierName());
        opeOrder.setSupplierId(opeApplyList.get(0).getReagent().getSupplierId());
        opeOrder.setSupplierName(opeApplyList.get(0).getReagent().getSupplierName());
        this.insertOpeOrder(opeOrder);
        OpeApplyOrder opeApplyOrder = null;
        for (OpeApply opeApply : opeApplyList) {
            opeApply.setStatus(ApplyStatus.PENDING_PURCHASE);
            this.opeApplyService.updateOpeApply(opeApply);
            opeApplyOrder = new OpeApplyOrder();
        List<OpeApplyOrder> opeApplyOrderList = opeApplyList.stream().map(item -> {
            OpeApplyOrder opeApplyOrder = new OpeApplyOrder();
            opeApplyOrder.setOpeOrderId(opeOrder.getId());
            opeApplyOrder.setOpeApplyId(opeApply.getId());
            this.opeApplyOrderService.insertOpeApplyOrder(opeApplyOrder);
            opeApplyOrder.setOpeApplyId(item.getId());
            return opeApplyOrder;
        }).collect(Collectors.toList());
        this.opeApplyOrderService.batchInsertOpeApplyOrder(opeApplyOrderList);
        this.opeApplyService.updateOpeApplyStatus(ApplyStatus.PENDING_PURCHASE,null,opeApplyList.stream().map(OpeApply::getId).collect(Collectors.toList()));
        synchronized(this) {
            generateReagentCode(opeOrder.getId(), opeApplyList);
        }
    }
//    public void  generateReagentCode(Long orderId,List<OpeApply> opeApplyList){
//        List<OpeReagentCode> opeReagentCodeList=new ArrayList<>();
//        for(OpeApply opeApply:opeApplyList) {
//            String applyCode=opeApply.getApplyCode();
//            String name = opeApply.getReagent().getName();
//            if (StringUtils.isBlank(name)) {
//                throw new BusinessException(ExceptionEnumCode.SYS_ERR, "试剂名称为空");
//            }
//            DangerousEncode dangerousEncode = this.dangerousEncodeMapper.selectByName(name);
//            if (dangerousEncode == null) {
//                throw new BusinessException(ExceptionEnumCode.SYS_ERR, "未录入危化品编码");
//            }
//            String containerNumber = dangerousEncode.getContainerNumber();
//            if(StringUtils.isBlank(containerNumber)||containerNumber.length()!=2){
//                throw new BusinessException(ExceptionEnumCode.SYS_ERR, String.format("试剂<%s>柜码不存在或者编码位数不是两位",name));
//            }
//            String factoryfactory = "0";
//            String specifications = "0";
//            String reagentCode = dangerousEncode.getReagentCode();
//            if (StringUtils.isBlank(reagentCode)) {
//                throw new BusinessException(ExceptionEnumCode.SYS_ERR, String.format("试剂<%s>试剂名称码不存在",name));
//            }
//            if(reagentCode.length()<4){
//                reagentCode= StringToolUtils.addZeroForNum(reagentCode,4);
//            }else{
//                reagentCode = reagentCode.substring(reagentCode.length() - 4, reagentCode.length());
//            }
//            String feature = dangerousEncode.getFeature();
//            if (StringUtils.isBlank(feature)||feature.length()!=4) {
//                throw new BusinessException(ExceptionEnumCode.SYS_ERR, String.format("试剂<%s>特性不存在或者编码位数不是四位",name));
//            }
//
//            String avoid = dangerousEncode.getAvoid();
//            if (StringUtils.isBlank(avoid)||avoid.length()!=2) {
//                throw new BusinessException(ExceptionEnumCode.SYS_ERR, String.format("试剂<%s>相忌不存在或者编码位数不是两位",name));
//            }
//            String status = dangerousEncode.getStatus();
//            if (StringUtils.isBlank(status)||status.length()!=2) {
//                throw new BusinessException(ExceptionEnumCode.SYS_ERR, String.format("试剂<%s>状态不存在或者编码位数不是两位",name));
//            }
//            String fire = dangerousEncode.getFire();
//            if (StringUtils.isBlank(fire)||fire.length()!=2) {
//                throw new BusinessException(ExceptionEnumCode.SYS_ERR, String.format("试剂<%s>灭火器不存在或者编码位数不是两位",name));
//            }
//            String packing = "0";
//            StringBuilder prefixBuilder=new StringBuilder().append(containerNumber)
//                    .append(factoryfactory)
//                    .append(specifications)
//                    .append(reagentCode)
//                    .append(feature)
//                    .append(avoid)
//                    .append(status)
//                    .append(fire)
//                    .append(packing);
//            String codePrex=prefixBuilder.toString();
//            OpeReagentCode opeReagentCode=this.opeReagentCodeDao.getMaxReagentCode(codePrex);
//            Integer startCode=0;
//            Integer endCode=startCode+opeApply.getNum()-1;
//            if(opeReagentCode!=null){
//                startCode=opeReagentCode.getEndCode()+1;
//                endCode=startCode+opeApply.getNum()-1;
//            }
//            opeReagentCode=new OpeReagentCode();
//            opeReagentCode.setOrderId(orderId);
//            opeReagentCode.setApplyId(opeApply.getId());
//            opeReagentCode.setStartCode(startCode);
//            opeReagentCode.setEndCode(endCode);
//            opeReagentCode.setCodePrex(codePrex);
//            opeReagentCodeList.add(opeReagentCode);
//        }
//        if(opeReagentCodeList.size()>0){
//            this.opeReagentCodeDao.batchInsertReagentCode(opeReagentCodeList);
//        }
//    }
    public void  generateReagentCode(Long orderId,List<OpeApply> opeApplyList){
        List<OpeReagentCode> opeReagentCodeList=new ArrayList<>();
        for(OpeApply opeApply:opeApplyList) {
            String applyCode=opeApply.getApplyCode();
            applyCode=applyCode.replace("SG","");
            if (opeApply.getNum()>9999 &opeApply.getNum()<=0) {
                throw new BusinessException(ExceptionEnumCode.SYS_ERR, "试剂申请数量不能超过9999");
            }
            StringBuilder prefixBuilder=new StringBuilder().append("SJ")
                    .append(applyCode);
            String codePrex=prefixBuilder.toString();
            OpeReagentCode opeReagentCode=this.opeReagentCodeDao.getMaxReagentCode(codePrex);
            Integer startCode=0;
            Integer endCode=startCode+opeApply.getNum()-1;
            if(opeReagentCode!=null){
                startCode=opeReagentCode.getEndCode()+1;
                endCode=startCode+opeApply.getNum()-1;
            }
            opeReagentCode=new OpeReagentCode();
            opeReagentCode.setOrderId(orderId);
            opeReagentCode.setApplyId(opeApply.getId());
            opeReagentCode.setStartCode(startCode);
            opeReagentCode.setEndCode(endCode);
            opeReagentCode.setCodePrex(codePrex);
            opeReagentCodeList.add(opeReagentCode);
        }
        if(opeReagentCodeList.size()>0){
            this.opeReagentCodeDao.batchInsertReagentCode(opeReagentCodeList);
        }
    }
@@ -218,105 +334,131 @@
            return;
        }
        Integer applyNum = null;
        Integer arrivalNum = null;
        ApplyStatus flag = ApplyStatus.STORAGE;
        // 更新订单所对应的申购状态为已入库
      //  this.updateOpeOrder(opeOrder);
        for (OpeApply opeApply : opeApplyList) {
              applyNum = opeApply.getNum();
              arrivalNum = opeApply.getArrivalNum();
              if(applyNum > arrivalNum)
              {
                 flag = ApplyStatus.UNCOMPLETED;
                 opeApply.setStatus(ApplyStatus.UNCOMPLETED);
              }else
              {
                 opeApply.setStatus(ApplyStatus.STORAGE);
              }
            int existArrivalNum=this.opeApplyDao.getArrivalNumById(opeApply.getId());
            Integer applyNum = opeApply.getNum();
            Integer arrivalNum = opeApply.getArrivalNum();
            if(arrivalNum<=existArrivalNum||arrivalNum>applyNum){
                throw new BusinessException(ExceptionEnumCode.ORDER_ERROR,"到货数量不正确");
            }
            if(applyNum > arrivalNum)
            {
                flag = ApplyStatus.UNCOMPLETED;
                opeApply.setStatus(ApplyStatus.UNCOMPLETED);
            }else
            {
                opeApply.setStatus(ApplyStatus.STORAGE);
            }
            this.opeApplyService.updateOpeApply(opeApply);
        }
     // 更新订单状态为已入库
            OpeReagentCode opeReagentCode=this.opeReagentCodeDao.getReagentCode(opeOrder.getId(),opeApply.getId());
            if(opeReagentCode==null){
                throw new BusinessException(ExceptionEnumCode.SYS_ERR, "申购编号:" + opeApply.getApplyCode() + "的试剂条形码未自动生成");
            }
//            if(opeReagentCode.getStatus()==1){
//                continue;
//            }
            List<OpeReagentStatus> opeReagentStatusList=generateReagentStatus(opeApply,opeReagentCode,opeOrder.getConsigneeUserId(),arrivalNum);
            generateOpeUseFlow(opeReagentStatusList);
            updateWareHouse(opeApply,arrivalNum-existArrivalNum);
            this.opeReagentCodeDao.updateStatus(opeOrder.getId(),opeApply.getId(),1);
        }
        // 更新订单状态为已入库
        opeOrder.setStatus(flag);
        this.updateOpeOrder(opeOrder);
        this.opeOrderDao.updateOpeOrderStatus(opeOrder);
        // 将入库的物品更新库存
        OpeReagentStatus opeReagentStatus = null;
        BigInteger startReagentCode = null;
        BigInteger endReagentCode = null;
        String reagentCode = null;
        OpeWarehouseReserve opeWarehouseReserve = null;
        OpeUseFlow opeUseFlow = null;
        for (OpeApply opeApply : opeApplyList) {
            if(StringUtils.isNotBlank(opeApply.getStartReagentCode()) && StringUtils.isNotBlank(opeApply.getEndReagentCode())){
                startReagentCode = new BigInteger(opeApply.getStartReagentCode());
                endReagentCode = new BigInteger(opeApply.getEndReagentCode());
                for (BigInteger i = startReagentCode; i.compareTo(endReagentCode) < 1; i = i.add(BigInteger.ONE)) {
                    reagentCode = String.valueOf(i);
                    if (this.opeReagentStatusService.isOpeReagentStatusExist(reagentCode)) {
                        throw new BusinessException(ExceptionEnumCode.REAGENT_CODE_EXIST, "申购编号:" + opeApply.getApplyCode() + "的试剂条形码[" + reagentCode + "]已存在。");
                    }
                    opeReagentStatus = new OpeReagentStatus();
                    opeReagentStatus.setReagentId(opeApply.getReagent().getId());
                    opeReagentStatus.setArticleNumber(opeApply.getArticleNumber());
                    opeReagentStatus.setReagentCode(reagentCode);
                    opeReagentStatus.setStatus(ArrivalStatus.WAREHOUSE);
                    opeReagentStatus.setHouseId(opeApply.getHouseId());
                    opeReagentStatus.setContainerId(opeApply.getContainerId());
                    opeReagentStatus.setUserId(opeOrder.getConsigneeUserId());
                    opeReagentStatus.setPlace(opeApply.getPlaceId());
                    opeReagentStatus.setRemainder(opeApply.getReagent().getMainMetering() != null ? (opeApply.getReagent().getMainMetering()) : new BigDecimal(0));
                    opeReagentStatus.setStoreType(StoreType.APPLY);
                    this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus);
                    opeUseFlow = new OpeUseFlow();
                    opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode());
                    opeUseFlow.setStatus(opeReagentStatus.getStatus());
                    opeUseFlow.setHouseId(opeReagentStatus.getHouseId());
                    opeUseFlow.setContainerId(opeReagentStatus.getContainerId());
                    opeUseFlow.setUserId(opeReagentStatus.getUserId());
                    opeUseFlow.setPlace(opeReagentStatus.getPlace());
                    opeUseFlow.setRemainder(opeApply.getReagent().getMainMetering()!=null?(opeApply.getReagent().getMainMetering()):new BigDecimal(0));
                    opeUseFlow.setStoreType(StoreType.APPLY);
                    Map<String, String> metaMap = new HashMap<>();
                    metaMap.put("groupId", "operate_status");
                    metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
                    List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
                    opeUseFlow.setOperateState(baseMetaList.get(0).getId());
                    this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
                }
            }
            opeWarehouseReserve = this.opeWarehouseReserveService.getOpeWarehouseReserve(opeApply.getReagent().getId(), opeApply.getArticleNumber());
            if (opeWarehouseReserve == null) {
                opeWarehouseReserve = new OpeWarehouseReserve();
                opeWarehouseReserve.setReagentId(opeApply.getReagent().getId());
                opeWarehouseReserve.setArticleNumber(opeApply.getArticleNumber());
                opeWarehouseReserve.setReserve(0);
            }
            opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + opeApply.getArrivalNum());
            if (StringUtils.isBlank(opeWarehouseReserve.getId())) {
                this.opeWarehouseReserveService.insertOpeWarehouseReserve(opeWarehouseReserve);
            } else {
                this.opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve);
            }
        }
    }
    public List<OpeApply> getOpeApplyListByOrder(String orderId) {
        List<OpeApply> result = null;
        List<OpeApplyOrder> opeApplyOrderList = this.opeApplyOrderService.getOpeApplyOrderList(orderId, null);
        if (opeApplyOrderList != null && opeApplyOrderList.size() > 0) {
            result = new ArrayList<OpeApply>();
            for (OpeApplyOrder opeApplyOrder : opeApplyOrderList) {
                result.add(this.opeApplyService.getOpeApply(opeApplyOrder.getOpeApplyId()));
    /**
     * 生成试剂流向
     */
    @Override
    public List<OpeReagentStatus> generateReagentStatus(OpeApply opeApply,OpeReagentCode opeReagentCode,Long consigneeUserId,Integer num){
        int startCode=opeReagentCode.getStartCode();
        int endCode=opeReagentCode.getEndCode();
        List<OpeReagentStatus>  opeReagentStatusList=new ArrayList<>();
        int codeSum=0;
        for(int i=startCode;i<=endCode;i++){
            String lastCode=StringToolUtils.addZeroForNum(String.valueOf(i),4);
            String rcode=String.format("%s%s",opeReagentCode.getCodePrex(),lastCode);
            codeSum=codeSum+1;
            if(codeSum>num){
                break;
            }
            if (this.opeReagentStatusService.isOpeReagentStatusExist(rcode)) {
                continue;
            }
            OpeReagentStatus opeReagentStatus = new OpeReagentStatus();
            BeanUtils.copyProperties(opeApply,opeReagentStatus, "id");
            opeReagentStatus.setReagentId(opeApply.getReagent().getId());
            opeReagentStatus.setReagentCode(rcode);
            opeReagentStatus.setStatus(ArrivalStatus.WAREHOUSE.getKey());
            opeReagentStatus.setUserId(consigneeUserId);
            opeReagentStatus.setRemainder(opeApply.getReagent().getMainMetering() != null ? (opeApply.getReagent().getMainMetering()) : new BigDecimal(0));
            opeReagentStatus.setStoreType(StoreType.APPLY.getKey());
            opeReagentStatusList.add(opeReagentStatus);
        }
        if(opeReagentStatusList.size()>0) {
            this.opeReagentStatusService.batchInsertOpeReagentStatus(opeReagentStatusList);
        }
        return opeReagentStatusList;
    }
    /**
    /**
     * 生成试剂流向
     */
    public void generateOpeUseFlow(List<OpeReagentStatus>  opeReagentStatusList){
        List<OpeUseFlow> opeUseFlowList=new ArrayList<>();
        for(OpeReagentStatus opeReagentStatus :opeReagentStatusList){
            OpeUseFlow opeUseFlow = new OpeUseFlow();
            BeanUtils.copyProperties(opeReagentStatus,opeUseFlow,"id");
            opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode());
            opeUseFlow.setOperateState(OperateStatus.WAREHOUSEIN.getKey());
            opeUseFlowList.add(opeUseFlow);
        }
        if(opeUseFlowList.size()>0) {
            this.opeUseFlowService.batchInsertOpeUseFlow(opeUseFlowList);
        }
    }
    /**
     * 更新库存
     */
    public void updateWareHouse(OpeApply opeApply,Integer num){
        OpeWarehouseReserve opeWarehouseReserve = this.opeWarehouseReserveService.getOpeWarehouseReserve(opeApply.getReagent().getId(), opeApply.getArticleNumber());
        if (opeWarehouseReserve == null) {
            opeWarehouseReserve = new OpeWarehouseReserve();
            opeWarehouseReserve.setReagentId(opeApply.getReagent().getId());
            opeWarehouseReserve.setArticleNumber(opeApply.getArticleNumber());
            opeWarehouseReserve.setReserve(0);
            opeWarehouseReserve.setWarehouseId(opeApply.getHouseId());
            opeWarehouseReserve.setContainerId(opeApply.getContainerId());
        }
        opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + num);
        if (opeWarehouseReserve.getId()==null) {
            this.opeWarehouseReserveService.insertOpeWarehouseReserve(opeWarehouseReserve);
        } else {
            this.opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve);
        }
    }
    public List<OpeApply> getOpeApplyListByOrder(Long orderId) {
        List<OpeApply> result = this.opeApplyService.getOpeApplyByOrderId(orderId);
//        List<OpeApplyOrder> opeApplyOrderList = this.opeApplyOrderService.getOpeApplyOrderList(orderId, null);
//        if (opeApplyOrderList != null && opeApplyOrderList.size() > 0) {
//            result = new ArrayList<OpeApply>();
//            for (OpeApplyOrder opeApplyOrder : opeApplyOrderList) {
//                result.add(this.opeApplyService.getOpeApply(opeApplyOrder.getOpeApplyId()));
//            }
//        }
//
//        this.opeApplyService.getOpeApplyByOrderId(orderId);
        return result;
    }
@@ -328,7 +470,7 @@
    }
    @Transactional(propagation = Propagation.REQUIRED)
    public void cancelOrderApply(String orderId) {
    public void cancelOrderApply(Long orderId) {
        List<OpeApply> opeApplyList = this.getOpeApplyListByOrder(orderId);
        if (opeApplyList != null && opeApplyList.size() > 0) {
            for (OpeApply opeApply : opeApplyList) {
@@ -346,10 +488,9 @@
        for (OpeApply opeApply : opeApplyList) {
            emailStatus = new EmailStatus();
            emailStatus.setId(IDUtils.uuid());
            emailStatus.setOrderCode(opeOrder.getOrderCode());
            emailStatus.setApplyCode(opeApply.getApplyCode());
            emailStatus.setReagentId(opeApply.getReagent().getId());
            emailStatus.setReagentId(opeApply.getReagentId());
            emailStatus.setNum(opeApply.getArrivalNum());
            emailStatus.setApplyUserId(opeApply.getApplyUserId());
            emailStatus.setStatus(EmailSendStatus.UN_SEND);
@@ -452,7 +593,7 @@
                opeWarehouseReserve.setReserve(0);
            }
            opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() - opeApply1.getArrivalNum());
            if (StringUtils.isBlank(opeWarehouseReserve.getId())) {
            if (opeWarehouseReserve.getId()==null) {
                this.opeWarehouseReserveService.insertOpeWarehouseReserve(opeWarehouseReserve);
            } else {
                this.opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve);
@@ -466,16 +607,27 @@
    }
    @Override
    public List<EmailStatus> selectByReId(String id) {
    public List<EmailStatus> selectByReId(Long id) {
        return this.emailStatusDao.selectByReId(id);
    }
    @Override
    public void updateByReId(String newReId, String oldReId) {
    public void updateByReId(Long newReId, Long oldReId) {
        Map<String, Object> params=new HashMap();
        params.put("newReId",newReId);
        params.put("oldReId",oldReId);
        this.emailStatusDao.updateByReId(params);
    }
    @Override
    public OpeOrder getOrder(Long id) {
        return opeOrderDao.selectParentOrder(id);
    }
    @Override
    @Transactional
    public void updateOpeOrderStatus(OpeOrder oo) {
        opeOrderDao.updateOpeOrderStatus(oo);
    }
}