package org.jeecg.modules.tms.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecg.modules.tms.entity.OutboundOrder; import org.jeecg.modules.tms.entity.OutboundDetail; import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto; import org.jeecg.modules.tms.enums.OutBillStatus; import org.jeecg.modules.tms.mapper.OutboundDetailMapper; import org.jeecg.modules.tms.mapper.OutboundOrderMapper; import org.jeecg.modules.tms.service.IOutboundDetailService; import org.jeecg.modules.tms.service.IOutboundOrderService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; import java.util.List; import java.util.Collection; import java.util.Map; import java.util.Objects; /** * @Description: tms_outbound_order * @Author: jeecg-boot * @Date: 2025-05-16 * @Version: V1.0 */ @Service public class OutboundOrderServiceImpl extends ServiceImpl implements IOutboundOrderService { @Autowired private IOutboundDetailService outboundDetailService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; @Autowired private OutboundOrderMapper outboundOrderMapper; @Autowired private OutboundDetailMapper outboundDetailMapper; @Override @Transactional(rollbackFor = Exception.class) public void delMain(String id) { outboundDetailMapper.deleteByMainId(id); outboundOrderMapper.deleteById(id); } @Override @Transactional(rollbackFor = Exception.class) public void delBatchMain(Collection idList) { for(Serializable id:idList) { outboundDetailMapper.deleteByMainId(id.toString()); outboundOrderMapper.deleteById(id); } } @Override @Transactional(rollbackFor = Exception.class) public void addTotal(OutboundOrderAndDetailDto outboundOrder) { OutboundOrder order = BeanUtil.copyProperties(outboundOrder, OutboundOrder.class); order.setHandler(Objects.requireNonNull(getCurrentUser()).getId()); order.setOutNum(businessCodeRuleService.generateBusinessCodeSeq("outBoundOrder")); order.setOrderStatus(OutBillStatus.DRAFT.getValue()); save(order); List detailList = CollectionUtil.newArrayList(); outboundOrder.getOutboundDetailList().forEach(item->{ item.setOutStorehouseId(order.getId()); detailList.add(item); }); outboundDetailService.saveBatch(detailList); } @Override public IPage queryPageList(Page page, Map parameterMap) { QueryWrapper queryWrapper = Wrappers.query(); String[] outNums = parameterMap.get("outNum"); if (outNums != null && outNums.length > 0) { queryWrapper.like("t.out_num", outNums[0]); } String[] outStorehouseTypes = parameterMap.get("outStorehouseType"); if (outStorehouseTypes != null && outStorehouseTypes.length > 0) { queryWrapper.eq("t.out_storehouse_type", outStorehouseTypes[0]); } String[] statuses = parameterMap.get("orderStatus"); if (statuses != null && statuses.length > 0) { queryWrapper.eq("t.order_status", statuses[0]); } String[] startTimes = parameterMap.get("startTime"); if (startTimes != null && startTimes.length > 0) { queryWrapper.ge("t.create_time", startTimes[0]); } String[] endTimes = parameterMap.get("endTime"); if (endTimes != null && endTimes.length > 0) { queryWrapper.le("t.create_time", endTimes[0]); } queryWrapper.orderByDesc("t.create_time"); return this.baseMapper.queryPageList(page, queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public void editTotal(OutboundOrderAndDetailDto outboundOrder) { //删除所有明细 outboundDetailService.remove(new LambdaQueryWrapper() .eq(OutboundDetail::getOutStorehouseId, outboundOrder.getId())); OutboundOrder outboundOrderUpdate = BeanUtil.copyProperties(outboundOrder, OutboundOrder.class); outboundOrderMapper.updateById(outboundOrderUpdate); List detailList = CollectionUtil.newArrayList(); outboundOrder.getOutboundDetailList().forEach(item->{ item.setOutStorehouseId(outboundOrderUpdate.getId()); detailList.add(item); }); outboundDetailService.saveBatch(detailList); } private LoginUser getCurrentUser() { // 获取当前认证的登录用户信息 Subject currentUser = SecurityUtils.getSubject(); if (currentUser != null && currentUser.isAuthenticated()) { Object principal = currentUser.getPrincipal(); if (principal instanceof LoginUser) { return (LoginUser) principal; } } return null; } }