package com.nanometer.smartlab.service; import com.nanometer.smartlab.dao.OpeApplyDao; import com.nanometer.smartlab.entity.OpeApply; import com.nanometer.smartlab.entity.OpeApplyReserve; import com.nanometer.smartlab.entity.OpeOrder; import com.nanometer.smartlab.entity.SysUser; import com.nanometer.smartlab.entity.enumtype.ApplyStatus; import com.nanometer.smartlab.entity.enumtype.SeeFlag; import com.nanometer.smartlab.exception.AlarmCode; 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 org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by johnny on 17/12/12. */ @Service("opeApplyService") public class OpeApplyServiceImpl implements OpeApplyService { private static Logger logger = Logger.getLogger(OpeApplyService.class); @Resource(name = "opeApplyDao") OpeApplyDao opeApplyDao; @Resource OpeOrderService opeOrderService; @Resource OpeReagentStatusService opeReagentStatusService; @Resource OpeWarehouseReserveService opeWarehouseReserveService; @Resource private SysUserService sysUserService; @Transactional(propagation = Propagation.REQUIRED) public List getOpeApplyList(String reagentName, Timestamp startDeadline, Timestamp endDeadline, Integer status, String applyUserId, String approveUserId, String queryCas, Integer first, Integer pageSize,String applyCode,String applyUserName) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(reagentName)) { params.put("reagentName", "%" + reagentName + "%"); } params.put("startDeadline", startDeadline); params.put("endDeadline", endDeadline); params.put("status", status); if (StringUtils.isNotBlank(applyUserId)) { SysUser sysUser = sysUserService.getSysUser(applyUserId); // 不是管理员时,加入applyUserId if (sysUser.getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()) { params.put("applyUserId", applyUserId); } if("连悦".equals(sysUser.getName())){ params.remove("applyUserId"); } } params.put("approveUserId", approveUserId); if (StringUtils.isNotBlank(queryCas)) { params.put("cas", "%" + queryCas + "%"); } params.put("first", first); params.put("pageSize", pageSize); params.put("applyCode", applyCode); params.put("applyUserName", applyUserName); return this.opeApplyDao.getOpeApplyList(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public List getOpeApplyListForApproval(String applyUserName,String approvaUserName,String reagentName, Timestamp startDeadline, Timestamp endDeadline, Integer status, String applyUserId, String approveUserId, String queryCas, Integer first, Integer pageSize,String applyCode,String searchApproval) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(reagentName)) { params.put("reagentName", "%" + reagentName + "%"); } params.put("startDeadline", startDeadline); params.put("endDeadline", endDeadline); params.put("status", status); params.put("searchApproval",searchApproval); if (StringUtils.isNotBlank(approveUserId)) { SysUser sysUser = sysUserService.getSysUser(approveUserId); // 不是管理员时,加入applyUserId if (sysUser.getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()) { params.put("approveUserId", approveUserId); } } params.put("applyUserId", applyUserId); if (StringUtils.isNotBlank(queryCas)) { params.put("cas", "%" + queryCas + "%"); } if (StringUtils.isNotBlank(approvaUserName)) { params.put("approvaUserName", "%" + approvaUserName + "%"); } if (StringUtils.isNotBlank(applyUserName)) { params.put("applyUserName", "%" + applyUserName + "%"); } params.put("first", first); params.put("pageSize", pageSize); params.put("applyCode", applyCode); return this.opeApplyDao.getOpeApplyList(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public int getOpeApplyTotalCountForApproval(String applyUserName,String approvaUserName,String reagentName, Timestamp startDeadline, Timestamp endDeadline, Integer status, String applyUserId, String approveUserId, String queryCas,String applyCode,String searchApproval) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(reagentName)) { params.put("reagentName", "%" + reagentName + "%"); } params.put("startDeadline", startDeadline); params.put("endDeadline", endDeadline); params.put("status", status); params.put("searchApproval",searchApproval); if (StringUtils.isNotBlank(approveUserId)) { SysUser sysUser = sysUserService.getSysUser(approveUserId); // 不是管理员时,加入applyUserId if (sysUser.getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()) { params.put("approveUserId", approveUserId); } } if (StringUtils.isNotBlank(approvaUserName)) { params.put("approvaUserName", "%" + approvaUserName + "%"); } if (StringUtils.isNotBlank(applyUserName)) { params.put("applyUserName", "%" + applyUserName + "%"); } params.put("applyUserId", applyUserId); if (StringUtils.isNotBlank(queryCas)) { params.put("cas", "%" + queryCas + "%"); } params.put("applyCode", applyCode); return this.opeApplyDao.getOpeApplyTotalCount(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public int getOpeApplyTotalCount(String reagentName, Timestamp startDeadline, Timestamp endDeadline, Integer status, String applyUserId, String approveUserId, String queryCas,String applyCode,String applyUserName) { try { Map params = new HashMap(); if (StringUtils.isNotBlank(reagentName)) { params.put("reagentName", "%" + reagentName + "%"); } params.put("startDeadline", startDeadline); params.put("endDeadline", endDeadline); params.put("status", status); if (StringUtils.isNotBlank(applyUserId)) { SysUser sysUser = sysUserService.getSysUser(applyUserId); // 不是管理员时,加入applyUserId if (sysUser.getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()) { params.put("applyUserId", applyUserId); } if("连悦".equals(sysUser.getName())){ params.remove("applyUserId"); } } params.put("approveUserId", approveUserId); params.put("applyUserName", applyUserName); if (StringUtils.isNotBlank(queryCas)) { params.put("cas", "%" + queryCas + "%"); } params.put("applyCode", applyCode); return this.opeApplyDao.getOpeApplyTotalCount(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public OpeApply getOpeApply(String id) { try { return this.opeApplyDao.getOpeApply(id); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public OpeApply insertOpeApply(OpeApply opeApply) { try { opeApply.setId(IDUtils.uuid()); this.opeApplyDao.insertOpeApply(opeApply); return opeApply; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public List insertOpeApplyList(List opeApplyList) { try { this.opeApplyDao.insertOpeApplyList(opeApplyList); return opeApplyList; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updateOpeApply(OpeApply opeApply) { try { int row = this.opeApplyDao.updateOpeApply(opeApply); if (row == 0) { return false; } return true; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updateFirst(String id) { try { Map params = new HashMap(); params.put("id",id); int row = this.opeApplyDao.updateFirst(params); if (row == 0) { return false; } return true; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updateFirst2(String id) { try { Map params = new HashMap(); params.put("id",id); int row = this.opeApplyDao.updateFirst2(params); if (row == 0) { return false; } return true; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updateOpeApplyProject(String newObjective,String oldObjective) { try { Map params = new HashMap(); params.put("newObjective", newObjective); params.put("oldObjective", oldObjective); int row = this.opeApplyDao.updateOpeApplyProject(params); return true; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Override public boolean updateSelectedOpeApplyStatus(String memo, List applyIds, String adminUserId, List adminApplyIds,List firstUserIds) { boolean apply = false, adminApply = false; if (!CollectionUtils.isEmpty(applyIds)) { apply = this.updateOpeApplyStatus(ApplyStatus.APPROVED, memo, applyIds); } if (!CollectionUtils.isEmpty(adminApplyIds)) { adminApply = this.updateOpeApplyAdminStatus2(memo, adminApplyIds, adminUserId,firstUserIds); } return apply || adminApply; } @Transactional(propagation = Propagation.REQUIRED) public boolean updateOpeApplyStatus(ApplyStatus status, String memo, List applyIds) { try { Map params = new HashMap(); params.put("status", status.getKey()); params.put("memo", memo); params.put("applyIds", applyIds); int row = this.opeApplyDao.updateOpeApplyStatus(params); if (row == 0) { return false; } return true; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updateOpeApplyAdminStatus2(String memo, List applyIds, String adminUserId,List firstUserIds) { try { for(int i=0;i params = new HashMap(); params.put("userId", adminUserId); params.put("memo", memo); params.put("id", applyIds.get(i)); params.put("beforeUserId",firstUserIds.get(i)); int row = this.opeApplyDao.updateOpeApplyAdmin2(params); if (row == 0) { return false; } } return true; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updateOpeApplyAdminStatus(String memo, List applyIds, String adminUserId,List firstUserIds) { try { Map params = new HashMap(); params.put("userId", adminUserId); params.put("memo", memo); params.put("applyIds", applyIds); params.put("firstUserIds",firstUserIds); int row = this.opeApplyDao.updateOpeApplyAdmin(params); if (row == 0) { return false; } return true; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Transactional(propagation = Propagation.REQUIRED) public boolean deleteOpeApply(List opeApplyList) { try { if (opeApplyList == null || opeApplyList.size() == 0) { return false; } List ids = new ArrayList(); for (OpeApply opeApply : opeApplyList) { ids.add(opeApply.getId()); } int row = this.opeApplyDao.deleteOpeApply(ids); if (row == 0) { return false; } return true; } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } public boolean isApplyPendingApproval(OpeApply opeApply) { if (opeApply != null && opeApply.getStatus() != null && opeApply.getStatus().getKey() == ApplyStatus.PENDING_APPROVAL.getKey()) { return true; } return false; } public boolean isApplyApproved(OpeApply opeApply) { if (opeApply != null && opeApply.getStatus() != null && opeApply.getStatus().getKey() == ApplyStatus.APPROVED.getKey()) { return true; } return false; } public boolean isAllowApplyCancel(OpeApply opeApply) { if (this.isApplyPendingApproval(opeApply) || this.isApplyApproved(opeApply)) { return true; } return false; } @Override public OpeApply selectOpeApplyByPrimaryKey(String id) { try { OpeApply info = this.opeApplyDao.selectOpeApplyByPrimaryKey(id); return info; } catch (DuplicateKeyException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_DUPLICATE, MessageUtil.getMessage(AlarmCode.DATA_DUPLICATE.getCode())); } catch (DataIntegrityViolationException ex) { logger.warn(ex.getMessage(), ex); throw new AlarmException(AlarmCode.DATA_CONFICT, MessageUtil.getMessage(AlarmCode.DATA_CONFICT.getCode())); } catch (DataAccessException ex) { logger.error(ex.getMessage(), ex); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex); } } @Override public int getOpeApplyReserveTotalCountByName(String id,String reagentName, String personName) { try { Map params = new HashMap(); params.put("reagentName", reagentName); params.put("personName", personName); params.put("userId",id); return this.opeApplyDao.getOpeApplyReserveTotalCount(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Override public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status) { try { Map params = new HashMap(); params.put("reagentName", reagentName); params.put("personName", personName); params.put("userId",id); params.put("productSn",productSn); params.put("applyCode",applyCode); params.put("status",status); return this.opeApplyDao.getOpeApplyReserveTotalCountFor(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Override public List getOpeApplyReserveListByNameFor(String id,String reagentName, String personName, Integer first, Integer pageSize,String productSn,String applyCode,Integer status) { try { Map params = new HashMap(); params.put("reagentName", reagentName); params.put("personName", personName); params.put("userId",id); params.put("first", first); params.put("pageSize", pageSize); params.put("productSn",productSn); params.put("applyCode",applyCode); params.put("status",status); return this.opeApplyDao.getOpeApplyReserveListFor(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Override public List getOpeApplyReserveListByName(String id,String reagentName, String personName, Integer first, Integer pageSize) { try { Map params = new HashMap(); params.put("reagentName", reagentName); params.put("personName", personName); params.put("userId",id); params.put("first", first); params.put("pageSize", pageSize); return this.opeApplyDao.getOpeApplyReserveList(params); } catch (DataAccessException e) { logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updaetOpeApplyPrice(BigDecimal applyPrice, String id){ try{ Map params = new HashMap(); params.put("applyPrice", applyPrice); params.put("id", id); int row = this.opeApplyDao.updaetOpeApplyPrice(params); if (row == 0) { return false; } return true; }catch (DataAccessException e){ logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public boolean updaetOpeApplyStockFlag(int stockFlag, String id){ try{ Map params = new HashMap(); params.put("stockFlag", stockFlag); params.put("id", id); int row = this.opeApplyDao.updaetOpeApplyStockFlag(params); if (row == 0) { return false; } return true; }catch (DataAccessException e){ logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public boolean cancelApply(ApplyStatus status,String id){ try{ Map params = new HashMap(); params.put("status", status.getKey()); params.put("id", id); int row = this.opeApplyDao.cancelApply(params); if (row == 0) { return false; } return true; }catch (DataAccessException e){ logger.error(e.getMessage(), e); throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e); } } @Transactional(propagation = Propagation.REQUIRED) public ListselectByReId(String id){ return this.opeApplyDao.selectByReId(id); } @Transactional(propagation = Propagation.REQUIRED) public void updateByReId(String newReId,String oldReId){ Map params=new HashMap(); params.put("newReId",newReId); params.put("oldReId",oldReId); this.opeApplyDao.updateByReId(params); } @Override public OpeApplyReserve getOpeApplyDetail(String id) { return opeApplyDao.getOpeApplyDetail(id); } @Override public void updateOpeApplyInfo(ApplyStatus storage, String consigneeId, Timestamp arrivalTime, String applyId) { Map params = new HashMap(); params.put("status", storage); params.put("consigneeId", consigneeId); params.put("arrivalTime", arrivalTime); params.put("applyId", applyId); opeApplyDao.updateOpeApplyInfo(params); } @Override @Transactional public void orderInputWarehouse(List opeApplyList,String consigneeId,Timestamp arrivalTime) { for (OpeApplyReserve opeApplyReserve:opeApplyList) { //0.1获取该申购单的订单 OpeOrder oo = opeOrderService.getOrder(opeApplyReserve.getId()); if (oo == null) { throw new BusinessException(ExceptionEnumCode.ORDER_ERROR,"订单不存在"); } //0.2检查条码->得到试剂条码列表 List codeList = opeReagentStatusService .checkReagentCode(opeApplyReserve.getStartReagentCode2(), opeApplyReserve.getEndReagentCode2(), opeApplyReserve.getArrivalNum()); //1.入库 if (codeList == null){ //无条码入库 不需要增加状态和流向 //1.1库存表增加 opeWarehouseReserveService.insertOpeWarehouseReserve2(opeApplyReserve, oo); }else{ //条码入库 assert codeList.size() > 0; //1.1入库(库存表增加) opeWarehouseReserveService.insertOpeWarehouseReserve2(opeApplyReserve, oo); //1.2试剂状态表增加,流向增加 opeReagentStatusService.orderInputWarehouseReagentStatusAndUseFlow(opeApplyReserve,consigneeId,codeList,oo); } //2.更改申购单所属订单状态(判断子订单是否全部完成) //2.1更改该申购单的状态,收货人和到货时间 this.updateOpeApplyInfo(ApplyStatus.STORAGE,consigneeId,arrivalTime, opeApplyReserve.getId()); //2.2更改订单状态 List oas = opeOrderService.getOpeApplyListByOrder(oo.getId()); assert oas.size() > 0; //子订单是否全部入库,是则父单为已入库,否则未完成 boolean flag = oas.stream().allMatch(oa -> oa.getStatus() == ApplyStatus.STORAGE); oo.setConsigneeUserId(consigneeId); oo.setArrivalTime(arrivalTime); if (flag){ oo.setStatus(ApplyStatus.STORAGE); opeOrderService.updateOpeOrderStatus(oo); }else{ oo.setStatus(ApplyStatus.UNCOMPLETED); opeOrderService.updateOpeOrder(oo); } } } }