|
@@ -13,8 +13,6 @@ import org.dromara.common.mybatis.utils.IdGeneratorUtil;
|
|
|
import org.dromara.erp.domain.ErpOrder;
|
|
import org.dromara.erp.domain.ErpOrder;
|
|
|
import org.dromara.erp.domain.query.ErpOrderQuery;
|
|
import org.dromara.erp.domain.query.ErpOrderQuery;
|
|
|
import org.dromara.erp.domain.vo.ErpOrderVo;
|
|
import org.dromara.erp.domain.vo.ErpOrderVo;
|
|
|
-import org.dromara.erp.enums.ErpAuditResult;
|
|
|
|
|
-import org.dromara.erp.enums.ErpOrderStatus;
|
|
|
|
|
import org.dromara.erp.mapper.ErpOrderMapper;
|
|
import org.dromara.erp.mapper.ErpOrderMapper;
|
|
|
import org.dromara.erp.service.IErpOrderService;
|
|
import org.dromara.erp.service.IErpOrderService;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -36,13 +34,11 @@ public class ErpOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
|
|
private final ErpOrderMapper baseMapper;
|
|
private final ErpOrderMapper baseMapper;
|
|
|
private final org.dromara.erp.mapper.ErpOrderDetailMapper erpOrderDetailMapper;
|
|
private final org.dromara.erp.mapper.ErpOrderDetailMapper erpOrderDetailMapper;
|
|
|
- private final org.dromara.erp.mapper.ErpOrderAuditMapper erpOrderAuditMapper;
|
|
|
|
|
private final org.dromara.erp.mapper.ErpSaleOrderMasterMapper erpSaleOrderMasterMapper;
|
|
private final org.dromara.erp.mapper.ErpSaleOrderMasterMapper erpSaleOrderMasterMapper;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public TableDataInfo<ErpOrderVo> queryPageList(ErpOrderQuery query, PageQuery pageQuery) {
|
|
public TableDataInfo<ErpOrderVo> queryPageList(ErpOrderQuery query, PageQuery pageQuery) {
|
|
|
- LambdaQueryWrapper<ErpOrder> lqw = buildQueryWrapper(query);
|
|
|
|
|
- com.baomidou.mybatisplus.extension.plugins.pagination.Page<ErpOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
|
|
|
|
+ com.baomidou.mybatisplus.extension.plugins.pagination.Page<ErpOrderVo> result = baseMapper.selectOrderVoPage(pageQuery.build(), query);
|
|
|
|
|
|
|
|
List<ErpOrderVo> list = result.getRecords();
|
|
List<ErpOrderVo> list = result.getRecords();
|
|
|
if (ObjectUtil.isNotEmpty(list)) {
|
|
if (ObjectUtil.isNotEmpty(list)) {
|
|
@@ -53,8 +49,7 @@ public class ErpOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public List<ErpOrderVo> queryList(ErpOrderQuery query) {
|
|
public List<ErpOrderVo> queryList(ErpOrderQuery query) {
|
|
|
- LambdaQueryWrapper<ErpOrder> lqw = buildQueryWrapper(query);
|
|
|
|
|
- List<ErpOrderVo> list = baseMapper.selectVoList(lqw);
|
|
|
|
|
|
|
+ List<ErpOrderVo> list = baseMapper.selectOrderVoList(query);
|
|
|
if (ObjectUtil.isNotEmpty(list)) {
|
|
if (ObjectUtil.isNotEmpty(list)) {
|
|
|
fillOrderDetails(list);
|
|
fillOrderDetails(list);
|
|
|
}
|
|
}
|
|
@@ -65,7 +60,8 @@ public class ErpOrderServiceImpl implements IErpOrderService {
|
|
|
LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
|
|
LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
|
|
|
lqw.eq(ObjectUtil.isNotEmpty(query.getCode()), ErpOrder::getCode, query.getCode());
|
|
lqw.eq(ObjectUtil.isNotEmpty(query.getCode()), ErpOrder::getCode, query.getCode());
|
|
|
lqw.eq(ObjectUtil.isNotEmpty(query.getPlacer()), ErpOrder::getPlacer, query.getPlacer());
|
|
lqw.eq(ObjectUtil.isNotEmpty(query.getPlacer()), ErpOrder::getPlacer, query.getPlacer());
|
|
|
- lqw.eq(ObjectUtil.isNotEmpty(query.getStatus()), ErpOrder::getStatus, query.getStatus());
|
|
|
|
|
|
|
+ lqw.eq(ObjectUtil.isNotEmpty(query.getIsConfirmed()), ErpOrder::getIsConfirmed, query.getIsConfirmed());
|
|
|
|
|
+ lqw.eq(ObjectUtil.isNotEmpty(query.getDocCode()), ErpOrder::getDocCode, query.getDocCode());
|
|
|
lqw.orderByDesc(ErpOrder::getCreateTime);
|
|
lqw.orderByDesc(ErpOrder::getCreateTime);
|
|
|
return lqw;
|
|
return lqw;
|
|
|
}
|
|
}
|
|
@@ -87,7 +83,7 @@ public class ErpOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public ErpOrderVo queryById(String rowId) {
|
|
public ErpOrderVo queryById(String rowId) {
|
|
|
- ErpOrderVo vo = baseMapper.selectVoById(rowId);
|
|
|
|
|
|
|
+ ErpOrderVo vo = baseMapper.selectOrderVoById(rowId);
|
|
|
if (vo != null) {
|
|
if (vo != null) {
|
|
|
LambdaQueryWrapper<org.dromara.erp.domain.ErpOrderDetail> detailLqw = Wrappers.lambdaQuery();
|
|
LambdaQueryWrapper<org.dromara.erp.domain.ErpOrderDetail> detailLqw = Wrappers.lambdaQuery();
|
|
|
detailLqw.eq(org.dromara.erp.domain.ErpOrderDetail::getOrderId, rowId);
|
|
detailLqw.eq(org.dromara.erp.domain.ErpOrderDetail::getOrderId, rowId);
|
|
@@ -101,12 +97,11 @@ public class ErpOrderServiceImpl implements IErpOrderService {
|
|
|
@Override
|
|
@Override
|
|
|
public Map<Integer, Long> countByStatus() {
|
|
public Map<Integer, Long> countByStatus() {
|
|
|
LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
|
|
LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
|
|
|
- lqw.select(ErpOrder::getStatus);
|
|
|
|
|
- lqw.ne(ErpOrder::getStatus, ErpOrderStatus.CANCELLED.getCode());
|
|
|
|
|
- lqw.ne(ErpOrder::getStatus, ErpOrderStatus.REJECTED.getCode());
|
|
|
|
|
|
|
+ lqw.select(ErpOrder::getIsConfirmed);
|
|
|
List<ErpOrder> list = baseMapper.selectList(lqw);
|
|
List<ErpOrder> list = baseMapper.selectList(lqw);
|
|
|
return list.stream()
|
|
return list.stream()
|
|
|
- .collect(Collectors.groupingBy(ErpOrder::getStatus, Collectors.counting()));
|
|
|
|
|
|
|
+ .filter(o -> o.getIsConfirmed() != null)
|
|
|
|
|
+ .collect(Collectors.groupingBy(ErpOrder::getIsConfirmed, Collectors.counting()));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -141,8 +136,8 @@ public class ErpOrderServiceImpl implements IErpOrderService {
|
|
|
if (entity.getPlaceTime() == null) {
|
|
if (entity.getPlaceTime() == null) {
|
|
|
entity.setPlaceTime(new Date());
|
|
entity.setPlaceTime(new Date());
|
|
|
}
|
|
}
|
|
|
- if (entity.getStatus() == null) {
|
|
|
|
|
- entity.setStatus(ErpOrderStatus.WAIT_AUDIT.getCode());
|
|
|
|
|
|
|
+ if (entity.getIsConfirmed() == null) {
|
|
|
|
|
+ entity.setIsConfirmed(0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
boolean result = baseMapper.insert(entity) > 0;
|
|
boolean result = baseMapper.insert(entity) > 0;
|
|
@@ -157,57 +152,27 @@ public class ErpOrderServiceImpl implements IErpOrderService {
|
|
|
return result ? entity.getRowId() : null;
|
|
return result ? entity.getRowId() : null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @Override
|
|
|
|
|
- @com.baomidou.dynamic.datasource.annotation.DSTransactional
|
|
|
|
|
- public Boolean auditOrder(org.dromara.erp.domain.ErpOrderAudit audit) {
|
|
|
|
|
- // 1. 修改订单状态
|
|
|
|
|
- ErpOrder order = baseMapper.selectById(audit.getOrderId());
|
|
|
|
|
- if (order == null) {
|
|
|
|
|
- throw new org.dromara.common.core.exception.ServiceException("订单不存在");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 根据审核结果设置订单状态
|
|
|
|
|
- if (ErpAuditResult.PASS.getCode().equals(audit.getAuditResult())) { // 通过 → 待签批
|
|
|
|
|
- order.setStatus(ErpOrderStatus.WAIT_SIGN.getCode());
|
|
|
|
|
- } else if (ErpAuditResult.REJECT.getCode().equals(audit.getAuditResult())) { // 驳回 → 已驳回
|
|
|
|
|
- order.setStatus(ErpOrderStatus.REJECTED.getCode());
|
|
|
|
|
- }
|
|
|
|
|
- baseMapper.updateById(order);
|
|
|
|
|
-
|
|
|
|
|
- // 2. 记录审核历史
|
|
|
|
|
- if (audit.getRowId() == null) {
|
|
|
|
|
- audit.setRowId(IdUtil.fastUUID());
|
|
|
|
|
- }
|
|
|
|
|
- if (audit.getAuditor() == null) {
|
|
|
|
|
- audit.setAuditor(org.dromara.common.satoken.utils.LoginHelper.getUserId());
|
|
|
|
|
- }
|
|
|
|
|
- if (audit.getAuditTime() == null) {
|
|
|
|
|
- audit.setAuditTime(new Date());
|
|
|
|
|
- }
|
|
|
|
|
- return erpOrderAuditMapper.insert(audit) > 0;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public Boolean cancelOrder(String rowId) {
|
|
public Boolean cancelOrder(String rowId) {
|
|
|
ErpOrder order = baseMapper.selectById(rowId);
|
|
ErpOrder order = baseMapper.selectById(rowId);
|
|
|
if (order == null) {
|
|
if (order == null) {
|
|
|
throw new org.dromara.common.core.exception.ServiceException("订单不存在");
|
|
throw new org.dromara.common.core.exception.ServiceException("订单不存在");
|
|
|
}
|
|
}
|
|
|
- if (!ErpOrderStatus.WAIT_AUDIT.getCode().equals(order.getStatus())) {
|
|
|
|
|
- throw new org.dromara.common.core.exception.ServiceException("仅待审核状态的订单可以撤销");
|
|
|
|
|
|
|
+ if (Integer.valueOf(1).equals(order.getIsConfirmed())) {
|
|
|
|
|
+ throw new org.dromara.common.core.exception.ServiceException("已确认的订单不可以撤销");
|
|
|
}
|
|
}
|
|
|
- order.setStatus(ErpOrderStatus.CANCELLED.getCode());
|
|
|
|
|
|
|
+ order.setIsConfirmed(0);
|
|
|
return baseMapper.updateById(order) > 0;
|
|
return baseMapper.updateById(order) > 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void syncErpOrderStatus() {
|
|
public void syncErpOrderStatus() {
|
|
|
log.info("[ERP状态同步] 开始同步...");
|
|
log.info("[ERP状态同步] 开始同步...");
|
|
|
- // 查询 erpDocCode 不为空且未完成的订单
|
|
|
|
|
|
|
+ // 查询 erpDocCode 不为空且未确认的订单
|
|
|
LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
|
|
LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
|
|
|
- lqw.isNotNull(ErpOrder::getErpDocCode)
|
|
|
|
|
- .ne(ErpOrder::getErpDocCode, "")
|
|
|
|
|
- .ne(ErpOrder::getStatus, ErpOrderStatus.FINISHED.getCode());
|
|
|
|
|
|
|
+ lqw.isNotNull(ErpOrder::getDocCode)
|
|
|
|
|
+ .ne(ErpOrder::getDocCode, "")
|
|
|
|
|
+ .eq(ErpOrder::getIsConfirmed, 0);
|
|
|
List<ErpOrder> orders = baseMapper.selectList(lqw);
|
|
List<ErpOrder> orders = baseMapper.selectList(lqw);
|
|
|
|
|
|
|
|
if (orders.isEmpty()) {
|
|
if (orders.isEmpty()) {
|
|
@@ -224,28 +189,23 @@ public class ErpOrderServiceImpl implements IErpOrderService {
|
|
|
org.dromara.erp.domain.ErpSaleOrderMaster master = erpSaleOrderMasterMapper.selectOne(masterLqw);
|
|
org.dromara.erp.domain.ErpSaleOrderMaster master = erpSaleOrderMasterMapper.selectOne(masterLqw);
|
|
|
|
|
|
|
|
if (master == null) {
|
|
if (master == null) {
|
|
|
- log.warn("[ERP状态同步] 未找到 ERP 单据: {}", order.getErpDocCode());
|
|
|
|
|
|
|
+ log.warn("[ERP状态同步] 未找到 ERP 单据: {}", order.getDocCode());
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Integer newStatus = null;
|
|
|
|
|
- if (Integer.valueOf(1).equals(master.getFinished())) {
|
|
|
|
|
- // 已完成
|
|
|
|
|
- newStatus = ErpOrderStatus.FINISHED.getCode();
|
|
|
|
|
- } else if (Integer.valueOf(1).equals(master.getReviewed())) {
|
|
|
|
|
- // 已签批
|
|
|
|
|
- newStatus = ErpOrderStatus.PRODUCING.getCode();
|
|
|
|
|
- } else if (Integer.valueOf(1).equals(master.getApproved())) {
|
|
|
|
|
- // 已审核
|
|
|
|
|
- newStatus = ErpOrderStatus.WAIT_SIGN.getCode();
|
|
|
|
|
|
|
+ boolean shouldConfirm = false;
|
|
|
|
|
+ if (Integer.valueOf(1).equals(master.getFinished()) ||
|
|
|
|
|
+ Integer.valueOf(1).equals(master.getReviewed()) ||
|
|
|
|
|
+ Integer.valueOf(1).equals(master.getApproved())) {
|
|
|
|
|
+ shouldConfirm = true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (newStatus != null && !newStatus.equals(order.getStatus())) {
|
|
|
|
|
- order.setStatus(newStatus);
|
|
|
|
|
|
|
+ if (shouldConfirm) {
|
|
|
|
|
+ order.setIsConfirmed(1);
|
|
|
baseMapper.updateById(order);
|
|
baseMapper.updateById(order);
|
|
|
updatedCount++;
|
|
updatedCount++;
|
|
|
- log.info("[ERP状态同步] 订单 {} (ERP:{}) 状态更新为: {}",
|
|
|
|
|
- order.getCode(), order.getErpDocCode(), newStatus);
|
|
|
|
|
|
|
+ log.info("[ERP状态同步] 订单 {} (ERP:{}) 状态更新为已确认",
|
|
|
|
|
+ order.getCode(), order.getDocCode());
|
|
|
}
|
|
}
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("[ERP状态同步] 处理订单 {} 异常: {}", order.getCode(), e.getMessage(), e);
|
|
log.error("[ERP状态同步] 处理订单 {} 异常: {}", order.getCode(), e.getMessage(), e);
|