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<OutboundOrderMapper, OutboundOrder> 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<? extends Serializable> 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<OutboundDetail> detailList = CollectionUtil.newArrayList();
|
outboundOrder.getOutboundDetailList().forEach(item->{
|
item.setOutStorehouseId(order.getId());
|
detailList.add(item);
|
});
|
outboundDetailService.saveBatch(detailList);
|
}
|
|
@Override
|
public IPage<OutboundOrder> queryPageList(Page<OutboundOrder> page, Map<String, String[]> parameterMap) {
|
QueryWrapper<OutboundOrder> 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<OutboundDetail>()
|
.eq(OutboundDetail::getOutStorehouseId, outboundOrder.getId()));
|
OutboundOrder outboundOrderUpdate = BeanUtil.copyProperties(outboundOrder, OutboundOrder.class);
|
outboundOrderMapper.updateById(outboundOrderUpdate);
|
List<OutboundDetail> 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;
|
}
|
}
|