package com.huaheng.pc.receipt.receiptContainerDetail.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail; import com.huaheng.pc.receipt.receiptContainerDetail.mapper.ReceiptContainerDetailMapper; import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; @Service public class ReceiptContainerDetailServiceImpl extends ServiceImpl<ReceiptContainerDetailMapper, ReceiptContainerDetail> implements ReceiptContainerDetailService{ @Resource private ReceiptDetailService receiptDetailService; @Resource private ReceiptHeaderService receiptHeaderService; /** * 根据入库单编码查询入库组盘明细 * @param receiptCode 入库单编码 * @return AjaxResult */ @Override public AjaxResult<List<Map<String, Object>>> getReceiptInfoByBill(String receiptCode) { LambdaQueryWrapper<ReceiptContainerDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ReceiptContainerDetail::getReceiptCode, receiptCode) .eq(ReceiptContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()); List<Map<String, Object>> detail = this.listMaps(lambdaQueryWrapper); return AjaxResult.success(detail); } /** * 撤销入库组盘明细 * @param idList * @return */ @Override public Boolean detailRemove(List<Integer> idList) { for (Integer id : idList){ ReceiptContainerDetail receiptContainerDetail = this.getById(id); //如果已生成任务不允许撤销 if (receiptContainerDetail.getStatus() < 10){ //回滚入库单明细收货数量 ReceiptDetail receiptDetail = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()); receiptDetail.setOpenQty(receiptDetail.getOpenQty() - receiptContainerDetail.getQty()); if (!receiptDetailService.updateById(receiptDetail)){throw new SecurityException("回滚入库单明细失败");} //查询入库头表 LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery(); containerDetailLambda.eq(ReceiptContainerDetail::getReceiptId, receiptContainerDetail.getReceiptId()); List<ReceiptContainerDetail> containerDetailList = this.list(containerDetailLambda); //如果入库组盘没有该入库单的组盘信息,回滚入库单状态 if (containerDetailList == null){ ReceiptHeader receiptHeader = new ReceiptHeader(); receiptHeader.setId(receiptContainerDetail.getReceiptId()); receiptHeader.setFirstStatus(200); receiptHeader.setLastStatus(200); receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); if (!receiptHeaderService.updateById(receiptHeader)){ throw new ServiceException("回滚头表状态失败"); } } } else { throw new SecurityException("已生成任务,不允许取消"); } } return true; } }