From c5079b2bfef4111a853d2b96272720c149e96231 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 14 Aug 2024 16:02:51 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E8=AE=A2=E5=8D=95=E6=8B=93?= =?UTF-8?q?=E5=B1=95=E5=AE=A1=E6=89=B9=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rderState.java => OmsOrderCheckState.java} | 5 +- .../oms/controller/api/OmsOrderApi.java | 4 ++ .../qs/serve/modules/oms/entity/OmsOrder.java | 2 +- .../oms/service/OmsOrderOptionsService.java | 5 ++ .../modules/oms/service/OmsOrderService.java | 18 +++++ .../impl/OmsOrderOptionsServiceImpl.java | 66 +++++++++++++++++-- .../impl/OmsOrderPart1ServiceImpl.java | 3 +- .../oms/service/impl/OmsOrderServiceImpl.java | 32 +++++++-- 8 files changed, 118 insertions(+), 17 deletions(-) rename src/main/java/com/qs/serve/modules/oms/common/{OmsOrderState.java => OmsOrderCheckState.java} (69%) diff --git a/src/main/java/com/qs/serve/modules/oms/common/OmsOrderState.java b/src/main/java/com/qs/serve/modules/oms/common/OmsOrderCheckState.java similarity index 69% rename from src/main/java/com/qs/serve/modules/oms/common/OmsOrderState.java rename to src/main/java/com/qs/serve/modules/oms/common/OmsOrderCheckState.java index 30edb15b..dbe98d81 100644 --- a/src/main/java/com/qs/serve/modules/oms/common/OmsOrderState.java +++ b/src/main/java/com/qs/serve/modules/oms/common/OmsOrderCheckState.java @@ -9,9 +9,10 @@ import lombok.Getter; */ @Getter @AllArgsConstructor -public enum OmsOrderState { +public enum OmsOrderCheckState { - //状态:1=审批中;2=完成;3-中止;4-回滚;5-作废;6-关闭 + //状态:0草稿,1=审批中;2=完成;3-中止;4-回滚;5-作废;6-关闭 + UnPublish(0), Commiting(1), Finished(2), Stop(3), diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 54f18014..43325fab 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java @@ -25,6 +25,7 @@ import com.qs.serve.modules.goods.service.GoodsCategoryRuleService; import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSpuService; +import com.qs.serve.modules.oms.common.OmsOrderCheckState; import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.bo.*; @@ -363,6 +364,9 @@ public class OmsOrderApi { @SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE) public R deleteById(@PathVariable("id") Long id){ OmsOrder dbOmsOrder = omsOrderService.getById(id); + if(!dbOmsOrder.getOrderCheckState().equals(OmsOrderCheckState.UnPublish.getCode())){ + return R.error("审批状态不支持删除"); + } omsOrderService.checkMsOrderStatus(dbOmsOrder); if(dbOmsOrder.getStatus().equals(0)&&dbOmsOrder.getCheckState().equals(0)){ boolean result = omsOrderService.removeById(id); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java index afee2faa..6536f3ca 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java @@ -70,7 +70,7 @@ public class OmsOrder implements Serializable { @NotNull(message = "供应商收货地址id不能为空") private Long supplierAddrId; - /** 审核状态 */ + /** 审核状态(非OA审批) */ @NotNull(message = "审核状态不能为空") private Integer checkState; diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderOptionsService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderOptionsService.java index 005e2045..c5a7bace 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderOptionsService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderOptionsService.java @@ -15,4 +15,9 @@ public interface OmsOrderOptionsService extends SeeYonOperationService { */ Object submitExpiredOrder(String orderId); + /** + * 定时同步通过审核的订单到ERP + */ + void syncToErp(); + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index 2f2169c6..efdc321c 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java @@ -2,12 +2,15 @@ package com.qs.serve.modules.oms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.common.model.dto.SimpleKeyValue; +import com.qs.serve.modules.bms.entity.BmsRegion; +import com.qs.serve.modules.bms.entity.BmsSupplierAddress; import com.qs.serve.modules.goods.entity.GoodsCategoryRule; import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; +import com.qs.serve.modules.sys.entity.SysUser; import java.util.List; /** @@ -103,5 +106,20 @@ public interface OmsOrderService extends IService { * @param orderItemList */ public void updateCusPrice(String cusCode, List orderItemList); + + /** + * 保存到ERP + * @param omsOrder + * @param orderItemList + * @param brands + * @param supplierAddress + * @param bmsRegion + */ + public void saveToErpOrder(OmsOrder omsOrder, + List orderItemList, + String brands, + BmsSupplierAddress supplierAddress, + BmsRegion bmsRegion); + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java index b894efe9..e282800e 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.oms.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.oa.OaFormMainProcess; import com.qs.serve.common.util.*; @@ -20,9 +21,13 @@ import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper; import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; import com.qs.serve.modules.goods.service.GoodsImminentBatchService; +import com.qs.serve.modules.oms.common.OmsOrderCheckState; import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrderItem; +import com.qs.serve.modules.oms.entity.OmsXltOrder; +import com.qs.serve.modules.oms.entity.OmsXltOrderItem; import com.qs.serve.modules.oms.entity.dto.SeeYonOrderItemDTO; +import com.qs.serve.modules.oms.entity.dto.XltOrderDTO; import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderOptionsService; import com.qs.serve.modules.oms.service.OmsOrderService; @@ -33,7 +38,6 @@ import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tag.mapper.TagInfoMapper; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; -import com.qs.serve.modules.vtb.common.VtbVerificationState; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -46,6 +50,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_ORDER_CREATE; + /** * 订单审批操作类 * @author YenHex @@ -133,6 +139,12 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService { if (supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(omsOrder.getCdOrderRemark())) { Assert.throwEx("请补充CD单号"); } + + //补充:调度系统写报价单给ERP时,要把地址ID写过去 + if (supplierAddress.getTmsSysId() == null) { + Assert.throwEx("地址缺失TmsSysId关联"); + } + String lastRegionId = supplier.getRegionLast(); BmsRegion bmsRegion = bmsRegionMapper.selectById(lastRegionId); if (bmsRegion == null) { @@ -149,7 +161,7 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService { goodsImminentBatchService.updateBatchById(imminentBatches); } - String templateCode = TbsSeeYonConst.ExpiredOrderConf.Code(); + String templateCode = this.getTemplateCode(); //加载大区信息 String saleRegionId = supplier.handleSaleRegionId(); @@ -190,11 +202,37 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService { formId = formIdResult.getData(); } omsOrder.setSyFormId(formId); - omsOrder.setOrderCheckState(VtbVerificationState.Commiting.getCode()); + omsOrder.setOrderCheckState(OmsOrderCheckState.Commiting.getCode()); omsOrderService.updateById(omsOrder); return R.ok(); } + @Override + public void syncToErp() { + AuthContextUtils.setTenant("001"); + List omsOrders = omsOrderService.list(new LambdaQueryWrapper() + //临期品 + .eq(OmsOrder::getOrderType,3) + .in(OmsOrder::getStatus,0,1) + .eq(OmsOrder::getOrderCheckState,OmsOrderCheckState.Finished.getCode()) + ); + for (OmsOrder omsOrder : omsOrders) { + BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId()); + List orderItemList = omsOrderItemService.listByOrderId(omsOrder.getId()); + BmsSupplier supplier = bmsSupplierMapper.selectById(omsOrder.getSupplierId()); + String lastRegionId = supplier.getRegionLast(); + BmsRegion bmsRegion = bmsRegionMapper.selectById(lastRegionId); + List spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList()); + List goodsSpuList = goodsSpuMapper.selectBatchIds(spuIds); + List cateIds = goodsSpuList.stream().map(GoodsSpu::getCategoryLast).collect(Collectors.toList()); + cateIds.add("0"); + List categoryList = goodsCategoryMapper.selectBatchIds(cateIds); + String bs = categoryList.stream().map(GoodsCategory::getName).collect(Collectors.joining(",")); + //写入到ERP中间表 + omsOrderService.saveToErpOrder(omsOrder,orderItemList,bs,supplierAddress,bmsRegion); + } + } + /** * 构建DATA * @param omsOrder @@ -263,27 +301,42 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService { @Override public String getSyFormIdByTargetInfo(TbsAffairCommitBo affairCommit) { - return null; + OmsOrder omsOrder = omsOrderService.getOne(new LambdaQueryWrapper() + .select(OmsOrder::getSyFormId) + .eq(OmsOrder::getId,affairCommit.getTargetId())); + return omsOrder!=null?omsOrder.getSyFormId():null; } @Override public Object doBacked(TbsAffairCommitBo param) { + OmsOrder omsOrder = omsOrderService.getById(param.getTargetId()); + omsOrder.setOrderCheckState(OmsOrderCheckState.Rollback.getCode()); + omsOrderService.updateById(omsOrder); return null; } @Override public Object doFinished(TbsAffairCommitBo param) { + OmsOrder omsOrder = omsOrderService.getById(param.getTargetId()); + omsOrder.setOrderCheckState(OmsOrderCheckState.Finished.getCode()); + omsOrderService.updateById(omsOrder); return null; } @Override public Object doRefuse(TbsAffairCommitBo param) { + OmsOrder omsOrder = omsOrderService.getById(param.getTargetId()); + omsOrder.setOrderCheckState(OmsOrderCheckState.Finished.getCode()); + omsOrderService.updateById(omsOrder); return null; } @Override public boolean checkSyFormIdIsNotNull(String targetId) { - return false; + OmsOrder omsOrder = omsOrderService.getOne(new LambdaQueryWrapper() + .select(OmsOrder::getSyFormId) + .eq(OmsOrder::getId,targetId)); + return omsOrder!=null&&omsOrder.getSyFormId()!=null; } @Override @@ -293,6 +346,7 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService { @Override public String getTemplateCode() { - return null; + return TbsSeeYonConst.ExpiredOrderConf.Code(); } + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java index a4495691..f9c8c135 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java @@ -18,6 +18,7 @@ import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto; import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper; import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; import com.qs.serve.modules.goods.service.*; +import com.qs.serve.modules.oms.common.OmsOrderCheckState; import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam; @@ -99,7 +100,7 @@ public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service { order.setUserName(user.getName()); order.setUserPhone(user.getMobile()); order.setCheckState(0); - + order.setOrderCheckState(OmsOrderCheckState.UnPublish.getCode()); order.setLatitudeFrom(orgOrder.getLatitudeFrom()); order.setOrderSource(orgOrder.getOrderSource()); order.setSupplierId(orgOrder.getSupplierId()); diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index 988d7042..99668c6c 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -20,6 +20,7 @@ import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper; import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; import com.qs.serve.modules.goods.service.*; +import com.qs.serve.modules.oms.common.OmsOrderCheckState; import com.qs.serve.modules.oms.entity.*; import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount; @@ -29,6 +30,7 @@ import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.mapper.OmsOrderMapper; import com.qs.serve.modules.oms.service.OmsOrderItemService; +import com.qs.serve.modules.oms.service.OmsOrderOptionsService; import com.qs.serve.modules.oms.service.OmsOrderService; import com.qs.serve.modules.oms.service.OmsShoppingCartService; import com.qs.serve.modules.oms.utils.OmsOrderUtil; @@ -735,7 +737,6 @@ public class OmsOrderServiceImpl extends ServiceImpl i GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId()); BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId()); BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getAddressId()); - ; OmsOrder order; if (param.getId() != null) { @@ -743,6 +744,10 @@ public class OmsOrderServiceImpl extends ServiceImpl i if (!order.getOrderType().equals(3)) { Assert.throwEx("订单类型不支持混用"); } + if(!order.getOrderCheckState().equals(OmsOrderCheckState.UnPublish.getCode()) + &&!order.getOrderCheckState().equals(OmsOrderCheckState.Rollback.getCode())){ + Assert.throwEx("OA审批状态拦截"); + } } else { order = new OmsOrder(); order.setOrderSn("SP" + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); @@ -840,7 +845,8 @@ public class OmsOrderServiceImpl extends ServiceImpl i if (supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(param.getCdOrderRemark())) { Assert.throwEx("请补充CD单号"); } - this.buildPriceOrder(order.getId() + "", null); + OmsOrderOptionsService optionsService = SpringUtils.getBean(OmsOrderOptionsService.class); + optionsService.submitExpiredOrder(order.getId()+""); } return order; } @@ -946,6 +952,23 @@ public class OmsOrderServiceImpl extends ServiceImpl i //更新最新的用户特殊价格 this.updateCusPrice(omsOrder.getSupplierCode(), orderItemList); + //补充:调度系统写报价单给ERP时,要把地址ID写过去 + if (supplierAddress.getTmsSysId() == null) { + Assert.throwEx("地址缺失TmsSysId关联"); + } + + //保存到ERP中间表 + this.saveToErpOrder(omsOrder, orderItemList, brands, supplierAddress, bmsRegion); + + } + + @Override + public void saveToErpOrder(OmsOrder omsOrder, + List orderItemList, + String brands, + BmsSupplierAddress supplierAddress, + BmsRegion bmsRegion) { + SysUser sysUser = sysUserService.getById(omsOrder.getCreateBy()); //保存到临时表-主表 LocalDateTime nowTime = LocalDateTime.now(); OmsXltOrder xltOrder = new OmsXltOrder(); @@ -973,10 +996,6 @@ public class OmsOrderServiceImpl extends ServiceImpl i //状态:0未使用;1报价单;2销售订单 xltOrder.setStatus(0); - //补充:调度系统写报价单给ERP时,要把地址ID写过去 - if (supplierAddress.getTmsSysId() == null) { - Assert.throwEx("地址缺失TmsSysId关联"); - } xltOrder.setTmsSysId(supplierAddress.getId() + ""); xltOrder.setEmpName(omsOrder.getUserName()); xltOrder.setCusCode(omsOrder.getSupplierCode()); @@ -1033,7 +1052,6 @@ public class OmsOrderServiceImpl extends ServiceImpl i omsOrder.setCheckTime(LocalDateTime.now()); omsOrder.setCheckUserId(AuthContextUtils.getSysUserId()); this.updateById(omsOrder); - } @Override